Between Friday 3rd-5th April 2020, German Rocketbeans TV hosted minibeansjam 5, a 48 hour gamejam. I submitted a game and managed to finish most bits right in time.
The purpose is not to win anything, it's more a fun thing to do and it challenges your skills in time management, setting priorities as well as health care. (yes, you NEED sleep!)
Personally, I need to be in the right mood to approach something like a gamejam. I am a quite emotional developer and if I feel down or unwell, my creativity kinda stalls. That's why I don't prepare for gamejams in general. As a general rule though, please consider the following before approaching any gamejam:
Interestingly, I purposefully did this game on my own. Initially, I was looking for a team but then I wanted to challenge myself: can I build a game including assets, programming, level design, game design, writing, sound design and music myself in such a short time?
The theme has been announced around 6pm on Friday:
Der #miniBeansjam5 Countdown hat begonnen!
— miniBeansjam (@minibeansjam) April 3, 2020
Hier sind die Begriffe für das #GameJam Thema!
Wählt mindestens 2 der 3 Begriffe: Explosion, Elastisch und/oder Jenseits.
Die Zeit endet am Sonntag um 19:00 Uhr, also in 48 Stunden!
Viel Spaß bei unserem #GameJam!#gamedev #rbtv pic.twitter.com/5Rnw3iR1OM
For my all non-German friends, this basically says to pick one or more of the following themes:
The themes are not super strict but can be interpreted in any way. Their main purpose is to guide your imagination! The first thing I always do is creating a mindmap:
You can use whatever tool you prefer for this, after a quick Google search I found mindmapmaker.org.
I stared at my creation for a couple of minutes until I realised: I want to build a zombie shooter survival horror!
The next step for me is to set up a project. Many people also do offline games (like board games) where this obviously is not applicable.
A version control system (VSC) like git helps you to track your changes over time. The idea is that every change you do to your project is stored in the cloud and can be accessed at any given time. For that, I use Github for that:
It is important to use a VSC since it can save you a lot of pain. Using something like Dropbox is very difficult once you want to play around with features but you do not have the concept of branches. Also, working with multiple people on the same file can be challenging with something like Dropbox. Version control becomes a MUST in bigger teams.
Next up I generate the project. I build all my games in Java, more specifically with frameworks like libgdx and braingdx. Then I commit the changes to Git and push them to my Github repository:
Obviously, using when something like Unity Engine, you'd push the project files of your Unity project.
This is the first critical stage. When I attended my first game jams a couple of years ago, I'd already rush ahead and implement features like health system, fighting, enemies or shooting. Those things are useful and make your game fun, however, now might not be the right time to do this. In my head, it looks a little bit like this:
I call this the Gamejam Flow Pyramid (excuse my poor MSPaint skills. Also, arrows are now up to scale). The idea is the following:
Obviously, this order is just a suggestion and always works for me the best. Also, for multi-disciplinary teams this order can be moved around or things like assets and levels can be prepared already on Day 1 while developers work on implementing game mechanics. On Day 2 and Day 3, artists, writers and composers can then work on polishing existing stuff or extend the game.
After setting up my project, I opened my Pyxel Edit to create a simple tileset:
I added a lot of variation to different grass tiles so the game looks okay when walking over a plain of grass. If you haven't seen tile sets like this yet: Tiled map editor has Terrain support and it makes things so much more easier to build nice-looking maps with the terrain editor:
Once the terrain has been defined, you can simply draw terrain within tiled:
That's all I needed for level design right now. Time to work on my core mechanic: the walking soldier. To achieve that, I wanted to do a 2.5-dimensional illusion where you can perceive depth:
Next up I created the player tileset. In previous games I always used to have WASD movement and four directions. However, that can be very limiting and I wanted the player to move in ANY direction. That's why the tileset needs to take diagonal movement into account:
Implementing this into the game with the animation system of my framework braingdx was straight-forward. Here is the result:
Implemented movement 🏃♀️ and rotation 💃
— 〽️ɪɢᴜᴇʟ (@bitbrain_) April 3, 2020
Next up: running animation and weapon system.#gamedev @minibeansjam pic.twitter.com/tZO43xUzBu
Enough for the first day. Time to go to bed! 😴💤
The second day was about building out the core mechanics such as implementing shooting and zombies:
Implemented #box2d physics and shadows. Now I can bump into zombies.
— 〽️ɪɢᴜᴇʟ (@bitbrain_) April 4, 2020
Now working on the first weapon, shooting & running animations. pic.twitter.com/MKmT2fP4IH
Making zombies was rather easy: I desaturated the colours of the player texture, painted the skin green and made the eyes red:
Yes, this means zombies have the same animation as the player, but nobody hopefully notices this! flies away
Shooting in action.
— 〽️ɪɢᴜᴇʟ (@bitbrain_) April 4, 2020
Next up: making zombies aggressive and more animations.#minibeansjam5 @minibeansjam pic.twitter.com/TicPbc33EI
After implementing shooting zombies and a health system, it was time to do something entirely different: composing a soundtrack. Since I wanted to save time and I was all on my own, I had to do a few design decisions before composing:
I spun up my Ableton and came up with this:
I added tons of base and reverb to give a sense of loneliness. Also notice those weird tones towards the end? That's me just randomly punching my MIDI keyboard.
On the last day I recorded various sound effects myself:
Also, there are more sound effects I downloaded from the internet since it was rather difficult to record them myself:
That's how I built the game. Obviously, there was much more stuff done on the code front. Checkout this video to see all the code I wrote during this project:
I just want to thank the other participants for their amazing games (I played them all!) and also give special thanks to Dima (Dmitrij Chotin) for organising this great event. Hey, follow him on Twitter! He built an amazing game, too.
Oh! I almost forgot! You can play the game here: