LowRezJam 2016 ran for the last two weeks (with this week being the voting period), and I had the urge to participate with a very old idea!
The Summit is an action game, with some elements borrowed from survival games and RPGs. The game takes place at the summit of a mountain, where a horrible battle took place. Your company is dead, but your target is nowhere to be found. It’s up to you, the sole survivor, to brave the dangers of the summit to find her, while surviving the ferocious animals, crippling cold and natural hunger.
You can play it directly in your browser or download it over at itch.io!
Hope you enjoy playing it as much as I did working on it!
This month we participated in #LOWREZJAM 2016, a game jam where, instead of a incorporating a given theme, each game had to use a 64x64 pixel display. We were still pretty focused on finishing up Party, Darling? when it started, so to make the most of our time, we came up with a bunch of little mini-games and worked on them in groups of 2-3 here and there throughout the jam. All in all we put together five entries – check them out below!
A little pot of paradise.
The first of the bunch is SODZEN – This was sort of a spur-of-the-moment thing inspired by some match-moving work Michael was doing as part of another project.
The creative process at work.
Prototype for UV animation grass-growing.
The principle behind the grass growing is pretty simple: the UVs on each blade of grass are all different heights, with the largest one taking up only half of the potential texture space. By sliding these UVs up and down on a texture which is half green and half transparent, we get blades "growing" at different rates.
First view of grass growing in-game.
The other aspects of SODZEN were all pretty straightforward:
64x64 display: the whole scene is rendered to a 64x64 texture which is then upscaled to match the window size using nearest-neighbour interpolation to keep the hard pixels.
Grass decay: the grass texture's hue is offset using a shader. The offset increases over time to a maximum, and when you water, it goes back to zero.
Watering: the watering mechanic is just a boolean attached to the orbital controls – if you're above a certain height, you're watering.
It's a fairly shallow experience, but it did turn out pretty zen!
pose 4 peeps
Next, up we've got Stone Cold Sexy – The concept for this one wasn't nearly as straightforward, but basically, Cat wanted to make a cute animal game, and somehow the animal we decided on was "gargoyle".
Fun fact: one of our classmates informed us during the development of this game that technically a gargoyle which doesn't have a waterspout is just a "grotesque". Gargoyles are actually masonry rain-gutters!
Cat's concept art for Stone Cold Sexy.
Instead of doing another 3D entry, we wanted something that would force us to focus on pixel art for this one. The game idea we ran with was that the player is a cute little gargoyle sitting up on a wall, but as tourists walk by and take photos, the gargoyle has to try to pose for them.
It's a popular view, I guess.
Cat got the assets for the wall and the peeps done pretty quick, so they were the first thing to go in. It took us a little while to find a good rate for them to spawn, but this was definitely way too many.
The first pose was a bit more scary than sexy, but whatever!
Of course, you need a gargoyle to make a gargoyle game, so as soon as Cat got the first character sprites done we put them into the game and implemented a basic version of the transformation mechanic (she also started touching up the background to better match the character in the meantime).
Gotta get those +UPs
Now that we had both of the main components, we could put together the actual game! As the player poses, their bar goes down, and it gets replenished a bit for each photograph taken while posing. No one really knows what +UP was supposed to mean, but it was kinda funny so we left it in!
The timing felt a little bit too random at first, so we made sure to give the peeps a "tell" right before they take a photo. At this point we also added some extra punch to the transformations and camera flashes using some screen-space shader effects. Turns out you can do a lot in 64x64 pixels!
High-res shot mid-transformation.
One thing that we quite a lot of problems with was the text rendering – even the UI had to follow the 64x64 requirement for the jam. Not only did we have to fix a bug with our font loading which was preventing text from being resized properly (we never noticed it before, but at this resolution it was super obvious), but we also couldn't quite figure out how to position the characters properly. Our text layout system relies on data we get from the font file through FreeType, but we had no idea how to make sure we didn't get sub-pixel coordinates. We did manage to make sure it didn't render the sub-pixels to keep within the rules of the jam, but the positioning errors are still visible in the final release: text occasionally blurs or stretches into surrounding pixels. Luckily, it's still legible!
Narrowing our list of puns down to a top five was actually pretty tough.
When the player's bar runs out, they're assigned a rating based on their score to wrap things up. We gave each rating a different title, ranging from "Pesky Grotesky" to the titular "Stone Cold Sexy". To avoid the text rendering issues here, we just drew the text directly into texture files (there are only five, so it didn't take too long).
A bunch of the rejected rock puns made it in here.
There wasn't much left to do at this point except add some polish and call it done! Cat and Ian added more variety to the gargoyle sprites, giving us a total of three poses. We also added some bounce to each peep's step, threw in some more positive reinforcement every time the player posed successfully, and added some SFXR sound effects.
Who wouldn't want to photograph that face?
A good duel game
Good Duel Game – This game was made almost entirely by Ryan, who could not be reached for comment. It's a good duel game, I guess.
You're going to have to keep this up forever.
In addition to helping out with the artwork in Stone Cold Sexy, Ian also designed another of our entries – Drive Forever.
Initial mockup and 3D prototype
Ian drew an initial mockup as static pixel art, then we cut out the dashboard elements into separate sprites to be used as the UI and planned to do the rest in 3D. To see if the visuals would hold up, we threw together a quick prototype with a basic camera controller as quick as we could, and were pretty happy with the results.
100% fake driving
After having roughed out the visuals with the prototype, we completely scrapped the camera-based controls in favour of a simpler system: instead of moving the camera, randomly generated trees move towards the camera on an infinitely-looping conveyor belt system. The player can still move left and right, but only along a small, predefined line at the end of the conveyor belt. This helped to simplify the actual game code, while also letting us get away with some visual tricks – e.g. trees further away from the camera are placed closer together to add density to the forest without interfering with the player's view.
On a side note, it's kind of interesting how, in a game about driving forever but never getting anywhere, the player entity literally isn't going anywhere.
In keeping with the fake driving, the road is just an animated texture on a static mesh.
Once we had the navigation figured out, we started adding the details which really brought the game together. The player can't just mindlessly drive forward, they need to avoid the barriers and other cars on the road or they'll find their endless trip cut short (and by "cars" we of course mean a single car which similarly just loops around). Avoiding the obstacles isn't too difficult, but the player's also haunted by their self-doubt, presented as bright red ticker-text in the center of their screen which often blocks their view of the road.
You may notice that Drive Forever suffers from some of the same text rendering issues as Stone Cold Sexy, but we did manage to get it working a little bit more consistently than before.
You'd be forgiven for thinking that the cars and trees in the game are simply sprites, but we wanted to make sure that the outlines rendered nice and crisp at any distance. We've never added support for any standard vector formats to our engine, so we faked them by modelling flat, low-poly meshes and colouring individual faces.
We faked a lot of things in this one.
It probably made virtually no difference on players' perceptions of the game due to the low resolution, but hey, now you know it's there!
Well, someone's being pushy today.
The toughest part of getting Drive Forever finished was actually just putting in all of the content for the text messages. It turns out that writing a bunch of depressing internal monologue can be kind of depressing! At least we nailed the feel we were going for.
Scoop Me Up!
Our last (and probably our most elaborate) entry was ★ Creamie Buddies ★ – another one of Cat's ideas, this started out as a boyfriend generator, which then turned into an ice cream dating sim, which ended up just being an ice cream generator. It's pretty cute though!
Cat's concept art for Creamie Buddies.
This one is more of a toy than it is a game, since there aren't any goals or anything. You just spin the slots, and then see how the different cones, scoops, and toppings look together.
scoopin'
We managed to get a basic version up and running pretty quick. When you spin the slot machine, it picks three numbers between 1 and 12, and then we animate the individual slots to match. There was still a lot of placeholder artwork at this point, but the code was pretty much done.
I'll have one with everything.
To simplify the selection and placement of the different pieces, we only used three mesh files – one of the cones, one for the scoops, and one for the toppings. Each file contains all 12 meshes of the given type, and we just grab the randomly selected one from the list. It's kind of a mess to look at all together, but it actually helped keep things pretty organized.
CAPTION
Since Creamie Buddies was tailor-made for generating cute little scenes, we figured it only made sense to implement a screenshot mechanic right into the game. This was a bit trickier than we initially thought, because we weren't sure how to indicate to the player that their screenshots were actually being saved in the game's data folder. To solve the issue, the first time a screenshot is taken, the folder containing the images is opened in a file browser. It's not the cleanest solution and it's a little intrusive, but hopefully it gets the point across! It would've been cool to hook it up with Twitter or something, but that was a bit out of scope for the jam.
It's kind of weird when you can put the entire game into a single gif.
We weren't sure if Cat was going to have time to create all 36 pieces, but Michael chipped in and we got them all done! We also took some time to add unique icons for each piece, polished the UI a bit, and added a nice little flair to the presentation at the end. We considered adding a name to each piece, but decided against it because of the limited space and our previous struggles with low-res text.
In total there are 1728 adorable creamie buddies to generate!
It turns out there were a lot of little connections between our different entries, some of them unintentional. The orbital controls from SODZEN were copied directly into Creamie Buddies, both Stone Cold Sexy and Creamie Buddies feature flash photography as a core mechanic, and both SODZEN and Drive Forever task the player with a Sisyphean goal – though they certainly portray it in a different light!
We really dug the idea behind the jam, and it was a great way to pump out a few little titles with some cool visuals! Lots of other developers put together some really great entries, so make sure to check some of them out too!
I’ve completed my proof-of-concept for seeing what kind of resolution I will make the game in – and it looks like I’ll be able to do it with 64x64 pixels, so I’ll hopefully be able to enter into the low-rez game jam as well as Ludum Dare. So far i’m on target with my timing for the day.
One sad note: My newly-purchased Pickle 2 is being terrible, and I wasn’t even able to save my PoC artwork as a pickle file or an image with proper resolution. Luckily I was able to grab this screenshot while the program was dying. Not sure what I’m going to do for an art program if Pickle is being this unreliable. :(