After a bit of engine retooling, woodworking, yoga, a foray into programming language design, and trying to figure out what the next game will be, I’m happy to say I’ve chosen a design and am actively working on a new project. It currently has lots of temporary artwork that took less than 10 minutes to make and lots of debug rendering.
After making Banished I had so many ideas for new games it was hard to pick what’s next. But given that a lot of the game ideas had similar requirements, I spent some time updating the game engine to have some of the features I’d need. Anything in Banished that could be reused I refactored to be generic, if it wasn’t already. I made a lot of additions as well, preparing for multiple prototypes of various designs. I also tried to make some changes that would reduce programming workload and decrease the introduction of bugs.
Now that I’ve chosen and am working on a specific project, I’m finding that trying to make generic systems in isolation isn’t really a good thing in practice. I violated the KISS and YAGNI principles for a bit, and there’s a price to pay. Without a specific goal it’s impossible to have actually designed things in a way that is fully useful. So most of the things I wrote and refactored need more refactors, additions, and removals. Hmmm.
As an example, I built a wonderful terrain generator that allows me to create giant 250sq km landscapes, control where mountains, oceans, plains, and rolling hills are placed, rivers are generated that flow properly, erosion is performed, and it the results look great. But I don’t think I’ll be using it in its current form. There are some great concepts in it and I learned a lot, but it’ll take a ton of rework to be useful for a specific game.
Unsurprisingly in writing Banished, creating good code for the game as it needed it, and only refactoring the code when things got messy resulting in some great generic reusable systems. 65% of the code from Banished is getting reused. And as I continue to put together the beginnings of a new game, that amount is going up as I find things to pull out of Banished for reuse.
Writing a game engine really needs a game to go with it. Otherwise I’m just guessing.
Now back to programmer art and putting a new game together. More to come!