Random Zombie Game Entry Post Mortem

Posted by
January 6th, 2012 1:59 am

Just a note, this is my first LD/Game/Postmortem. Thought you would want to know.
Here is a link to the entry
When I decided to enter this LD I knew it was impossible. I cant make a game in two months much less two days! But since it was a challenge and a lot of people were doing it, that motivated me into trying. Even if the result was a cheap, I wanted to participate anyway.

What Went Right

  1. The Idea
    I decided to go for the simplest, most exploitable but also fun concept that fitted the theme(barely, but what can you do about that?)
  2. The Tools
    About the tools, there werent many tools. The game was written in C#, using OpenTK for pretty much everything. The graphics were done in some icon drawing program, the audio was done in Sfxr. And the readme file, which absolutely nobody has read, was done in notepad.
  3. The Graphic Assets
    The player, the zombie and the bullet sprites were done in about three minutes. That helped a lot later in testing. The city tileset however, took a little longer, but also went pretty fast, mind you its mostly copypasta. The icons, for zombie and brain counter, took a little longer. Since they were larger than the rest and a little more detailed. But that also went pretty quick and the result was fairly good.
  4. The Graphics “Engine”
    I used OpenTK, and so OpenGL. The first thing I realized about making the graphics engine is that, I dont have time to make a graphics engine. So, pretty much everything in the game is rendered used the good old immediate mode. Which I love, by the way. For the tilesets and sprites, since they were divided into a grid, I used a single method to render a individual tile from a texture. There was no need for scaling or rotation, pretty much everything was shifted and drawn. For the font, which was just the numbers, there was another method to convert integers into graphics. Pretty simple too.
  5. The Zombies
    I admit, at first they werent “going right”. Their “AI” was pretty much forcing then into running straight into the player, and so they all got in the same spot at once. Not very nice. But then I added a little randomness, instead of running straight into the player the zombies run straight to a random point around the player. And in case the player isnt near them, they go after a random point around themselves. I am actually amazed it works so well.

What did NOT went right

  1. The Audio Assets
    If there is one thing I learned about sound effects last year is that no matter how cool they sound when played once, when you start playing them 100 times per minute they sound completely different. And because of that I had to keep hitting sfxr export button like crazy. Clearly, I had not time to begin thinking in music. I have no music talent, so there is no way that would have happened. They ended sounding good in the end, or rather “fitting”, because the game looked pretty pixely and the sound effects sounded right for it.
  2. The Audio “Engine”
    Ok, I’ll be fair. I never put audio in a single program in my whole life, not even sketches of games. So I had absolutely no idea how to do it. I was even considering not putting it at all. But then I saw that OpenTK also wraps OpenAL, then all I had to do was some shameless copypasta from the audio loading example, about twenty lines, mind you. In the end I got the audio working. I also learned that audio is a lot more problematic than textures. I didnt need any texture class but for the audio, I needed it.
  3. The Collision Boxes
    There are none. The collisions are hardcoded, as pretty much everything else is. The main problem with the collision is that the bullets were passing right through the zombies. That was not good. Also, most of the time zombies would stand right before the player and do no damage at all, this still happens when there is only one zombie, but I’m talking about 20 zombies right in your face not chewing your brains off. Thats just wrong. The first fix I could manage was randomize the bullet direction. Then I realized I couldnt do that, because they would go way off the aim, since I was using integers for positions. The solution for bullets was then just placing the start point around the player and not the player center, that would make it easier to hit zombies that were just a pixel off your aim. The city collision is pretty simple, because the whole city is a single boolean array, I just had to divide the position of everything to know whether there was a building there or not.
  4. The City
    The whole city, every one of them, is just an abstract grid of buildings that look like a bomberman level in more ways than one. To give some variation I added a random generation factor, that nobody has ever noticed. Turns out the random generation isnt very random, but it works anyway. The city itself is a boolean array, so to make the city graphics I actually have to check each of the four corners of everything and decided in a if-else hell which tile to render. The good thing about this is that I didnt need to design any levels, the bad part? I needed to code a thing that makes levels. And this was the single thing that took MOST of the development time(no joke).
  5. The Difficult
    So, you are a blue guy with a gun that shoots red bullets in a violet city filled with green zombies. All you got to do is kill them, how hard could that possibly be? Very hard, apparently. The game only has 10 levels with hardcoded difficult parameters. But nobody seems to beat all of them. Level 6 is the average or so it seems. I also can get to the level 10, but not past it. The bonus level, after the level 10, is there. I know it because I cheated tested the game. In case you are asking yourself “How can I make my zombie game so difficult like yours?” here are a few tips: Make more zombies, make your gun weaker, make the zombies regenerate faster(yes, they do regenerate!), make they bite stronger, make the player brains regenerate slower. There you have it.

The Best Part: I made a game.
The Worst Part: ┬áNot many people played it…


Leave a Reply

You must be logged in to post a comment.

[cache: storing page]