TL;DR still not out
TO: SQUADRON 42 RECRUITS
SUBJ: DEVELOPMENT UPDATE 11:02:2022
REF: CIG UK, CIG DE, CIG LA, CIG TX
FAO Squadron 42 Recruits.
Welcome to October’s Squadron 42 development report. Enclosed you will find details on the latest progress made across the campaign, including updates to alien executions, saving and loading, and outlaw interactions.
Thank you for your continued support of Squadron 42.
Throughout October, the AI Content team progressed with the vendor and patron behaviors, realizing the full flow of NPCs ordering, carrying, and consuming food and drink. This gives them a sense of life and purpose, as they’re always busy doing something.
Progress continued on the utility behavior, with AI characters opening crates, taking items out, and putting items in. This was a surprisingly complex task but the various elements are now working well together.
Other tasks involved polishing the quartermaster behavior, making animation pose updates, setting up wildlines, overhauling documentation, and prototyping food eating.
They also began working in chapter 15, which is a run-down location with a different feel from other areas.
Last month, the AI animators continued to refine Vanduul execution animations to ensure they’re perceived as strong and impactful from the first-person perspective, are better suited to be played “on the spot” if the attack occurs in a cramped space, are more believable to be deflectable by the player, and allow players to escape or attack once deflected.
On the perception system side, the AI team implemented functionality to allow them to rate and respond to ‘disruptions,’ which are unexpected scenarios that can be resolved. For example, the lights of a room turning off or an engine being disabled. Players can use this mechanic to try to disrupt NPC behaviors when they haven’t been detected, giving them the opportunity to better infiltrate the level by avoiding patrols and sentries.
Players can also use ‘distractions’ (actions that trigger audio stimuli, such as throwing an object) to cause NPCs to leave their positions to investigate.
“We had to ensure that these events are propagated out to all of the agents within the appropriate area, that they are handled by the perception system, rated against the current threat level, and that the correct behaviors are implemented to resolve the disruptions. The resolution may involve agents going to investigate the source of the disruption, or alternatively, if too many disruptions have occurred, to increase their alertness level. This means that they may take out their weapons, say specific alertness-level wildlines, or respond quicker to subsequent events. We also had to take into consideration that the immediate source of the disruption may not be what the NPC wants to investigate. For example, the agent may perceive that a light goes out, but they would want to investigate the light switch that controls the light, and ultimately, if they don’t encounter the player, turn the light back on again.” AI Features Team
October also saw AI implement rocket launcher and railgun handling. For rocket launchers, NPCs have to consider if the shot will cause explosive splash damage to friendly agents. This check can be disabled using the friendly-fire trait to enable more reckless enemies. For the railgun, they changed how the behavior works in cover. Now, NPCs will start charging the weapon while in cover before emerging to fire. For both of these weapons, the team disabled the standard check to see if the weapon can hit the target, so enemies will continue to fire at the target even when in cover. This allows the player to see that these weapons are being fired nearby and respond accordingly rather than being immediately hit upon leaving cover. As part of this work, they also reviewed the existing shouldered weapon animations.
Continuing with weapon usage, AI Features implemented how NPCs pick up weapons and ammunition during combat. Enemies are under the same ammunition constraints as the player, requiring them to conserve it and use other weapons when they run out. NPCs will evaluate the best course of action in this situation, including switching to their secondary weapon, picking up ammunition, or finding a new weapon altogether. When looking for ammunition, they could take it from boxes, out of loose weapons, or from stowed weapons on dead or incapacitated characters. When looking for weapons, they could get them from racks, find them around the area, or take them from other characters. To implement this, weapons were set up as usables, which allows the AI to search for the best usable that can provide ammo or a weapon. The team had to modify the usable system slightly, including adding support for usables that supply themselves (loose weapons or ammo) and ensuring that usable alignment positions are correctly aligned with gravity when the weapon or ammo falls.
For non-combat AI, the team worked on functionality to support NPCs moving cargo from one location to another, including picking up crates, stacking them on a trolley, moving the trolley to a destination (such as a cargo hold), and then taking them off the trolley and re-stacking them. An existing prototype was also adapted with new tech to provide behaviors that can be used in varying locations to bring them to life.
They also refined their tools to generate better quality cover. This included making cover generation more robust to edge cases and supporting recognition of cover over a certain distance from identified ‘cover edges.’ This allows cover to be generated in a greater range of areas.
Finally, AI Features took the first steps towards implementing ‘buddy AI’ that will support gameplay where the player is accompanied by one or more characters. To begin with, they made a rapid prototype featuring some of the functionality that might be required to generate conversations about what the final form of this would be and how it will fit into gameplay.
Last month, the AI Tech team made several usability improvements to the Apollo Subsumption tool. This included updating the multigraph with feature folders and functions to allow organization from the outline view. For example, the designers are now able to delete and move graphs to different folders directly from the outline view panel. They can also drag a node connection into an empty section of the graph to open the drop-down menu that allows them to create a new task.
Minor usability improvements were made too, including allowing all the entries in the outline view to collapse and the addition of a new filter field in the variable tree view.
They also extended the graph view with a new custom view style. This is currently used to allow Apollo to open, visualize, and edit the Mastegraph files that were previously managed by hand.
For perception, the team worked on supporting audio noise level and audio masking: Audio noise level ensures that audio stimuli that don’t surpass the basic background noise won’t be heard by listeners. New tools were implemented to allow the designers to configure the audio noise level in an area and the type of sounds that should be considered “normal” in that area.
Audio masking makes sure that particular audio stimuli are not perceived as anomalous. For example, explosions in a field where fireworks are tested. This allows the player to use the environment as audio cover when performing actions. For example, firing weapons near a shooting range as to not alert NPCs.
The team implemented light extensions to action areas. These enable the designers to link light groups to an area and automatically calculate whether the state of the environment should be light or dark. This impacts the time NPCs require to perceive a target, making it easier to stay hidden in darker areas.
AI Tech also extended the system that allows the visibility of large objects, such as vehicles.
“Large vehicles can be seen at further distances but we need to avoid approaches that cost too much on the CPU, such as doing raycasts for very long distances. To prevent this, we can now describe the visibility of a large object depending on the degree of visual angle – basically at which distance it has a specific size from the observer’s perspective.” AI Tech Team
This also allows the team to defer the discovery phase of which objects are within range of large objects. This utilizes one query, which then allows each individual to correctly verify the occlusion of the object.
The parameters of the visual field-of-view were also extended to be overridable based on the AI state. For example, allowing pilots to see at a greater distance and visually target on-foot characters.
The team continued extending navigation links to support two main functionalities: Firstly, they enabled usable routing to function with entity links to allow door panels (that are linked to a door) to be correctly used by NPCs. This will allow them to understand which panel they should use to trigger the right interaction.
Secondly, they exposed a way to define the costs of nav-links based on specific conditions, such as increasing the cost for vaulting when a character isn’t alerted or walking. Those costs allow the system to describe how preferable actions are from the NPC’s perspective. For example, a character wouldn’t vault, which is a physically demanding action, if not needed.
Work began to properly allow NPCs to drive ground vehicles. The team are currently verifying the setup of a selection of vehicles to use as reference. They also set up the code to switch to the right nav-mesh when driving a vehicle and select the right path-follower.
Finally for AI Tech, the team worked on the locomotion refactor, which involved integrating current work into different streams to begin stabilizing bugs. They also experimented with foot locking during MoveNet and are currently verifying how to use this functionality on various aspects of locomotion, such as during sharp turns. They also implemented a first frame adjustment for the seamless transition code to improve the entering of usables. This will also play a specific animation at a specific location with a specific pose.
Last month, AI Vehicles worked with Flight Design to deliver a turret battle that occurs early in the campaign. This involved reworking wave 0 that will be used as the standard for the rest of the waves during the whole chapter. This includes a new behavior that consists of Vanduul ships attacking the Javelin turret by picking stunt splines placed by the designers.
In addition, they completed various support tasks for the designers working in different flight-based chapters.
In October, the Animation team continued to improve zero-g gameplay and animate new weapons, including a coil grenade and coil rifle.
They then moved to blocking out restraint animations and created female spec-op and guard animations for the AI team. Blockouts were also done for bin rummaging and the beggar.
For the Vanduul, further work was done on executions, pilot posing, and sharp turns to improve locomotion. Bespoke locomotion was created for the story characters too.
Work was also done on animations for the firing range, and the rig for quadruped predators was tested.
Finally, a three-day mocap shoot was done on the new Manchester stage focusing on stealth takedowns and mastery levels, non-spec-op level combatants, and various social AI improvements to better tie them into their environment.
Character Art continued modeling major navy clothing assets and the Screaming Galsons’ armor. They also began skinning assets for Shubin.
Tech Animation continued to support Character Art, processing the remaining scan data for character heads and creating whitebox rigging for two key models.
In October, the Physics team worked on various improvements, including brush physicalization, which was put into queues of 32 entries each and forced to be processed in parallel. Spawn batch finalization was reworked to wait for all brush archetypes and their material clones to be fully physicalized before finalizing the spawned entities, and the root spawn batch can now be queried from outside of the entity system. A physics event was added for cluster breakage along with an entity event that detaches the corresponding compounded entity. Additionally, various optimizations were made to improve low-level data access and reduce contention. Also, the physics environment is no longer woken during the bulk destruction of brushes unless they have a collider. Lastly, severe stalls during entity deletion as well as the network aspects of breakability were fixed.
On the renderer, more progress was made on the Gen12 transition. A lot of work was done on particles. Among other things, the light atlas stage was rewritten to make use of the material permutation cache, and a lot of code in the GPU particle system was refactored and cleaned up. The particle submission code and its PSO management were rewritten as well. Furthermore, light lists are now managed per scene pass, which will eventually help simplify the tiled shading stage. Additionally, opaque sun shadows for gas clouds, image ghosting, various game post-effects (water droplets, flash bang, ocular migraine, blood vision), the projectile manager, RTT support functionality, and render target debug viz were ported to Gen12. Support for transient scene render passes was completed, and collision checks for resource sets were added. Offline cube maps now use their own pipeline to allow for different feature sets. Lastly, lots of optimizations and cleanups were made all around.
Regarding atmosphere and volumetric clouds, improvements were made to the Gen12 code by adopting the transient passes made available in September. Furthermore, a preview mode was implemented to help lighting artists setting up planet atmospheres.
On the core engine, the team made additional improvements to entity lifetime management. This involved adding code to group objects for lifetime management and how entity deletion is handled on stream out. All legacy entity lifetime code was removed. The entity allocator was changed to be page based. In-engine file mapping support was completed (i.e., faster p4k file access). Initial steps were done to run all game code through Include-What-You-Use to remove unnecessary header dependencies, which should ultimately lead to faster incremental compile times. Lastly, in case of failed memory allocations, it’s now possible to identify relevant code owners and list them in bug reports automatically to speed up bug processing.
Following on from Persistent Entity Streaming (PES), the SQ42 Feature team began implementing the save/load system. Because PES stores the state of all entities in the universe, the team can utilize it to save progress. They’re currently in the first stages of testing saving and reloading, ensuring everything restores correctly.
The Mission Manager app is currently being implemented into the player’s mobiGlas, allowing them to access the mission briefing, current and completed objectives, and a report on how well they did once the mission is complete.
Additional polish work was given to the new character customizer based on feedback from Design. Work continued on the crane mechanic, adding additional modes for varying types of cranes and their functionality. This will allow the operator to attach, drop, and stack crates.
New security-token functionality was also worked on to control access to various aspects of a level.
Last month, Gameplay Story continued using motion-capture data to update scenes. The main scene worked on was in chapter 11, which, due to the environment layout changing, needed a full implementation pass to get it fully functioning. Several scenes were also updated to make them work with the AI characters, who now enter and leave smoothly.
Start and end poses were updated for scenes in chapters four, six, and eight. Some of these had an extra polish pass to make them function better with the player.
Lastly, two new scenes were created to allow characters to work on top of the Gladius. These are still work in progress and will require new mo-cap at a later date.
Graphics & VFX Programming
Last month, the Graphics & VFX Programming team focused on damage maps. This involved fixing crashes and various issues including missing initial damage on debris, incorrect damage map sizes, and inconsistencies between ship sizes. Time was also spent investigating networking and persistence for debris.
Further progress was made on porting gas clouds and CPU particles to Gen12. The Gen12 GPU marker refactor was also completed, and some issues were fixed relating to the hair and hologram shaders.
For the ongoing data-pipeline refactor, the team continued work on SKIN files, allowing compacted, non-split files to be compiled or loaded. They also implemented process groups in support of multiple input formats.
Development of screen space shadows began, which involved adjusting raytracing to account for thin objects. Work was also done on anti-aliased lines for aux geometry (editor debug) and UI (for use on the StarMap). They also added new features for the UIMesh shader (multi-scale texturing, bi/tri-planar projection, smoothing) alongside enabling wetness effects to work with blood, sweat, and tears.
The team closed out RaStar v1 and fixed the remaining bugs and crashes raised by the content teams. There were also various fixes submitted for rivers, and R&D began on water sim and water rendering improvements.
October saw the FPS team focusing on one of the larger locations in the game that spans multiple chapters. They’re closing in on finalizing the last few blockouts in this environment and gameplay implementation is well underway.
With combat AI taking shape, FPS began placing greater emphasis on dialing in enemy confrontations.
The Flight team continued to collaborate with the other design teams to push the first half of the game to a more polished state. Part of the game’s dialogue was written before certain mechanics were in a final state, so some of the tutorials were tweaked to accommodate the final designs. They also worked closely with Narrative to flesh out some of the quieter gameplay sections.
The Narrative team continued with detailed reviews of gameplay chapters. In addition to alterations to several existing scenes to improve clarity, a handful of new scenes had dialogue written and scratch audio recorded. This included a scene with two outlaws debating the best way to breach a locked door.
“A small scene like this serves to provide some flavor and life to the AI combatants but also helps direct the player towards what their next objective is and how to potentially bypass a puzzle. The next steps will be to test the dialogue additions during future playthroughs and make any additional adjustments as needed.” Narrative Team
Development of the dynamic dialogue system continued, which is used by background characters as they go about their lives. This latest pass led to a more concise line set that will allow for greater flexibility with how lines are used to accommodate a variety of scenarios. These background characters are not meant to distract players from scripted character content but provide a general sense of activity and immersion.
The team added names and description strings for a variety of naval uniforms, bespoke weapons, and military gadgets. They also reviewed updates to the military mobiGlas with regards to how mission information will be displayed and began the validation process to ensure subtitles match the dialogue as recorded.
“Sometimes during an actor’s performance, they can adjust a line slightly from how it was written and it’s important to us that subtitles are as accurate as possible.”
QA continued to support Cinematics by reproducing issues found during development and chasing up outstanding bugs. Last month, focus was also on bug validation and reporting alongside recording scenes for review.
In addition, QA pushed general editor testing forward to ensure the tools used by the team are working as intended and the development workflow remains stable. A new embedded role was assigned to allow for more in-depth testing and more concise feedback.
Last month, the UI team continued to work closely with the Vehicle team on the heads-up displays (HUD) and multi-function displays (MFD). This involved adjusting the HUD to incorporate new elements along with reworking the UI style of one manufacturer to give it more character and make it feel more unique.
Now that the Vehicle team has some of the new MFD screens working in-game, a pass was done to improve their appearance and help with the Building Blocks UI setup to create a solid template to work from going forward.
UI also concepted several more interactive screens for gameplay puzzles and made visual and control improvements to the StarMap.
In October, the VFX team continued overhauling the particle library, making the most of several improvements to the particle system to allow for greater flexibility. This includes being able to override various settings per effect in a level, letting the artists focus on a higher quality of effect without having to maintain each instanced version.
Further improvements were made to the new quantum travel effects, with new refractive particles spawning around a ship’s signed distance field.
Finally, the VFX team implemented a ‘task pool,’ which allows the artists to tackle various miscellaneous tasks that have accumulated in the backlog.
“This typically consists of minor bugs and quality-of-life improvements, so it has been great to be able to focus on these things while continuing to support major content and features.” VFX Team