February 12th 2020
What you are about to read is the latest information on the continuing development of Squadron 42 (SCI des: SQ42).
Operatives around the world collected the intel needed to provide you with this progress report. Through their efforts, we’ve managed to unearth exciting information on tools improvements for the Cinematics team, a massive month of “interruptions” for the Gameplay Story team, and seeing hard work pay off with immersive experiences.
The information contained in this communication is extremely sensitive and it is of paramount importance that it does not fall into the wrong hands. Purge all records after reading.
UEE Naval High Command
The Ship AI Team finalized the last implementation of the new 3D navigation system. This uses a 3D pathfinder and collision avoidance system, with the goal to make AI pilots fully aware of their physical environments. Each environment offers a different challenge: In open space, pilots need to take into account asteroids, communication arrays, and space stations. When flying close to a planetary surface, pilots need to be aware of the local terrain elevation and physical structures that don’t belong to the procedurally generated surface, such as rocks, buildings, refineries, and towers. In order to obtain and effectively use this information, the AI systems need to query physics in an extremely detailed way and model the information in abstractions that can be processed by their algorithms.
Also, time was dedicated to the routine code clean-up that’s crucial to keeping the ever-growing code base efficient and readable. This clean-up focused mostly on flight-related Subsumption tasks with heavily repeated (or ‘boilerplate’) code that could be abstracted away to reduce the likelihood of errors when implementing new tasks.
The final days of January saw Ship AI prototyping a new AI system – Tactical Target Selection. Mission requirements are getting more sophisticated and the current selection system, based on filters, is not able to fulfill all requested scenarios.
The Social Team are currently focusing on a bar location, where players and NPCs can purchase bottled and draft drinks and ask the bartender to mix cocktails. Players will be able to drink at a table, booth, or the bar itself. They’re also populating various key locations, such as the Idris, which involves creating specific NPC behaviors for each area. Currently, they’re working on the hangar, where players will find mechanics who inspect and repair ships, and fuelers, who replenish them as required.
The team recently gained the ability to play Entity effects on ships. In the past, it was difficult to replicate in-game effects accurately in cinematics, such as a ship exiting quantum travel. Previously, they had to utilize additional particle emitters – now they can play the exact effect when required. And, if they decide they need additional effects, they can override IFCS to further tweak the visuals manually.
Work was also done to improve accessibility to ships. The team now have a visual viewport selection of a ship’s itemports and can add them to sequences. This is a huge improvement over the previous long single list, particularly on huge ships with potentially thousands of itemports like the Bengal.
The team also implemented concurrent/immediate queuing for physics, support for fences and barriers to synchronize physics actions/params, and added physics step data to the FPS heartbeat to monitor high-level load. The signed distance field (SDF) system was further developed to accelerate collision checks on complex geometry and increase precision. Support was also given to NPC death reaction animations regarding actor and ragdoll body dragging.
January’s engine work included optimizing the job manager, which is required for entity-component scheduler improvements, and modifying it to run all component updates in batches. The responsiveness of the batch worker was also improved by removing the polling behavior to find jobs done (using direct signals instead), replacing the signaling mechanism with WaitOnAddress functionality for more efficient wake-ups, introducing clusters to prevent unnecessary wakeup for small batches, and replacing work-stealing code with simple atomic decrements.
For the zone system, they implemented support for proximity volumes and moved SZoneHandle data from client objects into the zone system. They also supported the transition to Visual Studio 2019.
Engineering also supported the Gen12 renderer and Vulkan. This involved porting the buffer management code to the Gen12 renderer, generalizing texture views, creating support for LoadOp, changing Map API to make it more C++11-friendly using RAII, and ensuring the UpdateResourceBuffer legacy pipeline now correctly takes in byte offsets in the backend rather than per element-offset.
Work on new experimental hair features began, including a hair color model with base melanin and bleach/dye layers. Ocean rendering moved from a ‘forward’ to a ‘deferred’ pass to allow more consistent shading; shadow application is now free and cube map reflections were improved. The unified raymarcher continued development too.
For planet lighting and atmosphere, they added combined planet color LUT to evaluate the local ground albedo and take it into account during irradiance computations. They also applied scene irradiance computations and cloud shading, introduced new sky irradiance LUT for a better approximation of light scattering events within atmosphere, and added support for an alternative jitter method that works alongside TSAA.
Regarding ground fog, they implemented a strictly compute-based method to build the ground height map. This means they’ll be able to ditch fog volume proxy mesh generations which, after a lot of improvements, were still subject to artifacts. This move will save on memory resources as well. They also removed the peel buffer (in preparation to drop the proxy mesh) and fog bounds are now evaluated analytically.
The Feature Team continued to work with Gameplay Story and the designers to improve the interrupt and join tech. It now uses Subsumption static variables to simplify the logic setup and provide additional triggers, such as area volume.
“We have plenty more background elements and post-scene animations to complete, but I’m certain this scene will become a highlight for our team’s work on Squadron 42.”
- The Gameplay Story Team
Another important goal is to transition human body rigs from a fully-baked form (where the movement of joints and bones is exported into the game engine from Maya) to a workflow that only bakes and exports the primary joints. This will use a custom body runtime rig logic to determine the translation and rotation of all deformation helper joints. These joints ensure that, regardless of what clothing a character wears or how they pose, attachments always deform correctly without artifacts. By driving them via a runtime rig logic, the memory footprint of the thousands of body animation clips will become much smaller. Also, procedural animation of the primary joints via physicalized ragdolls, runtime IK, and others will not break deformation as the rig logic will adjust the deformation joints according to the final pose.
The UI Tech Team started work on 3D building blocks, which will support multi-layered screens and make it easier to add 3D icons. They also expanded reusability and restyling, which will help implement the new vehicle UI.