In collaboration with Sledgehammer Games, based in Foster City, California, I supported Call of Duty: Vanguard remotely within the campaign systems team, which was built using Radiant. Along with various editor, asset management and internal .gsc scripting language tools, I was predominantly involved in weapon balancing, attachment variation drops, ammo scavenging, tuning AI behaviours, and setting up a variety of destructible objects.
Inheriting weapon behaviours from the multiplayer team, my role was to tune various attributes of the weapons appropriately for the campaign, whilst ensuring parity to aid with accessibility. I created various spreadsheet tools to aid with balancing, this included differentiating between classes, setting up appropriate engagement distances, determining potential damage output and distance fall off, as well as locational damage to calculate intended time/shots to kill metrics. I also handled hit reactions, recoil dampening, ammo stocks, and handling bespoke instances or unique use cases throughout each mission. Often adapting each of these factors following playtest feedback. I did this for both player-facing weapons, as well as for the AI perspective – both against the player and each other.
I was also responsible for determining which attachments would be valid to use to maintain historical authenticity (e.g. relevant era-specific scopes) and to also not undermine the intent of a given mission or the narrative (e.g. avoiding using sniper scope drops on a mission where the protagonist has a unique sniper rifle). Weapon attachments can come from a variety of sources which included: placed weapons, archetype specific weapons, random drops from fallen AI, and default equipment load-outs. Each case was handcrafted and set up in .gsc script, also accounting for the intended weapons to be used in each particular mission, using bespoke drop weights to ensure variety throughout.
Both of these aspects in turn helped to feed the ammo scavenging system, a feature I designed from the ground up alongside another systems designer due to my previous experience of implementing similar systems in other games. The system dynamically fluctuates the amount of ammo that is given to the player, based on what is in their inventory. The goal was to ensure that the player is much more cautious with their accuracy and should value each individual bullet much more than previous titles. Extended mag attachments are fairly rare occurrences due to their ability to allow the player to hoard ammo and the lethality of each individual bullet was increased to offset the reduced stockpiles. I also worked closely with the UI designer implementing player feedback and prompt functionality, from which I provided numerous bits of feedback and demonstrations of expected behaviours, including edge cases and undesirable scenarios.
Additionally, I defined the baseline accuracy behaviours for AI, for both enemies and friendlies, to allow for the player to not be overwhelmed by damage but also provide an opportunity to retaliate and ensure that relevant AI archetypes remain at their intended engagement distance. The player dealing damage to an AI enemy is also one of the conditions for dropping ammo and we didn’t want to inadvertently starve the player by having a team-mate wipe out too many enemy foes. This was in addition to making the scale of the battle feel much grander, with large waves of enemies firing from cover.
This also relates to one of my initial, but major, contributions which were to set up scriptable destructible objects. Various doors, walls, and barrels throughout the game can be destroyed as they are made of wood – each with their own hit points and damage thresholds. I set up separate collision volumes for each of these objects in order to change functionality as the state changed from intact to damaged to destroyed. AI cover nodes were also linked to this system so that they would take cover and shoot appropriately at things within their sightlines, but they would dynamically begin to shoot at enemies as gaps appeared, or reposition themselves when their temporary cover was compromised. Doors had the additional complexity of changing state through player interaction which was handled through UI prompts that were appropriately placed within the player’s viewpoint and bespoke variations were created for a visual distinction between missions.
All of the above features were set up in such a way that level designers or artists could simply drag and drop these assets in the game but allowed flexibility for bespoke modifications as required.
I was heavily involved in providing feedback for numerous aspects of the game outside of my remit. I provided various bits of feedback for the Midway dogfighting mission that amounted to suggestions for pacing, intensity, and 3CS improvements which were well received and implemented. On Bougainville, a jungle survival mission, I made numerous suggestions about improving environmental awareness and tweaks to the scarcity of resources to make them feel more coherent and special. On Tobruk, I designed an elegant grenade throw mechanic to aid with player perception, signifying the throw arc, and to provide feedback on the ‘cooking timer’ in a single UI projection, supporting the “demolition expert” fantasy. This was all in addition to providing feedback on weapon behaviours to the multiplayer team, contributing to ad-hoc map playthrough sessions, and taking part in the closed internal alpha.
Aside from all of the above, I handled various other ad hoc tasks as and when required which included but is not limited to, the following: reviewing and updating death hints, suggesting a handful of achievements, advising and knowledge sharing on DualSense functionality for PS5, tuning body part dismemberment and associated weapon calibres, creating white boxes for testing features, updating Confluence documentation where applicable, collaborating with the user research team to gather relevant information, reviewing playtest data with a view to making improvements, and communicating with various other team members as required.