Each summer the r/roguelikedev community has a summer event in which we all make a simple roguelike, roughly following the Python libtcod roguelike tutorial. Last year I tried to clone Dwarf Fortress in 40 hours. That was too ambitious. But I did enjoy working on a "fortress mode" project more than an "adventure mode" project, so I wanted to do something like that this year, but with a smaller scope.

Colony simulation game

Although the event presents itself as a Python tutorial, lots of people pick other languages and libraries. And people deviate from the tutorial topics. For example, this year someone made a Roguelike MMO!

Unlike a typical "fortress mode" game, I wanted to have an end to the game. This was inspired by Against the Storm, which lets you build a town but then you win or lose, and you start another town.

In my game the wilderness is all accessible at the beginning. You can use natural resources at small scales. But to advance, you need to set up rooms to process resources. Last year, building rooms and walls tile by tile is what doomed my project. This year, I generated all the rooms procedurally. You'll claim and populate them to progress.

How'd it go?

I had to take a break in the middle of the project (real life obligations take priority) and continued a few weeks after the event ended. I'm not too worried about following the schedule or topics exactly. For me, the event is a way to inspire me to work on a project.

What went badly?

  • I never did make the game design work well.
  • I wasted too much time prematurely optimizing the code.
  • Despite keeping the scope small, it wasn't small enough.
  • I had lots of bugs in the simulation code. I had hoped to find a way to code it that was less error prone.
  • I lost motivation towards the end, in part because I couldn't figure out a game design I liked.

What went well?

  • I liked the "pick one of three choices" room unlocking mechanic.
  • I got the job system working. This is probably the thing I'm happiest about. It's been a big stumbling block for me in past projects, and I was able to push through and get everything working this year.
  • I found a nice data structure for the job system. I'll blog about that later.
  • I tried out a nice dungeon generation algorithm. It's much simpler than anything else I've seen.
  • I liked the interface I came up with, using modifier keys to change the view and command set.

I ended up dropping the remaining features (game content, game balance) and saying it's Finished. It's not much of a game, but you can play with it here and also read all my development notes later on that page. I learned a lot and I'm glad I participated in this year's event.