Performance in Dark Hill Museum of Death

Dark Hill Museum of Death is a puzzle adventure game I released in 2017. You can play it for free right here.

I was a little paranoid about performance when I starting working on Dark Hill. It was the first serious 3D game I planned on actually releasing and I didn't want to screw it up. If you've played a few indie games, you've probably run into at least one with an awful framerate. I wanted to avoid that.


There's a general rule with 3D games, which is never draw anything the player isn't going to see. I stuck to this as much as possible, limiting all my models to only what can be seen while walking around in the game.

If the player can't see under something, the model has no bottom. If the player can't see over something, the model has no top. Same thing with the backs of models that the player can't walk behind.

The biggest example is the pyramid in the Human Sacrifice exhibit. From the player's perspective, it looks like the steps are solid all the way to the top. From a higher perspective, you can see all the gaps.

Baked lighting

All lights are baked. This means lighting is calculated and applied to the game's textures at build time, so no light calculations need to be done while the game is running.

Using baked lighting means anything that moves won't be lit properly. Only a few things move in Dark Hill, and those are covered by light probes, which allow baked lights to affect non-static objects.

Lazy loading

Dark Hill isn't entirely linear, but it's linear enough that parts of the game can be disabled until the player hits a certain trigger.

Each room in the game is locked behind a puzzle, making it easy enough to enable each room only when needed.

That's everything

That's about it. A couple of people did comment on how smooth Dark Hill ran for them. Nobody else has mentioned performance, which probably means I did something right.