Kodrick

Can we build a video game in under 48 hours?

Derick Murphy
August 4, 2022

A few months ago Kodrick Gaming participated in the Mini Jam 103: Darkness.

For anyone that is not familiar with the concept of a game jam. It is an event where people from all over the world spend a set amount of time, usually a weekend, to create a game based on a themed limitation.

The Mini Jam that we participated in was 3 days long and had the limitation of “You are your own enemy.”

I had work on Friday so Cody and I decided to start at around 8:00. 

The Planning

In past game jams we have participated in we have had trouble completing everything on time, due to runaway scoping issues.

We figured that we could mitigate this by spending a little more time on planning the game out to decide the core features needed and then estimate how long we thought it would take to make those features. So we decided to dedicate all of Friday night to planning.  

Our first idea was a side-scroller in which you would fight a series of bosses. These bosses would all have something unique about them whether it be a specific move set or a special ability.

The twist is that each boss that you kill would give additional abilities to the final boss that you faced, effectively making the game harder, hence “you are your own enemy.”

We figured that in order to get the point across we would need to create 3 bosses and one final boss. So we started writing out the task that would be needed to get this done and quickly realized it was out of scope

Luckily we had another idea up our sleeves.

We wanted to utilize the darkness aspect of the game jam as well as the limitation so we had an idea where you would play as a light tower that has a set amount of light, which would basically function as your life, placed in the center of a dark screen. Around the rest of the screen there would be little blips that signify points of interest. You could then spend your light to place light sources on the points of interest to reveal towns and other resources. These resources would allow you to gain more light thus extending you life, but would result in enemies being enraged at the light. The towns could also become corrupt if given too much light, resulting in them becoming less efficient. You could also build defense structures around the town. The towns would have their own currencies, which you would get a portion of, the towns could spend your currency if they became corrupt….. I think you can see that this is going out of a manageable scope once again. 

Dang it - making a game that we would be able to actually complete in 2 days is hard. Well, back to the drawing board. 

We really liked the light and darkness aspect of the idea though so we decided to keep that.

It was at this point that Cody had a neat realization. Light and darkness competing for control of a screen had some similarities to the ancient Chinese game Go. To show me what he meant he did a quick google search and found a visualizer on GitHub made by featurecat that we downloaded and played around with.

This was it! This was what we were looking for, but how do we fit it with the theme?

Maybe for each light that you place down there is an associated darkness that you must place at some point.

That’s it. Ladies and gentlemen, we have ourselves a game.

The idea would be to get as much luminosity on the screen as possible and minimize the effects of the darkness.

Each light token would have a specific strength and would also have an associated dark token with a specific strength that would have to be placed at some point, and you could only store up to 4 dark tokens.

We planned out our task, did some rough class design, set up the GitHub repo and called it a night ready to start bright and early in the morning.

Development: The Golden Age

We woke up the next morning excited to build our game. We were going to be using the Godot game engine, which we were both somewhat familiar with, but have never built a full game in.

The plan was that I would work on the grid system and Cody would tackle the lighting system.

After finding a tutorial on grid movement (thanks, GDQuest!), I was able to modify it to work with our placement system and voila we have a grid system. 

After some trial and error with every single combination of blend modes on the light and dark torches, Cody was finally able to get those working. We quickly implemented a bottom bar to house the light tokens and “Let there be light.”

The next step was to make it so that each light placed would add a corresponding dark torch to the dark bar. I quickly added a top bar where the dark torches would be stored, connected it up, and BAM, now we could add darkness to the scene. 

We were on a roll; it seemed like the extra work put to planning would pay off. Since we were ahead of schedule, I decided to work on the art for the torches, while Cody worked on torch placement and generation in the UI bars.

Down the Artistic Rabbit Hole

This was where things slowed down dramatically.

I was definitely out of practice when it came to art given that it has been over a year since I had done any art. I tried drawing the sprite by hand in Krita but didn’t love the result, so I switched to vector art and then quickly realized I don’t know how to do vector art.

At a loss, I decided to do a google search to see if I could get any ideas on what to do for the art and saw something on generating Sprite Sheets with Blender. I thought that idea would be perfect. I could do a quick basic model in blender, throw together some simple animations and export the animation as an image sequence. Easy, right?

And down the rabbit hole we go.

I managed to throw together the first iteration pretty quickly, however they end up looking like bombs about to go off, rather than torches.

I tried again... and again... and again.

But I quickly realized that rendering a scene in blender to a 64px canvas was not working, I was losing too much detail and it just wasn’t looking right. I then looked at the time and realized that I had spent three hours on this.

Three Hours! Where did the time go?

With the day almost over I knew I had to get some art done so I decided to model a single glowing orb with a simple scale and brightness animation. I rendered it and the result...

...was something that I probably could have achieved by hand with a simple round brush.

Oh well at least the art for the torches is finished.

By this time, Cody had gotten the logic down to populate the bottom bar with new random tokens and for the used tokens to be removed. I quickly threw some art work together that allowed us to see the strength values and the core of our game was done. Now we could finally play our game.

We booted it up and... It wasn’t fun.

The game felt pointless, and lacked a call to action or incentive to play.

Sure, you could try for a high score. But it was easy to game the system by placing the dark torches on the edges, and the light torches in the middle.

We wanted the player to have a bigger decision in handling what you want to do versus what you need to do. This was a fundamental part of the way we wanted to use the theme and limitation.

So. All this work and we had built a game that was not fun. After distracting ourselves from the pain with a lighting bug for far too long, we decided to go to bed, somewhat defeated, from the lack of fun.

Make It Fun

But we woke up the next morning determined to fix it. We were going to turn this around. Sure, we only had a day left. Sure, we don’t have a menu, music, or much art done. But we had a dream, and that dream was of a game that shined in the darkness and revealed a piece of entertain that was actually fun to play. So back to the whiteboard we went.

We started brainstorming ways to make the game fun. We thought we could add an AI that places the darkness torches for you making it a little more challenging as you have to beat the AI. We thought about adding effects to torches, such as some torches doubling the light from surrounding torches, or creating a wall of light on the screen. This would allow for more interesting, and varied, gameplay. We also considered the village/town aspect again, filling the board with a variety of power-ups. But every idea we had held one common thread: too much work and not enough time.

Things were looking pretty dim. We didn’t know what to do.

How could we possibly make the game fun in time? Much less finish it? And then it hit us.

What if the torches had to be placed in a specific area? This was the jumping off point we needed.

We decided to run with this idea and switch directions entirely. We would make a puzzle game where the torches had to be placed in certain locations to achieve the goal. The goal would be to transport a stream of darkness from a pipe that was on one side of the screen to another pipe, across the screen.

The light and dark torches affect the stream by repelling or attracting it. The challenge would come from the fact that dark torches are placed relative to your light torches. This relative location would change based on the level. For example, in one level the dark torch might be placed two grid spots to the right, and two down from where you placed the light torch.

With our new idea in place, we were ready to go.

The Home Stretch

I quickly began working on updating our placement system to automatically place the dark torches based on the light torch placement and Cody worked on configuring the torches to attract and repel the dark stream. Pretty soon we had a working prototype.

We threw together a level pretty quickly and played the game. We had no idea if the level was actually solvable but played it anyway to get a feel for the game…

And it was actually surprisingly fun.

Not addicting, perhaps, but definitely an improvement.

We spent some more time tuning the Levels and decided to make three levels.

With the levels done, we just needed to add some finishing touches. We made a main menu with level selection, updated the art to a space theme, switched out some very DIY pipe sprites with Black holes, and added some menu music. 

Finally, we built the game for web, uploaded it, and submitted it. And somehow, with two hours to spare.

Retrospective

Competing in the Jam was a lot of fun, and while the resulting game is by no means the best game in the world, or even in this little Jam, we're proud of it. We learned a lot, from experience with Godot to not using 3D rendering to create 2D sprites.

We would love to develop this game further, and have even thought of some refinements if we ever get a chance to return to it.

If you're interested in playing the game you can check it out at Itch.io and let us know your thoughts on how we can make the game even better.

Probably the biggest feedback that we have gotten is to add a tutorial on how to play, which is definitely needed and would probably be the first thing added.

Have you ever participated in a Game Jam before? We'd love to hear about your experience in the comments below!

Written By
Derick Murphy
Kodrick LLC © 2022