The latest installment of Ludum Dare, the world’s longest running game jam, has just finished up. For those who are unfamiliar with the game jam concept, a game jam consists of game developers coming together (normally online) to create a game in a very short period of time.
A theme for the jam is announced at the start of the competition and developers then go off and try their best to produce a playable game in the time allocated. The Ludum Dare competition itself comes in two main flavors, the jam and the compo.
The jam takes place over 72 hours and allows teams of participants the use of assets in the public domain. The compo, on the other hand, is aptly described on the Ludum Dare rules page as “Ludum Dare on hard mode“.
Games must be made in 48 hours by a solo developer, source code from the competition needs to be released and all assets used in the game including sound and graphics must be produced within the 48 hour time frame.
I have taken part in game jams before, having created the game Elemetal, under the Big Southerly banner for the JS48 game jam. But on this first experience with the Ludum Dare jam, nobody was available on the weekend to help me with the jam so I decided to go all in and try my hand at the compo, since I was going to be working alone.
The theme for Ludum Dare #38 was “A small world”, so the first few hours were spent deciding on something appropriate to build. Some of the game ideas included:
- A small asteroid floating through space. Over time a population of microbes evolves and reproduces. Every time the asteroid / world collides with space junk / other objects in space, part of the population is killed. I decided against this theme in the end, as my last game jam was space related so I wanted to try something new.
- Small island, trading game – The library I wanted to use for procedural generation of the islands seemed flakey so I decided to leave this one.
- An over populated world filled with people unable to stop breeding. Build a space program and get off the planet as soon as possible. I decided this was a great concept I just wasn’t sure if I would be able to do it justice in a 48 hour time span.
- The player is flying a rocket, a small planet is revolving around the sun. The rocket must hit the planet at just the right speed and angle to get caught in its orbit. In a trajectory type based challenge once again, I decided against this idea as it was a space related theme.
- The player controls a mouse (this later became a cockroach) stuck within a procedurally generated maze that you need to navigate in as quick as possible. This was the theme I decided to run with, it’s not the most innovative concept but I decided it would give me an opportunity to play with procedural generation of levels.
Now I had an idea it was simply a case of building it out. Day one was mostly spent on doing the graphics for the maze, the player sprite and writing the code to generate the levels.
That left me day 2 to write up the player controls, enemies, make any sounds required and polish the game in any remaining time left over.
The enemy AI was really simple in concept, if the player is nearby shoot some venom at them. If the enemy runs into a wall, turn 90 degrees to the right and try and move forward, if that way is blocked turn another 180 degrees to head in that direction. If still blocked turn the enemy around to the direction they came from and head that direction.
What is simple in theory can sometimes be difficult in practice though. Getting the enemies to move in an acceptable manner was a challenge, they kept over running walls or getting stuck 🙁
Despite the issues I got the game into a playable state before the entry cut off time. So you can play the finished entry Kenny Cockroach in your browser now.
The final judgment ended up being a drawn out process but Kenny Cockroach did get enough ratings in the end to score a proper review.
The generation of the maze and the enemy AI code for the game ended up being massive time sink. Most people when playing a game jam entry are only going to play it once or twice. A lot of people complained about the difficulty and spawning near an enemy.
So given the environment and re-playability not being a huge factor, it would have been a better use of time to just draw some predefined maps. Then spend the time saved on balancing the difficulty and adding extra polish. I took the code written for the procedural dungeon creation and turned it into a standalone PhaserJS plugin that other developers can use in their own projects. So outside of the competition it was not a waste of effort at all.
The game jam overall was a great learning experience. Given the time constraints you don’t have the luxury of over thinking things. Flexibility is king, any idea that starts to consume too much time either needs to change or be dropped altogether.
Its a great way for game developers to hone their craft…….. bring on Ludum Dare #39!