How I Made a Game in 3 Hours – TriJam 181
TriJam is a game jam where players compete to make a game in only 3 hours! It might seem an impossible feat but the three hours counts only for actual development/creation time, for example coding and asset creation, not design work or other tasks like compiling/uploading the game.
The jam takes place over 3 days and each person in a team gets their own 3 hours to create their own part of the game. This might seem a little unfair at first because you suddenly end up with 6 hours to make the game as a 2 person team, 9 hours as a 3 person team etc but this also requires a LOT more consideration towards co-ordination, time tracking and design so it probably evens out a little.
How I Did It
The jam starts early on a Friday (European time) and runs until late on Sunday and I was able to leverage a lot of this time to design the game meticulously. I first came up with the idea. The themes are publicly voteable before the event and I took my 3 favourite themes and wrote them down. I hoped that Flight Time would win and I quickly jotted down some ideas, my favourite being a traffic jam game about catching your flight. Going back I then realised that Storage Management was likely to be the clear winner and I tried to work out some ideas.
My first idea was a variation on the old Shepherd, Fox, Sheep, Cabbage problem and while I thought it would be easy to make I felt it would be quite dull. Still stuck on cars from the Flight Time idea, I thought a parking management game would be an interesting idea. I quickly settled on the idea that the player plays as a valet at a busy concert and everyone is running late. The concert will not admit late entries and it’s the player’s job to make sure all cars are parked before the gates close!
I decided that the parking idea would be ideal, perhaps a little complicated for 3 hours but with the right design and planning I thought it should be manageable so I set to work on the design and planning stage.
When I had settled on an idea, I started on stream explaining my idea for the game before beginning to flesh out the design documents, working on each system that I thought I would need and writing pseudo code to try and link them in a meaningful way.
Once this was done, I started working on a schedule, estimating what scenes and scripts I would need, the time it would take to make each scene and carefully laying out each sub node that would need to be created, as well as more detailed pseudo code.
I estimated there would be 7 systems needed to create the game:
- A player scene/script;
- A car scene/script;
- A level scene;
- A game scene/script;
- An NPC scene/script;
- A UI scene;
- And perhaps most importantly a parking space scene/script.
I provisioned a little time to create some art assets but I knew going in that the majority of my assets would definitely be pre-made public domain/CC/CC0 assets and I had a plan to quickly browse the large array of Kenney assets for textures, sounds and fonts. In the end only some sound effects were custom made (more on this later). All in all I estimated the game would take about 2 hours 54 minutes to make. Estimating that each scene would take 15-20 minutes to make (including basic scripting), assuming that the car park itself would take the most time. This was to taking into account the placement of parking spaces, laying out the tilemaps. As it turned out
Creating the Game
I started off fast, as soon as the timer was running I ran to Godot, my engine of choice, to start creating the first scene. I quickly filled out all the nodes and started filling in the code. I took a quick timer break between each scene to catch up with chat and take a breather because I was very stressed about how much I had to do in such a short time, even without making the assets and I was worried about the “spirit” of the 3 hour limit. Once I’d had a breather, I started the timer and got back to the next scene. Eventually I got into a flow and I was able to go longer between breather/chat breaks.
As I went, I tried update the schedule to see where I was running over/under time but as I got further into making the game, this became less of a priority.
For the most part I spent time playtesting the game during the 3 hour period. However as time went on I realised that the game was far too long to test properly during the timer, the game takes between 5-8 minutes to test to a fail state. I asked my stream chat and we agreed that if compilation didn’t count towards the time then playtesting probably didn’t count either as it’s no more part of the game creation than compilation. While it is a part of game development, coding and asset creation were the main points counted in the rules as things to count with the timer and as such, as we got more towards the polishing stage, I started to pause the timer to make sure the game was working. I hope this is within the spirit of the jam’s time restriction and if it’s not, I profusely apologise, I spent a lot of time during the jam agonising over what constituted coding/game creation vs not.
Last Minute Additions
As it became clear that the game was nearly feature complete, only missing NPCs I was gifted by the addition of wonderful sounds made by my good friend Teifion Powell. I wasn’t sure if he would be able to take part but he managed to find time very near to my 3 hour timeout. I consider this a team effort, giving Teifion his own 3 hour budget of which he used aproximately 3 minutes. However, even without this team time I think that we were within the 3 hours just using my time allowance if you take some of the longer playtests out of the time, which as I’ve said before we agreed on stream was likely okay to do.
Ultimately game creation ended at about 5 seconds less than 3 hours.
The Finished Game
Overall I was really happy with what I achieved in the 3 hours of creation time. The only feature that was missing was NPCs that would walk off screen. I allowed myself one instance of scope creep which was to try and add an alarm to the cars, courtesy of Teifion’s last minute sound effect efforts, which would trigger on crashing into parked cars, however due to a REALLY SIMPLE bug I couldn’t get this working. I would have liked to add more “juice” to the game, adding little extra visual and audio feedback cues such as particle trails for the cars or camera shake on crashes but overall I think it was a solid first attempt and I’m very happy with how it turned out.
The jam organisers suggest polishing the game page once the game is submitted so I spent some time on stream creating a trailer and coding a custom cover image animation program within a separate branch of the game’s VCS repository. Knowing I was fully in the clear with the submission time, almost 12 hours before the deadline, I felt like I could spend as much time as I wanted finishing off the page but I was also quite tired by this point, having already spent 5 hours streaming (3 of which was almost solid game creation). Once the video, cover image GIF and screenshots were uploaded and added to the page I gave the game one last play before ending stream, 7 hours after starting.
I managed to rate all but 3 of the games made for the jam (Mac/Linux only games) and of course my own. They were all really fun and very well made! I especially liked Parker, another parking management game made for Pico 8, Quadristorage and Zero is Equal to Zero, a number scale balancing game. All the entries were enjoyable and I don’t think there was one where I didn’t have at least some fun!
I have continued developing the game since the submission. I’ve added a lot of polish including:
- NPCs which I couldn’t add during the jam due to time;
- Better car interaction – adding an outline to indicate which car the player is going to enter;
- A way to mitigate the player getting stuck between cars using RayCasts and preventing exit if no cast is free.
- In-game music and car alarms on impact;
- A failure state directly related to the number of alarms triggered when the game ends;
- Camera shake on collision;
- Tightened up the controls a little. The game is still challenging and fun to play but a little less frustrating.
I would like to maybe add a little story of a valet working their way through the ranks at various parking venues culminating in the big concert. This would require adding some more levels of varying sizes and shapes, maybe adding some obstacles in some of the levels and perhaps a wage system where the end score is based on tips minus the cost of any impact damage done.
I hope you enjoyed this breakdown of my first TriJam experience. Please feel free to try the game, both as it was during the jam and as it is now.
Support This Site
If you enjoyed this content consider giving a tip on Ko-fi to help us keep producing content alongside our products.