Look it’s not me, It’s you.

May 16th, 2014

Be prepared for a picture filled post. Like any bad relationship it’s best to know when it’s time to get out. As I have mentioned before this is not the first time I have tried to write this game. I’ve started over many times. So lets go through a couple of failed builds and what went wrong.

This first one is way old. My focus at the time was procedural generation, and while the road network came out OK, it wasn’t great and created all kinds of situations where roads ended against another road or terminated strangely.   I was thinking about the whole procedure incorrectly. I was building the roads like a tree instead of looking at the map as a whole like a grid. My thought process was to start with roads, make them wind and then fill in the houses around them. I wound up spending lots of time worrying about bizarre artifacts of my process instead of changing the process.

A top down look at streets generated procedurally.
A top down look at streets generated procedurally.

Birds eye view of a second city.
Birds eye view of a second city.

On the ground view from one of the cities. this is after I added placeholder buildings.
On the ground view from one of the cities. this is after I added placeholder buildings.

A good example of what not to do.
A good example of what not to do.

Wrong again
Wrong again

After I got fed up with the street centric map generation I went in completely the other direction. I decided instead of creating the roads first and filling in the houses later, I would create the city blocks first and fill in the roads around those. I took a rectangular map and split it in two. I then recursively kept splitting the resulting rectangles down into smaller rectangles till I met some size criteria. I then filled in the edges around the rectangles with streets. This attempt also marks the advent of noise algorithms into my application, specifically pink noise. I decided during this build that i wanted the population density to play a role in what buildings spawned in what areas of the map, so I used pink noise to generate population densities for each building.

First attempt playing with pink noise for population density.
First attempt playing with pink noise for population density.

A top down view of the recursive splitting.
A top down view of the recursive splitting.

Perspective view of recursive splitting.
Perspective view of recursive splitting.

Street View
Street View

Height and color of each building represented the local population density.
Height and color of each building represented the local population density.

After that I tried an art test. This one taught me that I should probably court some outside talent in creating art assets.  I was really into clean looking low-poly art at the time and thought it might be something I would be able to do, so I gave it a test. Unfortunately my results came out looking a lot more like VeggieTales than than minimalist low-poly. I did however really like the colors that I got. I had used a color palette to create the scene and I still feel that kinda paid off.   This build was also the first one to incorporate the rift. I must admit it was pretty cool walikng around the small scene I had built.

LowPoly2
First whack at aesthetics

A little too cartoony for a zombie game perhaps.
A little too cartoony for a zombie game perhaps.

This one was the last build before I scrapped the project to rebuild in Unreal.  I was working on some very rudimentary AI in these screens. The town was all procedurally generated using a tile based method I’ll go further into in a future post.  There were basic FPS / RTS controllers in place as well as minor game play logic. One thing I really hated about this build was the use of non generic placeholder assets. Most of them I had gotten from the Unity asset store. People who I showed this to payed more attention to the look of the placeholder assets than the actual game play.

AI controlled zombie attacking player.
AI controlled zombie attacking player.

AI controlled human NPC wandering.
AI controlled human NPC wandering.

He will be missed.
A test in which I got trigger happy with an innocent bystander NPC.

There were many other iterations of the game and perhaps if I get time to go through some of my old files I’ll extend this post.  Each version of the game gets better than the previous one. I’m excited to see where this next one goes.

back to blog