Kiefer Co:
@kieferandco
KieferAndCo
ChairmanCo

My Favourite Humans

Ludum Dare 2022: A Full Night's Sleep

First Written    Thu Jan 19 03:15:46 2023
File Modified    Wed Feb 14 18:32:26 2024
Latest Upload    Thu Sep 19 03:09:54 2024

In early 2022, my friends and I decided to try making a game for Ludum Dare, one of the most famous and longest-running game jams that has been churning out great games since the era of Flash games.

In the past few months, I'd been learning about and experimenting with Godot and we ended up using it for our project.

On the Friday before the theme dropped, we gathered at my friend Chris' place to wait for the theme to drop and our planning to begin!

Our initial whiteboard for Ludum Dare 50: Sleep

April 2022's theme ended up being "Delay the Inevitable", and we brainstormed through some ideas both for theme, game mechanics, and general sort of game we wanted to make.

Some things were decided quickly, like a rogue-like being simpler, as it meant less to keep track of with no save states, and having a large map that we could all create new items, enemies, and areas for would help our many busy hands from impeding one another.

After all, there were seven of us: Emanuel, Matthew, David, Chris, Chiragkumar, Clarke, and myself!

And a small shoutout to Gareth for being the first one to test our game!

Deciding on an interesting theme was another issue. We thought of some indie game clichés, like a game based on mental health or a bleak survival shooter, but being a year or so out of the worst parts of the soul-crushing pandemic lockdowns meant we wanted something less dark. For similar reasons, any sort of game with a very meta idea, like one about life as a developer at work, was shot down as we'd had enough of our share of work-life balance leaks already.

In the end, we decided on what I think was a more novel idea than our other ones: delaying the inevitable waking while you're asleep in dreamland!

Ultimately, we didn't make it very far. We weren't able to have anything cohesive enough to call a finished game at the end of the weekend, nor by the deadline for the extended format. But we ended up having a blast and learning a lot about what worked and what didn't work for a game jam like this!

What Didn't Work

A big problem with our game jam project what we didn't tailor our project to our skill sets. While all of us were computer scientists, only two of us had really played around with Godot prior to the project.

I personally made some bad assumptions about what we'd be able to achieve. I thought I'd be able to crush through some of the more complex parts of Godot and get us to a state where we'd have a good core and everyone could add pieces by extending common classes for enemies, items, etc.

Of course, having one person spend a few hours creating an extensible architecture and bottlenecking the whole process when you've only got a little over two days to work isn't the smartest move!

Instead, I ended up only partially implementing that idea and spent a lot of my time during the first day hopping in and out of breakout rooms on our discord server and explaining some Godot tips (which in hindsight, was the right move, as otherwise it wouldn't have been a very fun experience with most of us sitting lost with a new game engine)!

Another mistake I made was relying on prior knowledge getting us a head start. I had previously done jmbiv's Godot top-down shooter tutorial as my intro into learning Godot, and had posted it in our game jam channel.

What I should have realized was that expecting people to dive into a 20+ part YouTube series as prep for a game jam was a little unrealistic. And worse, I thought we could use the existing example shooter as a base to expand on, but having all of that existing code already there made the whole experience more daunting than it should have been.

Here's what our project looked like in its earlier stages, with assets slowly being converted to our own:

I don't blame anyone for not being too enthused about sitting through a bunch of links and tutorials for Godot. It's just not engaging, and that's another thing I think we could improve upon in the future. Day one at Chris' house was very fun, with tonnes of participation. As the weekend dragged on, and we switched to working over discord, it got harder to stay on task and feel engaged. I can only assume that two days straight of sitting at one's desk isn't as appealing as pulling all-nighters in person with your buddies!

What Worked

What did work was all the things that did align with our skill sets. As a group of seven developers, we had our share of expertise with managing projects, having productive meetings, documenting our decisions, and even setting up and tracking actionable tickets on a GitHub kanban board!

Our game jam kanban board.

We even had a wiki!

Our game jam wiki.

Our brainstorming session went by very smoothly, and we had real goals and tasks from the get-go. We knew how to track our work to make sure nothing was duplicated, and how to navigate source control and make sure we were never clobbering each other's toes.

In the end, I think we had most of the functioning pieces for a solid game dev experience, other than the small but impactful hitch that we just didn't know enough Godot!

Of course, now with one unfinished game jam under our belts, who knows what we can accomplish next time?

Art and Music

Speaking of functioning pieces, I think the assets we had for art and music were more than functioning!

Our tileset by the end of our project was a mix of David's art and free art from Kenney, who's doing all new game devs a massive favour with all of their CC0 (use for any purpose) game assets!

I made most of our NPC, player, and most of our items on one big spritesheet, which was my first time doing pixel art in years, since my GameMaker days.

Here are the sprites in question:

Sleep-themed sprites on a clear background

And on a green background, in case transparency makes things hard to see on some browsers:

Sleep-themed sprites on a green background

Since this project is mostly paused, and I'm sure my art skills will improve by the time I want to make a similar sort of game again, both of the above sprite sheets are CC-BY-NC-SA!

This means they're free to use for non-commercial purposes, but please credit me and share your own derivative works through the Creative Commons as well. For more info:

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Finally, Matthew did a killer job on our game's soundtrack, and it's one of the coolest ideas we managed to get working!

Our game's main theme consists of nine sleep states, ranging from nearly waking lucid mode, to strange and dreamy REM mode, to firmly deep in a nightmare. Matthew created a suite of different instrument tracks that all fit together, and we toggled them on and off depending on which state the player was in.

For example, more ominous percussion and trumpets signalled impending nightmares and harder enemies, while higher and calmer melodies sung out during lucid dreams where the player was at most risk of waking up.

If you'd like to give the game a try and hear Matthew's music for yourself, I do have runnable versions of the game available. The main game is somewhat buggy with NPC AI and spawning (especially on Linux), but the test room works just fine and lets you play around with everything in the game so far:

The latest build of the game has a prompt which shows which keyboard and mouse controls do what with each item, and there's a short tutorial which may not be the most intuitive, but should explain things further.

Hope you have a full night's sleep!

Tags: Blog, Miscellaneous

–Kiefer