ZA4 (as known colloquially) is the latest main installment in the popular sniper elite spin off zombie horde shooter. I was responsible for a number of different features but you can find some more detailed info of the more substantial features I worked on bellow.
Special Melee Abilities
The game gave the player special melee abilities (essentially ultimates) and the various player perks that can be equipped to customise play styles.
Each of these abilities was:
Designed with a set of use cases in mind
Such as crowd control, single target damage or creating windows of opportunity by stunning enemies.
Had tradeoffs
E.g: the divine blast attack could heal the player by flat value up to a max threshold for each enemy caught in the radius but did no damage to enemies.
Were complementary to the various items and weapon upgrades with which players could create synergies with.
One example of this synergetic quality is the hardened perk which reduces incoming melee damage, mitigating some of the risk when approaching enemies at melee range to deliver a melee attack.
Apart from damage values they were mainly balanced based on:
Animation speeds/duration
Cool downs after triggering
Different AI hit reactions depending on outcome and AI type but some AI types were invulnerable to said reactions.
Defining angles of motion for sweeps, radii (for AOEs), attack ranges (using “attack boxes” where we check for damage).
Damage time windows defined on animations.
One of the more interesting challenges I had tackle came from one of the enemies I was responsible for balancing, the Zombie Sniper.
He was designed to pressure the player utilising high damage long range attacks while relocates between predefined high vantage points predefined by level mark up.
Even though the enemy was balanced to take a certain time to acquire targets (while cycling their aim at a random offset from the player position within a specified angle) due to the enemy’s hit and run tactics employed at distance, players kept getting attacked from angles outside their FOV without any prior warning or feedback which frustrated everyone.
The solution was multi-layered but simple and required work from multiple disciplines to come together to effectively pull off.
We essentially added a number clear visual tells (such as scope glints and an aiming laser) to indicate when the enemy was taking aim at a player in conjunction with a non-diegetic sound effect that would serve as warning that they were being targeted. This also had the unexpected benefit of creating a sense of panic adding further tension to encounters!
Zombie Sniper
Another AI specific feature I worked on was to define the various behaviours of friendly NPCs in and out of combat.
NPCs encountered during gameplay could engage in combat with enemies and die if attacked. This enabled them to respond to threats more intuitively and make them look/feel cleverer.
One of biggest aspects of that was to define enemy target prioritisation that relied on enemy variants, NPC view cones, distance to enemies and any damage received from enemies to calculate a score which was assigned to enemies.
The system worked with threat level weights assigned to different enemy types to differentiate their threat level, the one with the highest number was considered more dangerous and therefore a priority.
For enemies in very close proximity to the NPC and/or are dealing damage to them, their weights base increased by adding a certain predefined number allocated to the aforementioned conditions.
Friendly NPCs would ignore threats with too much of a pitch angle, and they preferred targets that are in a preferred Arc in front of them.