Two weeks ago, I started working on this project full-time. But the idea goes back much further. In fact, I don’t know how far back the idea goes because I probably wasn’t the first person to come up with it. If you’re interested enough to read this post, you probably came up with the idea yourself a long time ago too.

The idea is simple: I can take a construction set for building the Batmobile and a construction set for building a castle and put them together to make a Batmobile Castle. Castlemobile. Batstle. Castbatstlemobile. Figure this out before publishing the dev log. Why can’t I do that with my video games?

Now, before you get too excited, I don’t mean all video games. This isn’t some magical tool that lets you combine Call of Duty with Hello Kitty Island Adventure (although with the way modders are, some will probably see this sentence as a challenge).

I’m specifically talking about the most construction set-like genre of video games: creative management games. As NerdCubed put it, “Games where you manage something, and you can be a little creative about it.” [TODO: find the actual quote]

What if you took a game about running a farm and a game about trains and smooshed them together into a game where you grow vegetables and then deliver them to people? Or what if you put the farm on the train? What if the train was a roller coaster? What if it drove through intradimensional portals? What if–

Okay, maybe the idea isn’t very simple after all.


But this isn’t my first rodeo. Before this, I worked on DFHack, Alien Swarm: Reactive Drop, Spy Cards Online, and probably some more I’ve forgotten. Making a game that explodes in complexity seems to be my personal gimmick.

And I’ve also got a lot of great inspiration to pull from. Just going down the list in my Steam library (and this can double as a list of games for you to check out while you wait for the long process of me actually making a game) I’ve played (or plan to play soon):

As you can see, “creative management” is a huge, very open ended genre. I could easily be convinced to include games like Command & Conquer, Age of Empires, Lambda Wars, Civilization, Slime Rancher, and Melvor Idle in this list.


So what does two weeks of game development look like?

Well, for starters, there’s floors, walls, ceilings (a rarity in the genre!), and one character. All of this is placeholder art; the textures and models come from Kenney.

There’s a system for defining custom wall, floor, and ceiling types, along with their corners and end caps, which can have both visual and physical models. There’s partially implemented support for stuff like windows and doors that has to “punch holes” in walls, as well as skylights and trapdoors for floors.

All of this is just in code, though, so there’s only so much I can visually represent in a blog post. There’s no user-friendly wall/floor/whatever designer. Yet.

You may have noticed that I can select the character and control them. You may have also noticed that their head was on backwards in first person mode. Please don’t notice that part.

This isn’t my first time making ceilings in a game with a bird’s eye camera view. I did it before in Alien Swarm: Reactive Drop (and before that, in two separate Alien Swarm mods), and despite all the positive feedback people gave, the only missions that ended up getting ceilings were the ones I added the ceilings to myself.

But visible ceilings and controlling characters in first person in a bird’s eye view creative management game is by no means new. It was a core feature of Dungeon Keeper, which was released in 1997, twenty seven and a half years ago. I’ve seen a few creative management games since then attempt first person view or controlling a character, but never quite to the same level as Dungeon Keeper.

Something I like in Half-Life 2 and basically every Source Engine game is the emergent comedy of physics collision sounds. I tried to replicate that here with just one sound for now, a cardboard box being dropped recorded by ittou on freesound.org. (Like many things in this post, the system for playing sounds from collisions is custom.) I also wanted to make sure that characters wouldn’t get stuck in physically simulated obstacles, because that’s going to be a major mechanic of the game.

There’s a lot of secret checks and nudges that go on behind the scenes. For example, if a box lands on a character’s head, the character will act as if they’re encased in solid rock and be completely unable to move. To avoid this, I simply have the box check whether it’s touching a character when it comes to rest and have the box vibrate slightly. There are also some checks to make sure characters and objects can’t fall out of the playable space and can’t get stuck on ledges that they’re not supposed to walk on.

But this is also a building game, so the player needs to be able to modify the terrain. And importantly, I want to make sure that no matter what happens, the game keeps running at an acceptable speed. So it’s not as simple as spawning a “wall object” in the world; the code generates a snapshot of all the walls and floors in an area as a single static mesh with both collision and occlusion. It won’t draw objects or characters that are completely obscured by opaque walls or floors. And the entire process of “baking” the area needs to be fast enough that you won’t notice it during gameplay.

And it only took… 8,315 lines of code. So far.

Gosh, writing a blog post is difficult. I sure hope game development isn’t this hard.