Here is what has been going on in the SQ42 development toward the end of last year:
For Squadron 42, AI Content focused on the deck crew and security AI behaviors.
The deck crew activity brings life and movement to hangars and landing pads, with each character being assigned a specialized role, including:
- Ordnance: Responsible for a ship’s weapons and rearmament
- Mechanics: In charge of repairs and maintenance
- Air Traffic Controllers: Assigns landing zones to inbound craft and more
The next step is to build on the basic functionality to make the whole crew work together to restore full functionality to damaged ships and vehicles.
The security behavior controls player and NPC access to specific areas, with the team investigating how to use the reputation system to determine where characters are allowed to go. For example, guards can now check the criminality, rank, and affinity of those who approach and act accordingly, whether they deny or allow access, or salute a character of higher rank. The first implementation is a military guard, but this activity will be used for bouncers and ‘mall cops’ in the future after additional mo-cap has been processed.
The past couple of months saw AI Features focus on improving Human combat. This involved adjusting the perception systems to support NPCs perceiving dead or incapacitated bodies and implementing a behavior so they react as intended. If not already in combat, the first AI to find the body will go and check on them and then trigger investigative behaviors to search for the perpetrator. In the future, some incapacitated bodies will be able to be revived, healed, or released from captivity by an appropriate agent.
In support of the weapons training behavior, which includes using firing range simulators, the AI needs to be able to target neutral, non-agent targets tagged for a particular lane so that different agents can use simulators at the same time. This involved updating the observable and perception components to make them more data-driven and compatible with the firing ranges. These changes also make it easier to support other targetable objects in the future, such as objects that agents might want to sabotage or destroy to further the gameplay.
For Vanduul combat, a section of gameplay was completed where enemy perception is reduced when searching for the player. This led to discussions of how to implement low visibility and other sense reductions across the board. They then prototyped the initial implementation for this specific gameplay use, which will also be used as a springboard for fully developing the feature. Vanduul perception and investigation progressed too.
On the animation side, the team continued work with mo-cap for cowering and surrender animations, hit reactions from different stances, the speed protocol of animations for dead-body reactions, and Vanduul attack and search animations. A lot of data requires polish and integration into existing animations, with particular care being made to check that animations start and end in poses consistent with the most common use cases so that blending is as smooth as possible.
Towards the end of the year, Animation worked on Vanduul and Human combat and made improvements to Human AI locomotion.
The Facial team continued with quality passes on animations affected by improvements to character head geometry, while the Mo-Cap team supported a story shoot and are currently solving that gathered data.
Gameplay Story worked alongside Level Design to implement and correct various story scenes that play throughout gameplay.
The SQ42 Character Art team focused on completing the Navy faction, which involved updating and finalizing major characters and outfits. The Navy makes up around half of all characters in the campaign, with the majority being ‘hero’ tier characters, so it will be a significant milestone when complete.
For the Cinematics team, the end of the year involved continuing larger staging tasks and progressing with scenes started at the beginning of Q4.
For the opening chapter, the Engine team delivered a cinematic-specific ship object container for use with VFX. The required effects are packaged into the ship itself so aren’t as demanding on performance, allowing several to be added to a scene without affecting performance. The ships don’t have any features or mechanics linked to them, so they can be fired upon or destroyed without creating issues elsewhere.
An escape pod was reworked to give a better view outside, while work progressed on a scene involving a tram.
The team improved the way conversations are hinted at and then triggered, creating a speech-bubble-style icon to show players important characters they can talk to in more populated areas. As players can interact with most crew members, this enables them to find key characters and conversations without approaching every NPC. They’re currently deciding how the display will be oriented and how to lead players to the ideal approach direction for specific characters.
During the last two months of 2021, the Physics team worked on a variety of topics. Quantum grids were changed to use one per solar system. They also received support for box queries. Grid overlap checks were unified for planets and other entities, and grid transitions were improved to allow a natural transition into grids that aren’t a direct parent/child of the current grid to transition from. Moreover, physics constraints received support for limiting the gravity tilt angle and work began to support structural joints on CGAs. Also, a quantum step function for spaceships was implemented and entities tied to a rope are no longer unnecessarily woken up when the rope becomes slack.
For optimizations, physics post-step notifications and networked rigids are now processed in parallel. Similarly, vehicle hit processing was moved to allow parallelization. Cross-grid collision detection was optimized to avoid expensive geometry checks as much as possible, and asteroid fields now use the faster hash function and cache physics proxies of their occupants to prevent redundant component lookups. Lastly, physics events are now more efficiently deleted after being processed.
On the renderer, further work was done on the transition to Gen12. Progress included improvements to instance buffers (indirections on GPU removed, support for offset-based buffer binding, support for different buffer layouts) after they had previously been optimized in October. Furthermore, shadow support for lightweight render nodes was added. Lightweight render node decals were also ported to Gen12 and projected decals were fixed. A G buffer copy pass was implemented, unnecessary GPU updates were fixed, and shader stage visibility was improved to compile and bind fewer stages. Render passes are now always submitted via render graph and support a fallback pass in case any required PSO isn’t compiled. Fog volumes and skybox rendering were ported, clip volume rendering migrated, render proxy shadow enabled, and color grading refactored for Gen12. Lastly, the sorting of PSOs was tweaked, resulting in significantly fewer API calls during rendering.
Regarding atmosphere and cloud rendering, R&D on the reprojection of frame data without the need for motion vectors was completed but didn’t yield satisfactory results. Therefore, the implementation will stick with the current reprojection scheme for the time being. To improve image quality nonetheless, research started on noise reduction of the original raymarch results that are fed into the filter chain to produce final full-resolution images. Results look promising and will hopefully be shared in a coming PU release. Additionally, irradiance computation for atmospheric lighting was improved; it now better integrates ground albedo and reflected sunlight. Lodding and fade out of ground albedo was also improved, which is important for large objects in high orbit. In general, code was unified in various areas and prepared for integration upstream into the main development branch as preparation for the coming transition of all atmosphere and cloud render code to Gen12.
On the core engine side, the team submitted the first draft of entity-centric component update scheduling, which is already showing promising performance results. The scheduler now also catches and reports invalid dependencies and provides options for various update processing scenarios (client/server only, etc). The commonly used performance stats (r_displayinfo) are being reworked. PageHeap (our heap to track memory corruptions) now supports dev team filters so issues can be more easily assigned to the owners of related code. Vis area culling received additional improvements and now better handles invalid shapes. Additionally, care was taken to ensure the engine’s exception is correctly invoked in case of stack corruptions reported by specially prepared game binaries (typically for debugging certain issues during PTU). The localization manager’s loading code was optimized, and the engine now collects GPU timings as part of its profiler telemetry data that can be consumed for analysis by the external profiling tool. Lastly, investigations regarding EASTL integration continued.
The teams also looked into compile-time optimizations. Some of the changes consist of the removal of unnecessary headers included in common header files used throughout the project, a cleanup of platform headers, removal of various boost cruft and removal/replacement of expensive unnecessary macros, reimplementation of a recursive helper template by an equivalent constexpr, and the externalization of huge if-else chains. Moreover, compile times were re-analyzed via clang and code file was redistributed to uber files accordingly.
The SQ42 Feature team continued developing the in-game character customizer, improving support for head selection and hair, and supporting the Design team with transition animations and the user interface.
They undertook R&D on the conversation inner thought, primarily on how it appears when players approach an NPC and whether there are any restrictions on where it triggers from. They also optimized some cinematic-heavy scenes, including simplifying ways to create ‘lightweight’ vehicles, improving multithreaded sequence batch updating, and checking they’re not loading more than necessary.
Gameplay Story began November updating poses to maintain and polish several scenes.
They then received a significant amount of mo-cap that was shot at the end of October, which allowed them to make a number of anticipated updates to several scenes across various chapters.
They also overhauled one of the walk-and-talk sections in chapter 5 to give them greater control of the animation. This took a lot of work but helped the chapter progress well.
They also took on two new scenes in chapter 14 that take place in a busy environment. They started their pass prototyping the other animation and activities going on around the scenes themselves.
A new and improved turret metric was devised, allowing the team to confidently update scenes featuring turrets, and they began implementing new audio and face and body animations into random-to-NPC scenes.
“It’s been surprising to see how much final audio improves a scene, and it’s great that our NPC characters can now reply to the cast characters.” Gameplay Story
The Graphics team completed a significant amount of work on shaders and materials towards the end of last year, with one of the main focuses being updating volumetric water lighting so it works in a similar way to the volumetric fog model. There were also several bug fixes for water volumes in general. The hair shader also received attention due to updates to the hair clip volume interaction and efforts to prevent artists from having to rework assets through emulating the old visuals with the latest shading model. They completed the shader conversion from the old DX9 style too.
Specifically for SQ42, the team supported Cinematics by optimizing letter-box rendering in cutscenes, investigating issues with camera cut brightness, and looking into image stabilization for offline rendering.
For Gen12, the team implemented a fallback rendering system called ‘pass group fallbacks’ for use when the shaders are compiling. For Vulkan, they continued with the GPU marker refactor, adding API versioning and fixing issues with arrays of resources on Vulkan.
Development of the fire hazard feature continued, with the VFX Programming team moving heat and temperature to the physics proxy, working on IR emission, and fixing various bugs with the temperature component and look-at debug camera.
Numerous updates were made to particles, including new controls for the mesh particle offset position and min/max pixels, a new option to pick ‘attached zones’ of particle entities, and particle texture aspect-ratio support. There were also bug fixes for flashing/black particles, emitter bounds calculations, entity placement on planet OCs, and shock diamonds.
Finally, a number of performance improvements and optimizations were made to emitter memory consumption, material glow lock contention from entity effects, and gas cloud zone contention on destruction and impact MFX.
The Space/Dogfight team worked on flight components for chapters that focus on points of interest, expanding some of the investigation gameplay in the game’s early chapters. They also worked alongside the other feature teams to refine turret gameplay.
The FPS team focused on getting FPS components playing through without blockers and implemented the additional features delivered in the last quarter of 2021.
The Social Design team continued with the significant task of implementing all in-game scenes, which will be the case for many months to come.
The Narrative team spent the bulk of the past few months dividing their time between content and planning. Work continued on tracking all line requests in preparation for capture later in the year.
They also began working alongside the dev teams to review and discuss levels, including the AI team to plan behaviors and archetypes. The writers will start building out scripts and creating placeholder audio in the new year.
Cinematics continued to rely on QA for regular chapter testing, with work throughout the last two months focusing on TrackView testing and ironing out many of the tool defects when rendering scenes. They also continued to test and review scenes to ensure quality doesn’t diminish as development continues.
With the AI team splitting to cover more Sq42 development, the Frankfurt-based QA team moved to support them and is currently hiring to help with the increased workload. The team will still focus on behavior testing but will be expanding into level checks alongside QA in the UK.
To close the year out, the Tech Animation team set a mandate to finish upgrading all head assets to the new pipeline in preparation for the full DNA system refactor. This is a long-standing initiative that will hopefully conclude in early 2022.
“To get us there, we need to recreate every single head asset in the game and check it’s still working as we intend. All hands are on deck for this one, with the whole team pushing to reach the finish line.” Tech Animation
Alongside this, the team began cleaning up the animation databases, which involved triaging several hundred old animation asset references from the databases. Tech Animation also continued to support the various feature teams with embedded staff.
Towards the end of the year, the UI Feature and Tech team addressed various UI related bugs, crashes, and performance issues.
Progress was made on the core tech and feature set of the new Starmap. For example, they added display controls to modify relative distance, orientation and scale, and the ability to frame selected objects appropriately.
UI Tech continued work on the core technology for hacking, adding the ability to select and edit text in the UI.
The new Building Blocks editor entered pre-production towards the end of the year, which will make working on UIs more efficient and developer-friendly. Additionally, more Building Blocks features were added.
VFX began working on a ‘vertical slice’ section of a key outdoor location. The collaboration with the Cinematics team also continued, with additions and refinements made to the epic battle scene mentioned in the previous report. They also decided to revisit some weapon effects requiring a visual update.