Build for Seattle Indies Show & Tell

I’m showing the game at Seattle Indies Show & Tell tomorrow at the Living Computer Museum, so I made a new build with the changes I’ve made in the last couple weeks:

  • Made 3D models for all the upgrade icons.
  • Did some work on main menu flow so you can just mash buttons to get back into the game.
  • Added a girl character that you play as 50% of the time.
  • Added a soundtrack to the main menu.
  • Vehicles and fire hydrants react to the player hitting them while unarmed.
  • Cool skull over the gate to the boss room.
  • More quality options.

Meta Progression and 3D Main Menu

I spent the last couple of weeks working on revamping the main menu, including adding an upgrades menu. That means the game has meta progression now! When you play the game you collect computer chips, which you can spend in the upgrades menu to make your character stronger.

Here’s what the intro flow looks like at the moment. This is all work in progress, I’d like to at least give the main menu a background so that it’s not just a black background, and also do something more interesting with the loading bar.

Also new since the last update:

  • Gave the player model a higher-resolution texture.
  • The player model randomly selects different shirts, pants, shoes, and watches each playthrough.
  • Disabled manual camera rotation. The camera will sometimes rotate on its own when it makes sense to.
  • Made certain colliders frictionless so you don’t get stopped when you brush against a wall.
  • Added money bag pickup to replace jewels.

Check out the build and let me know what you think:

What’s New in 0.1.6

Here’s what’s new in build number 0.1.6, which is available to download on for free!

Beating up two spiders and bats

I added new models and animations for the spiders and the bats.

Zoom Dialogue

I did a lot of work on the initial dialogue with “The Professor”. There’s a circle wipe at the very beginning, the camera zooms in, there’s a watch on the player with a little hologram that pops up, the UI with the text in it is a new model, there’s a hologram effect on the animation in the UI, and if you look real close you’ll see that The Professor’s animation is synced between the UI and the model on the player.

Zoom into dungeon

I reused that circle wipe when you enter the dungeon…

Zoom into ladder

…and when you use a ladder. Which you do more now because the dungeon is three levels deep instead of two.

Using small key

I added keys that open special rooms where you can buy stuff.

Using boss key

You need a golden key to unlock the boss room.

Death zoom

And finally, I added a sweet zoom animation to the camera when you die.

Progress This Week

I made some progress this week! There’s a new build available to download on Here are some of the highlights.


I have a new draft of the drawing of “The Professor”. I got the feedback at GE2 that he looked too much like a certain professor from another game, so I’m trying to make him a little more different. Might still be some work to do there.


The dungeon is now two levels deep! On the first floor, where the boss would have been, there’s a ladder that leads to the second level. On the second level there’s still a boss.


I added a new UI menu to show a detailed comparison between the weapon you’re currently holding and the weapon you’re thinking of picking up. It’s based on a clipboard in order to have some thematic consistency with the “delivery service” idea. I added flavor text for all the weapons and shields.


I also used the clipboard for the pause menu, which shows your current player stats. The HUD slides on and off the screen when these menus pop up instead of just disappearing.

One last thing, I added a HUD icon for “unarmed” to show that even if you don’t have a weapon you can still press X to attack:


Overall I’m pretty happy with the work I did this week. I’ve got plenty on my to-do list but there’s some stuff on there that I’m pretty excited about. Stay tuned!



New Dungeon Minimap


I’m working on a new minimap to replace the old radar-style minimap. It shows which rooms you’ve explored and where there are hallways that you haven’t explored yet. I don’t think the old minimap was actually that helpful for navigating around the dungeon. People would often get lost once they had cleared out most of the rooms. Hopefully something like this will help people keep track of where they want to go next.

I don’t have a replacement minimap for the overworld. For now I’ll just leave it without one and see if people can still figure out that they’re supposed to go to the dungeon even without the blinking navpoint on it. Eventually I could create a similar grid-based map for the overworld but it’s a lot more linear than the dungeons so maybe it won’t need it.

World Generation Progress Bar


I finally got around to putting world generation in a background thread so I can use the main thread to show a loading progress bar. This was a little tricky since you can only interact with Unity on the main thread, so for things like combining meshes or spawning objects I added a main thread task queue, which will execute tasks for up to about 30 milliseconds each tick. That queue is pumped during a regular Unity Update call, so in order to get those tasks to run as quickly as possible I disabled VSync while the level is loading.

I haven’t found a good way to profile the background threads—Unity’s profiler only looks at the main thread and VS can’t profile Unity’s instance of Mono. I already have to monitor world generation progress in order to report back to the main thread so it can increment the progress bar, and I get some timing reporting out of that, but nothing granular. So optimizing this has been guess and check, trial and error. Like, comment out a line and see how much faster that makes it, to measure that line’s impact.

I’m definitely getting some ideas here about how I would structure an engine if I wrote one from scratch, in order to make procedural world generation faster. The main thing I think would be to have object types that are specialized instead of general purpose, so that it’s not super expensive to create an object. Making engine types threadsafe, or at least lockable, would be a huge win too.