| Tags: game development post-mortems

Once again, I joined the fun of Ludum Dare, a game jam in which developers make a game over a weekend. I participated in the "compo" category, which means that I'd need to do everything from scratch: code, art, audio…

And here's what I made! Meet Terrartisan, a terraforming game you can play in your browser!

Screenshot

As with my other game jam post-mortems (see, for instance, The Language of the Gods' one), I will be sharing a development log, as well as what things went well, what went wrong, tools I used, etc.

If you also participated in Ludum Dare, I would appreciate if you could comment and rate my game at the website. Thanks!

Development log

Saturday

I woke up early (around 7 AM) to see the theme: "A small world". I went outside for a walk and also to have breakfast in a café –since I was going to spend most of the weekend indoors.

I like to do mind maps for brainstorming. Here's a section of it while I has having a delicious sandwich:

Mind map

In these mind maps I usually note down concepts, as long as movies, other games, genres, etc. related to the theme. I decided to go for a terraforming game, in which you will control a planet and let biomes evolve. I envisioned this as a tiny, cute world inside a glass ball.

Right before lunch I started to make some placeholder art in Pyxel Edit –my go-to software in pixel art.

Placeholder tiles

After lunch, coding started. I made a list of features I needed to implement, separated in "core" and "nice to have". My initial core features were:

The first thing I made was placing terrain blocks in the world. Afterwards, I implemented the basics for biome evolution: water would turn desert blocks into fertile soil.

Basic biome evolution

The UI felt weird without some kind of feedback, so I generated sound sound effects quickly with bfxr.

Once I had that in place, I deployed the game online and posted the URL on Twitter for people to play, which was fantastic because I could start to see the worlds they were making! For instance:

Sample user generated content

I continued to add and tweak biome evolution rules, as well as lot of bug fixing –people in Twitter were kind enough to point out odd behaviors and bugs.

Once thing I noticed is that absolutely no one asked me how to play with the game in its current state (no indications from me, no instructions on screen… nothing), so I began to think of maybe dropping the in-game tutorial since it was time to go to bed already and I was way behind schedule.

Sunday

I managed to get around 7 hours of sleep and did the same as the first day of the jam: go outside for a walk and breakfast. This Sunday was a special day –and not only because Barcelona was playing against Real Madrid that evening!– because April 23 it's Sant Jordi (St. George) day, which is celebrated in Catalonia by gifting books and roses to your friends and loved ones.

My original plan was to take advantage of the cafeteria to do some level design with pen and paper, but decided to drop it and walk through my neighborhood instead: there were multiple people outside, and the streets were full of books and roses stands.

This meant I got home late in the morning and no level design or whatsoever, and still lots of coding left to do.

I continued by adding global stats to the world (so, for instance, humid worlds could hold more plant forms). I also created a new biome –forests!- and tweaked the UI a bit. Here you can see how I dropped the whole right area and made the canvas a square:

Tweaked UI and world stats

In the meantime, people kept sending me their creations over Twitter:

More user-generated content

At that point I had a toy, not a game: something people could play with and have fun, but there was no goal in place. I decided to create some simple goal system for levels: player would need to get at least a certain amount of some blocks in order to complete that level. I also created two modal dialogs: one for displaying a "you won" message, and another one to show which were the goals for the level:

Goal modals

It was 17 PM already and I still had no proper art and no music. People were finding the game cute already, even though the terrain blocks were looking very rough and the whole background was empty… But the game was playable indeed, so I didn't worry much about it: I could always leave in place that placeholder art! (which I ended up doing).

I had one level in place, but I wanted to preserve the "free-form build" mode that people loved. I made a title screen in which players would be able to choose between those two game modes:

Title screen

Afterwards, I realised that for some levels that I had in mind it would be convenient if players had a way to remove a terrain block. So I added a "remove" button to the UI. To make levels challenging, I put a cap into how many blocks of a particular type the player would be able to use in a particular level. The new UI looked like this:

New UI palette

9 PM and… yes, still no decent art and still no background music. It was a terrible time to do music because the game (Barcelona vs R. Madrid) was about to start and I couldn't listen to the radio and make music simultaneously. But waiting for the game to end was out of the question.

And then a small chain of bad things happened. I wanted to try a new set up for music in game jams: Pocket Operators with an audio interface. I had already tested it with one pocket operator, but not with two of then chained… and I couldn't make it work.

After almost half an hour I gave up and decided to switch to a more familiar environment for audio: Audiotool, an online DAW. And again, after half an hour with it, their servers went down and I couldn't keep on working. I lost a full hour with this! I settled to make music with Garage Band instead. It took me around another hour (I actually finished it when my whole neighborhood was choiring Leo Messi's name). I was not very happy with the song, but it was better to use that track as background music that not playing anything at all:

I was tempted to leave the game at that state and submit, but I went for a bit of polishing: I implemented a reset level button (with a flashing warning that would appear after the player has run out of terrain blocks) and added some more levels –making a total of five of them.

One cool thing about the levels is that they serve as a tutorial, since you have a limited palette of blocks to use and you are asked different types of blocks on each one, which makes the player to learn one rule for biome evolution at a time!

It was midnight, and I decided that I would add some passing clouds, as in my previous games. I thought it would provide a bit of eye candy and much-needed movement, since this game had no animations.

Clouds!

After that, time to upload the game to itch.io and make the submission at the Ludum Dare's website. 1:30 AM, mission completed!

What went wrong

What went well

Tools and apps

Here is a list of tools I have used to make this game.

Code:

Art and audio:

Misc:

Note that since I went for very crude art, I didn't need to use my Wacom tablet to draw.