A taste of what’s to come…

Posted in AI, Characters, GUI, Items, Press, Procedural world, Zombox on July 20th, 2016 by Tyson Ibele

So a huge amount of time has passed since the last update.

The good news is that a ton of stuff has been added to the game, and I’ve been working on it harder than ever…I just haven’t posted any updates because I’ve been focusing on getting a playable version of the game ready for beta testing. I’m also knee deep in reworking the NPC/story AI, and want to hold off on posting any real updates until the NPCs are done….since they’re the biggest hurdle left in the game’s development.

However, here’s some stuff that I’ve done since the last time I posted:

  • I’ve added a character upgrade that allows you to pick up, carry and throw zombies
  • there’s a fast-travel subway system you can unlock throughout the world to travel quickly around the map
  • on-screen indicators alert you to nearby hideouts and landmarks
  • many buildings now have basements you can explore
  • there are 4 new hero zombie types, each with special attacks and much higher difficulty
  • a new achievement system was added with 90+ unlockable achievements
  • the Zombox world map has been expanded to be nearly twice as big as before, with tons of new areas, islands, etc
  • crafting system improved: you can build bridges over water, you can build doors into empty doorways, etc
  • craftable structures must now be constructed from the ground-up, after placing them in the world
  • the original book-reading system for unlocking new crafts has been improved
  • structures that require power now indicate visually – through animated electricity textures – whether they are functional
  • new craftable tesla coil trap zaps nearby enemies with electricity
  • save data is now much more efficient – save files are 5x smaller than before, on average
  • items dropped on the ground are now saved to the location they are dropped at, so they won’t disappear when you walk away
  • bombs/molotovs/etc you throw now have an on-screen indicator showing direction of throw, as well as time until detonation

As you can see, I’ve been busy! Once the NPC/story AI gets closer to completion, I’ll post some images and videos of the things listed above so you can see them all in action.

Upgrades, vehicles and perks

Posted in Characters, GUI, Items, Zombox on November 20th, 2015 by Tyson Ibele

While playtesting the game over the course of development, there were a few nagging things that I’ve finally got around to fixing.

Firstly, the old upgrade system was very limited, for several reason:

  • Each upgrade functioned as an on/off switch for a particular character stat. There was no room for focus or progression…once an upgrade was purchased, there was no way to invest in it again or boost its value.
  • The upgrade window itself was limited to 5 upgrades per category, by design…meaning it would need to be overhauled if I wanted to add a 6th upgrade to any category.
  • Upgrades themselves were a pain to implement, since each one required a full looping animation to be displayed beside its description. This looked nice but meant each upgrade took a lot of time to implement.

The new system solves all of these issues:

  • In the new system, each upgrade can be progressively boosted several times. So you can pour lots of upgrade points into a single upgrade type (for example, firearm damage or walk speed, etc), or spread your upgrade points out between many different upgrades. This allows for much more precise character customization.
  • The new system looks similar to the crafting help panel, and an unlimited number of upgrades can exist for each category.
  • In the new system, upgrades are displayed as unique icons, rather than animations, so adding new upgrades is very easy and requires minimal artwork.

Overall, the new system looks and functions much better than the old system. Also, there are 54 different upgrade types and about 275 total upgrade possibilities….in contrast to the 50 total upgrades of the old system. So I think the new system will allow players to have a lot more fun testing different character builds, and feeling the satisfaction of progressively upgrading various character proficiencies over time.

Secondly, vehicles have been completely re-written. Unfortunately, with the release of Unity 5, WheelColliders changed in a drastic manner. I previously relied on them for all vehicular motion in the game, and since I could never get the new WheelColliders to function the way I needed them to…I was on the brink of removing driveable vehicles from the game entirely. But while digging around with alternative solutions, I discovered some legacy Raycast-wheel scripts written by an absentee Unity developer named Forest Johnson. I was able to modify his code in such a way that vehicles are now working again, using Raycasts instead of WheelColliders to simulate proper tire friction and velocity. The benefit of this system is that it won’t be made obsolete if Unity devs change the inner workings of WheelColliders again, and I’ve found it to be more stable than the old WheelColliders, because I have full control over all friction settings and am no longer at the mercy of finicky WheelCollider physics.

While re-doing the vehicle motion system, I also implemented the fuel system for motorized vehicles. Any vehicle with a motor now requires fuel before it becomes driveable. Each motorized vehicles has a special fuel slot in its GUI interface, allowing players to re-fuel vehicles with ease. Fuel can be purchased from NPCs, retrieved from care packages, or distilled manually from toxic sludge in the craftable chemistry lab.

Finally, along with hundreds of other little tweaks and changes that I won’t list here, I took a second look at the item perk system previously implemented into the game, and improved it. It used to function similar to the old character upgrade system….once you perked an item, that was it…you could never improve the value of its perk and it was set in stone. The new system, however, is progressive. Items can be continually combined over and over to increase the value of the resulting perks. So instead of two weapons combining to make a perked weapon with a static perk value, you can combine weapons over and over to progressively increase the value of the resulting perk. This means that just because you come across multiple instances of a particular weapon, that doesn’t mean those instances are redundant. Having this progressive perking system means players won’t feel disappointed if they have a large number of the same weapon type, because those can all be combined to create a super powerful weapon with maxed out perks.

Thanks for reading, and stay tuned for future updates!

 

September 2015 update….

Posted in Characters, Items, Procedural world, Zombox on September 18th, 2015 by Tyson Ibele

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:

Turret:

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).

Auto-turret:

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!

 

AI update…

Posted in AI, Characters, Zombox on December 27th, 2013 by Tyson Ibele

So now that the old navgrid pathfinding system has been replaced by the new navmesh system, I’ve gone in and re-written all of the AI code for npcs and zombies.

The old code was messy and relied on too many navgrid functions to simply adapt to the new system, so I started fresh. I’ve now unified all AI-related aspects of the zombies and NPCs (rather than have separate AI code for each), and optimized things like the flocking system and Line-of-Sight checking (using kd-trees and BVH trees, respectively). This allows the game to run faster with more zombies on screen at once.

While the iOS version of the game will typically have around 50 zombies visible at a time max, I benchmarked the new code with 650 zombies at once and it still runs at +30fps. Keep in mind the old code could handle around 200-250 before getting too laggy. So it’s quite an improvement!

Here’s an animated gif showing part of a group of 500 zombies crowing around the player/environment, using the new AI system (keep in mind for illustration purposes, their attacks have been disabled):

 

 

October/November development info dump…

Posted in AI, Characters, GUI, Items, Procedural world, Zombox on November 29th, 2013 by Tyson Ibele

So it’s been almost two months since the last update…I guess that means it’s time for a new one!

I’ve done a huge amount of work on the game in that time…..here’s an overall outline of the new stuff, followed by detailed explanations of each one:

Front-end features:

  • weapons now have durability
  • individual items can now have perks
  • the ailment system (hunger, fatigue, bloodloss) was completely redone.
  • new shaders on everything allow for more precise damage decals

Back-end changes:

  • item import system re-written
  • character controller re-written
  • vehicle management system re-written
  • navgrid pathfinding replaced with navmesh pathfinding

Click any of the following images for previews of some of these changes, or click ‘Read More’ below to see all of the explanations in the full post.

Read more »

Swimming…

Posted in Characters, Procedural world, Zombox on October 11th, 2013 by Tyson Ibele

So, it used to be that when you’d jump in water you’d immediately die. But that’s no fun!! So….

 

As you can see, you can only climb out of the water if there’s nothing blocking the ledge in front of you.

Also, I’m verrrry close to having all of the refactored city generation code finished. Hopefully after that point, I’ll be able to post more frequent updates!

 

Fainting, hunger pains and more…

Posted in Characters, Zombox on February 15th, 2013 by Tyson Ibele

Smaller update this week because most of what I worked on was just optimizing code…

The ailment system has some new additions:

  • When your character is bleeding, he’ll now attract all nearby zombies
  • When your character is too sleep deprived, there’s a chance he could pass out. This leaves you vulnerable. Clicking your character repeatedly, however, will slap him back awake
  • When your character is too hungry, he’ll clench his stomach to ease the hunger pains. This prevents you from using weapons until you eat again (although you’ll still be able to attack with your fists)
  • When you’re suffering from one or more ailments, you’ll slowly become delirious. This will cause the screen to wobble and your character will stumble around, unable to move in straight lines

Special attacks and attack bonus upgrades are also disabled while you’re in the later stages of suffering from any one of the three main ailment types.

Also, all 900 item icons were re-rendered at double resolution to make them look crisper at higher (retina) resolutions.

I’m also thinking about adding some food/sleep/health bonuses, that will give the player extra damage/speed/defense bonuses when you get extra food/sleep/meds. That will help to balance things out so you are inclined to eat/sleep/medicate yourself more often — not just to prevent death.

Eat, sleep, kill…

Posted in AI, Characters, Zombox on February 1st, 2013 by Tyson Ibele

So I’ve got all the new zombies integrated into the game now, as well as all of the various different behaviors they can exhibit.

Zombies can now also get their heads crushed and destroyed, their arms ripped off, and their legs removed (forcing them to crawl after you). Depending on the occupation of the zombie, it may also carry a weapon or have extra armor. Zombies that wear helmets have to have their helmet knocked off before they’ll take any bodily damage.

There’s also a new three-tier wellness system I added (which replaces the old hunger system), which keeps track of your hunger, tiredness and blood levels.  Beds that are found (or crafted) can now be slept on, and sleeping can also regain some HP depending on how tired you are when you fall asleep. Explosions and zombie attacks can also cause you to bleed out now, and if you do not find medical attention after the bleeding starts you’ll slowly lose HP and eventually die of blood loss.

Other various tweaks to the UI have been made, like popups showing important information and the amount of HP lost/gained after an injury/heal.

I’ve also optimized a lot of the background functions controlling the AI. The A* pathfinding algorithms now use about 40% less memory and are faster as well.

Here’s a youtube video showing most things mentioned above. Only thing to keep in mind is that the zombies in it are just generic neighborhood zombies, so you won’t see any of the ‘special’ ones like animals, clowns, swat members, etc…but don’t worry! They’re still in there!

The horde…

Posted in Characters, Zombox on January 4th, 2013 by Tyson Ibele

So I’m done creating the various zombie types that will appear in the game, and I’m officially sick of painting textures!

Some of these will only be able to spawn in certain areas, but others (the more generic ones) will be able to spawn anywhere.

Next thing on the todo list is to create their various special attacks and behaviors, and incorporate them all into the zombie spawning engine.

(Click the image for a full-size view)

Zombies of a feather flock together…

Posted in Characters, Zombox on December 8th, 2012 by Tyson Ibele

So one of the things I’m currently implementing in Zombox, is a more interesting world and more interesting types of zombies.

Currently, the game features a plain city with a single zombie type of various sizes. I displayed a teaser image of the new zombie animals in the last post, but I’m also adding all kinds of other zombies.

The new city is going to feature more interesting ‘zones’. Farms, shipyards, marshes, graveyards, etc. And each of these zones will feature unique zombies relevant to that specific zone. Some of these zombies will also have special behaviors and attacks to keep things interesting.

Here is a teaser image of some of the new zombie types. I still have about 25 more to make. If you have any suggestions for cool zombie types, post them here and they might make it in the game!