September 2015 update….

So I’ve decided it’s finally time to show some Zombox development progress!

Earlier this year I released a mobile game called ‘The Quest Keeper’ (on iOS and Android), which took up all of my development time for a couple of months. It was a much-needed break from Zombox that also allowed me to perform real-world tests on various Zombox tech (for example, the world in ‘The Quest Keeper’ is procedural, and uses the geometry batching system I originally developed for Zombox).

Anyways, for the last few months I’ve been back at Zombox, chipping away at my long todo list (which is slowly getting shorter!). Here are the highlights of what has been going on:

  • The game world code is finally fully unified. If you saw previous update posts, you’ll know that the game world has things like sewers, NPC bases, zombie traps, etc. Those things were previously coded as ‘special exceptions’ to the normal procedurally generated city tiles. For example, in the old code when you entered a sewer, you would be moved to a special sewer tile outside the range of the normal city tile grid. In that special sewer tile there were different ‘rules’ governing how geometry was generated, where NPCs would be placed, etc. Each set of ‘rules’ were particular to which sewer you were in.

Coding those elements in that manner was a quick and dirty way to get them into the game, but it was also a horribly confusing and cumbersome system to manage, update or augment. The reason for coding them that way originally just boils down to naivety on my part. But with all the experience I’ve gleaned over the years from developing my games, I realized it was finally time to clean up all that horrible code (we’re talking many thousands of lines of code, spread out throughout all of my source files…ie, very messy!).

The result of doing that cleanup is that the game world is now much easier to manage and keep track of. For example, I was able to add 15 new NPC shops to the city sewer system in a matter of minutes, rather than the hours and hours it previously would have taken to sort and manage all code exception cases for each sewer. So hooray for clean code!

  • The world mini-map has been updated. Now the color of the zombie markers shows what each zombie is doing. Green = wandering around. Yellow = investigating a sound. Red = attacking the player. This will help players estimate the amount of danger surrounding zombies pose to them, as they move throughout the world.

  • Radiation zones have been added to the city. The closer you get to the giant meteor which crashed into the center of the map, the more you’re exposed to its deadly radiation. Certain medications have also been added to the game which can cure you of radiation poisoning, and eventually certain clothing items will protect you as well. Without those items guarding you though, venturing close to the meteor will result in certain death.

  • Zombie difficulty is determined by proximity to the crash site. The closer you are to the origin of the deadly radiation, the harder the zombies will be. This means novice/beginner players should stick to the outskirts of the city, while hardcore players can find their challenge near the center.
  • Zombie difficulty is visually illustrated by the decay of their bodies. I replaced my old zombie shaders (which were all just varied shades of green), with a new dynamic one that transitions from rotten-looking skin, to completely skinless nastiness, based on the difficulty of the individual zombie. If you’re on the outskirts of the city, where zombies haven’t been exposed to much radiation, the zombies will mostly be spotted and greenish….but if you move closer to the radiation zone, zombie skin will be progressively more decayed to the point where they have no skin at all and look quite ghoulish. This is an easy way to visually signify the difficulty of the zombie you’re about to encounter. This effect, combined with the 60+ varieties of outfits zombies can be found in, makes for a huge amount of visual variation between each zombie.

  • Zombies can bust open doors that are not barricaded. Previously, a zombie could not enter through a closed door at all, and would have to destroy it completely in order to move past it. Now, zombies can smash unprotected doors open with a few hits, which encourages players to take the time to barricade all nearby doorways.
  • Zombies can break any object in their way. Previously, zombies could only attack doors. Now, zombies can attack any object between them and their target, damaging the object until it’s destroyed (or the zombie gets distracted and wanders off).
  • Zombies will no longer spawn inside barricaded buildings. This is a problem that had been bugging me for a while. In past versions of the game, zombies could spawn in any location, so long as that location wasn’t blocked by a prop or in water. This means that if you built a shelter and walked away from it, by the time you return a zombie may have spawned inside of it. But what good is a shelter if it can’t stop zombies from spawning inside of it? The solution to the problem may seem simple at first — after all, why not just tell the game engine that zombies cannot spawn on tiles where the player has built a building? But therein lies the challenge — in a game world where players can build walls in any arbitrary shape or location, how do you even determine where a building is? Or what size it is? Or what shape it is? And how do you perform those types of diagnostic determinations in an efficient way so that they don’t contribute extra lag to the game on mobile devices?

After much deliberation, the solution I found is quite elegant: first, I construct a grid encompassing the entire spawn area. Then, I iterate over all wall objects in the grid area, and mark all grid cells that are located under those wall objects. Finally, I perform a flood-fill over the grid, starting at a known exterior point. Once the flood-fill completes, any non-filled areas are marked as interiors, and zombies are not allowed to spawn on those cells.

If that explanation is not entirely clear to you, here is an animation showing what’s happening behind the scenes. As I construct walls in the game world, notice how they are marked as black lines on the underlying grid (after each progressive update of the grid). Once the walls connect together and enclose a space, the blue flood fill no longer fills that area, and the remaining white area is marked as an interior (which prevents zombies from ever spawning inside in the future). The beauty of this solution is that it requires no complex math or ‘intelligent’ calculations to determine where buildings are and what form they take…it’s really just like using the paint bucket tool in MSPaint.

  • Many new craftable traps, weapons and tools have been added to the game. Here are descriptions of them:


The basic turret can be constructed to aid the player in attacking waves of difficult zombies. It has a high rate of fire, and can be pointed in any direction, and has a limited supply of ammo (which can be replenished with a repair tool).


The auto turret is a computer-controller version of the basic turret. Once built, it will automatically attack nearby zombies. It has a low rate of fire, but its bullets can penetrate multiple zombies at once.

Propeller trap:

Inspired by the propeller traps of Half-Life 2, this trap has four spinning blades which will eviscerate anything in their path. It has limited battery power than can be replenished with a repair tool.

Bear trap:

This is a re-usable trap that does a huge amount of damage to any zombie that steps on it. Once it has sprung, a single hit from a repair tool will reset it and make it ready for use again.

Noise maker:

This craftable contraption generates loud noises which will distract zombies. It can be used to lure zombies into traps. It has limited battery power, which can be replenished with a repair tool.

Barbed snag:

This trap slows and damages zombies that walk over it.

Care packages:

Tossing a care package flare on the ground will trigger an overhead military drone to drop a package containing useful supplies down to you. Care package flares attract nearby zombies, but falling care packages can hit and damage zombies below. Care packages themselves are always locked, so they will require a lock-pick to open properly (or you can just break it open with a weapon – but you risk damaging the items inside).

Remote mine:

A remote mine is an improvised explosive device, similar to an in-game pipe bomb, that is triggered by a call from a cell phone. Use these to generate explosions from a distance, at a time of your choosing.

Proximity mine:

The proximity mine is essentially an explosive bear trap. When a zombie steps on it, it will explode — damaging everything around it.

Automatic metal door:

Unlike normal wooden doors, automatic metal doors automatically open/close when you walk through them, and cannot be smashed open by zombies. They are great additions to any shelter.

After a few more small things to do, the next big thing to do is re-do the NPC system…the goal is to tie NPCs into a quest system, so it will take a substantial amount of work to get that done. In the meantime, thanks for your patience!


31 Responses to “September 2015 update….”

  1. Erik says:

    To be honest…. Just ship it already! It seems awesome already, why not iterate when people can play it and come with real world feedback?

    • Tyson Ibele says:

      Well there are some key things missing still that prevent me from running a beta yet…the main thing being, there is no save functionality, so every time you restart the game you’d lose all of your progress. A few other things as well.

      I want the game to be in a nearly-complete state before letting other people get their hands on it.

  2. Fadi98n says:

    Beautiful update, thank you very much

    I have a couple of questions if that’s ok:

    1.How long do you estimate re-doing the NPC system would take? Would it be as long as unifing the code?

    2. Are you planing on adding snow eventually and snow related things eventually (a heat system, etc.)? The zombie spawn gif looked like snow when it started which looked nice.

    Thank you for this update.

    • Tyson Ibele says:

      1) That’s a good question, since it’s not a problem I’ve ever tackled before (an interactive, dynamic quest system). Unfortunately for that reason it’s hard to estimate time required.

      2) I’ve thought about snow and maybe one day I’ll add it, but for now, no.

  3. Kestrel says:

    Superb! When do you want my money?

  4. Aidan says:

    Wow this looks amazing! Keep up the great work.

  5. Spracky says:

    I’m so excited to see an update! Amazing work!

  6. Flanua says:

    Amazing update! This game looks so cute. Everything you doing is awesome!

  7. Xythe says:

    I fucking love you.

  8. zabek says:

    Hey Tyson, big fan of all your work. a question: What type of update did you make to the code that’s different from your old code? Is there a specific type of programming system that you’re following that you think works better than before? Just curious.

    • Tyson Ibele says:


      So without getting too technical, the main difference is just that every single object in the game now — regardless of what it is — is an instance of a single custom class. All data related to what that object is (position, rotation, mesh, material, etc) is all unified in that manner. And all of those class instanced are stored in a single multidimensional array, that’s organized into a grid that makes up the entire game world. This makes keeping track of everything in the game world a trivial matter now.

      Before, game data was completely disjointed. For example, a lamp post on a street would be referenced and loaded into memory in a completely different way than a barrel in a sewer. And the sewer itself would be stored and loaded in a different way than a chunk of ground somewhere else. So I had all these custom rules pertaining to how that data should be stored in memory and organized. So if I wanted to add a new sewer to the game, not only would I have to model and texture it, but also go through all of my city-loading code and adjust all of those custom rules to account for it. This made it easy to introduce bugs and inconsistencies in the code and was a huge pain to keep track of.

      Think of it a bit like making a piece of artwork: the previous non-unified code was like a collage of different media types forming an image. Maybe some parts of the image are in pencil, other parts in marker, other parts in crayon, other parts in newspaper cutouts. They all formulate a single image but they’re mixed together without much rhyme or reason.

      The new code is like a painting made with a single paintbrush and a single color. The end result depicts the same thing, but it took far fewer elements to create.

  9. Hugo says:

    Been excited since 2012, not planning on losing that excitement anytime soon. The game looks really cool.

  10. Geta-Ve says:

    Wow! Awesome update on the game! I think this is going to be a real winner when you finally get it released!

    I am curious about a few things though; Initially this project started (at least publicly?) around the 3GS era; the iOS market has expanded exponentially since then both in screen size and in raw horse power; my question is, how are you utilizing both of these things these days? Has the increase in either changed the way you’ve approached development to the game?

    This also segues nicely into a question about multiplayer >_> I think previously you had stated that it wasn’t really on your mind simply due to the amount of things going on at once, but now with the new devices, has your opinion changed? Is that something you are reconsidering?

    Anyhoo, if nothing else, as is, the game looks killer. Even if I never get to play it, it is always awesome watching your progress.

    Cheers sir!

    • Tyson Ibele says:

      The advance in technology has actually been a huge relief for me.

      The game started with 3GS support, yes, but as features were added and I developed it further, its technical requirements began to eclipse the devices I was originally targeting. Soon it would no longer run on the 4, and now even the 4S is taken right to its limits in order to run it. Secretly I hope Apple’s release of iOS 10 (whenever that is) will only support the iPhone 5 and higher, so that I don’t have to support the 4S or below. Already I won’t be supporting the 4 or below.

      At the end of the day, the more powerful phones are, the bigger I can make the zombie swarms. Phones get more powerful? Well, now you might find yourself in a swarm of 100 zombies instead of just 50, and so on. My original intention for the game was to have players battling huge swarms of zombies, and so better devices means coming closer to that goal.

      The low-fi nature of the graphics mean that they won’t go out of style just because devices get faster. All it means is that you’ll have a much smoother 60fps experience, even with tons of characters on screen.

      As for multiplayer, unfortunately no matter how powerful devices get, it’s not something I plan to implement. It’s just too big of a beast to tackle at this moment, especially if I plan on releasing the game in my lifetime 🙂

      • Hugo says:

        What if the game gets a Steam release? Could we have multiplayer on the PC version?

      • Xythe says:

        Well I’m not quite sure if someone asked this before, but can you explain your opinion about mod support? I think it is a hard question, because the most game designer does not want that someone will experiment with the designer’s code. But since you don’t want to support an multiplayer feature, can you give us a way to create our own multiplayer game?

      • Geta-Ve says:

        Thanks for the reply Tyson! It must be really rewarding having alot of the restrictions lifted from you over time. Allow you to really make the game you had envisioned.

        Funny enough I am still running a 4S … lol I plan to swap to the 6S this christmas, but, honestly, this phone has been through hell and back with me. Best purchase of my life. Thus far.

        Cheers sir!

  11. Rewdi says:

    Ammagawd! Been waiting for this update 😀 *throws money at screen*

  12. clovelt says:

    It´s great knowing about zombox´s progress! Everything looks great, but just a little thing; I still don´t like how the inventory UI looks… Those bright colors just don´t match the aesthetic, but I´m sure it´s a minimal issue with all these big things left to do… Still, will you ever consider this before concluding the project?

  13. iRYO400 says:

    Hey Tyson! As I understood, you are an indie-developer? I mean you have advantage skills at 2d/3dmodelling, programming, designing.

  14. Benny says:

    Playing The Quest Keeper makes me can’t wait for Zombox even more.
    I’m waiting for your Game since a long time and I’m still looking forward to playing it.

  15. Jorge says:

    Cool beans. Is it guaranteed to come to android and (preferably) Steam or is it still an ios affair?

  16. Adrian vargas says:

    Hi . I follow ur game since 2 years ago, u do a great job, ty 4 do real games like this. ( i know my english is bad). I cant waiting 4 play ZOMBOX.

    Cheers from México.

  17. Roque says:

    You can do it! go go bro! that is an awesome game 😀 sure it will be a classic 😀

  18. Bleehakakaka says:

    I’ve just been prayer over the years that somehow, somewhere, someone will release some magical application that let’s you drag and drop iOS applications and convert them into a flawless Android port.

  19. Xavier says:

    Wow! I thought you leave the project! And now I see that you make a big progress! 🙂


    Cheers form Spain

  20. Enrique B. says:

    Dude this is awesome! I’ve been keeping up with Zombox for a few years now and it’s looking great! I know it’s taking forever and people will get anxious to play it, but don’t worry, you’re doing good by solidifying and polishing the game before releasing it. Not to mention that every time I come by the website and you have an update posted it’s all really cool and detailed explanations of what you’ve been up to since the last update! It kind of gives us fans peace of mind knowing that you’re getting progress and you’re not going silent like a lot of developers do.

    Keep up the great work! Can’t wait to play it, either Beta or finished, I’ll be getting it the second I find out about its release! 🙂

    PS: I know you’re working on it for Mobile, but would Steam also be a possibility? Just curious.

  21. Tynon says:

    Dude love this new update i have previously commented on the last update and i love what you have accomplished in the amount of time you have used.
    If you sell this for $5 i would still buy it just to support you in your next game

  22. Kenneth says:

    Is their stealth? Like I can lead zombies away from my base? In that, will we have options to build a base from a house? Maybe put sheets on windows blocking site from outside?

  23. Onesyboy says:

    I don’t care how long it takes. Tbh, if you made it, it not being good is not an option

Log in or Register

Leave a Reply

Your email address will not be published. Required fields are marked *