A.B.Z.D. was my response to Y.A.Z.D., Yet Another Zombie Defense.
Y.A.Z.D. was a 2014 top-down round-based zombie-shooter, in a single empty map with functionally-identical player-characters.
I wanted A.B.Z.D. to take that idea and run with it a bit further, so I added a cast of four characters:
Wors
- Speed: 800
- Firerate: 0.75
- Ability: Motivation-Zone
- Bonus: Prices are discounted
- Loves to hear about your day
Darko
- Speed: 800
- Health: 50
- Ability: Melee Dash
- Bonus: Speed points worth double
- Keeps to herself
Zhuan
- Speed: 300
- Health: 150
- Ability: Heal Zone
- Bonus: Health points worth double
- Pretty laid back
Major
- Speed: 450
- Damage: 1.5
- Ability: Bloodlust
- Bonus: None
- Wants to be the best
Each of which had complimentary abilities, buffs & debuffs, to be used in an online 4-player co-op game.
You’d start the game by selecting your character and one of two maps:
- A school – The starting-map where the story takes place
- The mall – The first place all four characters go after leaving the school
The School is divided up into 7 unlockable zones, separated by barricades that you have to pay to unlock. You earn money by fighting zombies, and can spend it on opening barricades to new zones, buying perks for your character, buying weapons & ammo, upgrading your weapons and, importantly, placing buildable objects like explosive-barricades and advanced-turrets.
The Mall is divided up into quite a few rooms and long corridors, a lot more spacious than The School but the player needs to travel further to reach any upgrade-machines or wall-weapons.
The players can find various weapons through-out the map, purchasable at points on walls. These points are always in the same place, though the weapon that appears at the given point is randomly chosen from a tier of weapons from 1 to 3, 3 being the most expensive, to guarantee players find weapons appropriate to the amount of money they have as they unlock rooms.
There are several types of weapons, from snipers to submachine-guns to pistols, revolvers, shotguns, rifles, a flamethrower, a grenade launcher, and some others I can’t remember.
The player starts with basic explosive-grenades, though they can find molotovs which set zombies on fire for damage-over-time, and noise-grenades which distract all zombies away from players and player-placed-objects, towards that noise-grenade, which explodes after a given amount of time.
The noise-grenades sound like angry Scottish robots.
Scattered through-out the map are perk-machines which, once the power-switch is found and flipped, can be used by the players to better their characters. They can attain regenerating health at an increasing regen-speed depending on how many tiers they’ve purchased of the regen-perk, they can get movement-speed upgrades, reload-speed upgrades, magazine-size upgrades, and fire-rate upgrades, all of which can be purchased as many times as the player can afford, though at increasing prices.
Players can also find The Deluxifier, essentially the Pack-a-Punch machine from Call of Duty’s zombies series, though it randomly upgrades one stat of a gun each time you use it. Potential upgrades are firerate, magazine-size, reload-speed and damage. Each time the player upgrades one of their weapons, the name of the weapon is procedurally modified to reflect the change, and a speech-bubble appears above the character’s head to notify them of what upgrade they got.
There are a few different types of zombies:
- Regular zombie, runs at a normal speed.
- Small zombie, runs faster than regular zombies but does less damage and has less health.
- Large zombie, runs slower but has more health & does more damage.
- Charger zombie, covered in metal plates at his front, his only weakness is his back. He charges at you to do damage equal to the speed he’s built up, very dangerous in hallways.
- Acid zombie, shoots balls of acid and leaves an acidic puddle on death.
- Roundo-boy, an angry orange ball with a fuse that rolls towards you with the intent to blow itself up. Explodes on death.
- Stealth zombie, he looks like a dark shimmer when he moves but appears when he attacks.
- Bomber zombie, he throws grenades at you and drops a live grenade when he dies.
- Hitscan void zombie, has a rail gun for a head, aims then fires an insta-death ray. Drops a void-field on death that, after a second, insta-kills anything inside. Very dangerous.
- Projectile void zombie, fires void-projectiles that create delayed insta-death void-fields on hit. Drops a void-field on death.
- Magneto-shield zombie, has a high power magnet on its back that prevents any projectiles from passing through around him. Can be killed by melee attacks.
And now some details on the development of A.B.Z.D.
The game was made in Unreal Engine 4, with some models being made in Blender 3D while most of the characters and animations I grabbed from/with Mixamo. The textures are, largely, from Quixel. A lot of the art assets in the school were scanned, they’re photogrammetry.
I setup the speed & health of the zombies to increase as the rounds do, naturally, and for a random-ish song to play from a selection of songs every 4 rounds. There was an issue with zombies piling up in doorways as they tried to navigate towards the players, since they never saw each other as obstacles. Changing their navigation AI to a crowd-based one that can recognise other actors helped with that, though I ended up adding an auto-kill timer on zombies that stood still for too long.
If the players ran around the map too much then zombies that spawned on one end would have to walk all the way to the other end, leaving the players doing nothing for quite a while. I needed to setup a system that kept track of all player-occupied zones and their adjacent zones, to remove and respawn zombies closer to the players.
The school map is complete, it’s been filled with art assets and locational sounds, along with post-process volumes. The mall map is only blocked out in BSP, though it’s different in the sense that there’s a lot more double-doors (doors you purchase from one side of a room, that open a door on the other side of the room), and it also featured zombies spawning from the floor, not from dark rooms. Wall-weapons were also completely randomised such that any tier weapon could appear in any room.
I also did quite a bit of UI work in A.B.Z.D., in creating the building-menu between rounds, options menu, post-game-stats-screen, the controls-menu, the character-select screen, I even custom-made the font for the game.
The cursors are all unique to each gun, and they’re animated to reflect what the player’s doing, from shooting to reloading. Their animation is in fact, a touch procedural, so are the zombies’ run animations. The cursors would do a spring-type spin animation anytime the player reloaded, timed to match their reload speeds automatically, and the zombies actually have 3 different movement animations which I dynamically interpolate between depending on their current run-speed. The normal zombies, at least. The special-zombies mostly have unique animations too.
There’s still a bug in the pause-menu where if you press Esc instead of click the Resume button, then the player’s cursor picks up the buttons from the pause menu as if they’re still on-screen.
The sound was fun to work with in this project, I managed to get my hands on a lot of sound files from the GDC conferences around that time, so I could really have fun mixing it all together in-engine. I also setup the sounds of weapons to dynamically sound more sci-fi, the more deluxified they became.
Networking worked up until Alpha 0.3.
I’d had the game working in multiplayer in Alpha 0.2, then made Alpha 0.3 focusing solely on making content that worked in singleplayer, with the idea that I’d make 0.4’s focus to bring this new content to multiplayer.
This was all before I knew about git, or even source control. Somehow, between 0.2 and 0.3, I’d destroyed the netcode beyond repair, and I didn’t have any backups or old commits to revert the codebase to. I tried for weeks and weeks to get anything networked to function again, to no avail. Since this game was very much an online co-op game, this was the death of A.B.Z.D.
Download
If you’d like to play the last working version of A.B.Z.D., then you can grab it from this (hopefully alive) link:
https://drive.google.com/file/d/18O1NWw7TnLrJk0CLk8MfLDqY01Ml3HMR/view?usp=drive_link
Controls:
- Move: WASD
- Shoot: Left mouse-button
- Melee: Right mouse-button
- Character-ability: Left-shift
- Reload: R
- Change weapon: Mousewheel, or press the appropriate number on your keyboard from 1..9
- Interact: F
- Pause: Esc
- Throw grenade: G
Please close the pause-menu by clicking the Resume button. Pressing Esc to close the pause-menu results in a bug where the mouse still picks up the pause-menu buttons. If you do this by accident, pause the game with Esc then just click Resume and it should clear up.
There’s a non-zero chance that zombies will suddenly stop spawning in later rounds.
If you want to survive long, turn on the power and buy a couple ranks of Regen-Z to regenerate your health, and grab a stronger weapon like the Tactical Shotgun, AR-15, Gauss-Rifle, M14 or Sniper Rifle. Try to deluxify your weapon and get as many perks as you can. If you deluxify a weapon too many times, there’s a chance it’ll explode.
My highscore is round 31.