May 12th 2021
What you are about to read is the latest information on the continuing development of Squadron 42 (SCI des: SQ42).
Thanks to the work of dedicated field agents and operatives, we’ve uncovered information on Vanduul combat, Screaming Galsons, and gas clouds.
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
They also implemented the first version of the landing officer, one of the deck crew that will be used in hangars, landing zones, and capital ships. The landing officer gives players clear directions on how to position their ships in relation to the pad for perfect decents.
Work also continued on the hygiene behavior, with the team completing setups for the toilet and shower cubicles and their relative blockout animations. For sleep behaviors, new animations for beds were set up to support physicalized sheets, and the process of standardizing the proper usage of bed shutters began.
They also progressed with the ongoing goal of propagating vendor behaviors to as many shops as possible. They’re currently designing and blocking out the different elements that will make up the various locations (coffee shops, differing food stalls, etc.) and are enabling the available kiosks to use the hawker behavior too.
Patrol path tech was further developed, while the usable system code was reworked to refresh the usable archetype and use channel archetype flags of an entity post-initialize. The movement blocks that install an NPC to a usable were refactored to rely on the usable component for their internal logic, as the usable component should abstract the AI knowledge of how to interact with the world and not delegate to all other possible components of the game.
Work also progressed on combat behaviors for untrained characters, such as civilians. This involved making sure they react appropriately to combat scenarios and try to preserve their lives as best they can, which is affected by what weapons, if any, they have available to them. The team also improved the reaction distance definition that was causing NPCs to react incorrectly to the player’s presence when fighting in some situations.
Spaceship behaviors related to subcomponent targeting were worked on, with the ability to find the root targetable entities from any targetable object added. The data gathered can be used in flight tasks to perform specific maneuvers, such as allowing a ship to sphere-strafe to attack a subcomponent on a specific sector of a target ship. They also updated the ‘AISeatWeaponControllerComponent’ to handle missiles.
Support began for spawn closets, including implementing handling for the ‘OnDespawnRequest’ event and the initial pass of the despawn activity. Currently, the entity will look for a usable in the spawn closet action area and use it. If that fails, it will move to a random position in the area.
For EVA, they completed tasks to allow NPCs to systemically transition from zero-g into a usable (and vice versa). For example, AI characters can leave the cockpit of a ship smoothly and then process a 3D movement in zero gravity. They can filter the appropriate enter/exit animation so that the 3D path correctly starts or ends at the appropriate location too.
April also saw the team convert the Subsumption component to use the ECUS ‘InRangeChanged’ event. This uses the more efficient Entity Component Update System API and improves the assignment handling to ensure that assignment requests are propagated correctly from the queue when changing the in-range state. They also fixed how the mastergraph event queues when propagated into the newly selected activity when handling assignments, which is used to select the appropriate subactivity when the transition is delayed.
Finally for AI, the team continued to improve the flowgraph functionality for requesting a custom function assignment. This was achieved by adding support for dynamic input and output variables defined in the selected global function. Ultimately, this will ensure the team can correctly create feature test levels to validate and test behavior content and their related features in a scalable way.
Mocap was solved for perception reaction data for civilians (surprise, cower, flee) and spec ops (surrender, fake surrender), and useables were worked out for enemies in combat zones. The Facial Team worked on animations for the effort set and security pilots too.
For Alpha 3.13, a solution was found to enabling floating-point exceptions on Linux servers, which will help the team get to the root of issues quicker, meaning a faster turnaround on bugs. For numerical robustness, several improvements were made when converting double-precision floats to either single-precision floats or 32-bit integers.
Throughout April, Engineering continued to work on the G12 renderer, enabling parts of the new Gen12 render path by default and starting the full transition to the new architecture. They also continued to port render passes alongside the Graphics Team. For example, the Scaleform (UI) render path received an initial commit to port it to Gen12. The shader parser received several new improvements and optimizations too.
Work continued on the volumetric cloud system, with April seeing a pass on efficient empty space skipping in the raymarcher. The SDF generation was further optimized, and a required refinement pass was also implemented. Research continued into ways to generate and apply SDFs and, with the initial SDFs generated, work commenced on integrating them into the raymarch process. For cloud modeling, the artists can now specify a custom set of volume textures per planet to shape clouds, as not every planet has clouds resembling those on earth.
On the core engine side, the job manager received further improvements, with the team introducing an explicit per-thread and fiber info block to reduce contention in some of the threading backends. In the near future, they’ll improve out-lock implementations to make fewer unnecessary thread wakeups and fewer kernel calls when simultaneously waking up more than one thread. Additionally, they removed contention in one of the threading backends by switching the scheduling algorithm from a lock-protected priority queue to a lockless approach of fixed size producer/consumer queues with aging. For post-mortem profiling, they saw the first results in visualizing collected data in a newly written tool that’s more user-friendly and flexible.
Time in April was also dedicated to server meshing. The existing StarHash logic, which is used for server object container streaming, was moved to the network module in preparation for a later move to a server meshing service. The assert pipeline was revamped and streamlined for more effective issue tracking too. This also involved introducing data assets (in case malign data causes code to run in unexpected conditions), allowing issues to be directly assigned to the relevant content team.
Lastly, code was implemented to mark unused texture slots in materials to guide automated asset dependency tracking, which will keep game data bloat in check.
“It has been great to see all the animations we have already prepared for chapter 5 suddenly being used and working nicely in-game.” -The Gameplay Story Team
Extra variations and polishing animations were then created to further improve the player experience. They were also able to use the new eating and drinking animations to improve gameplay story scenes in the mess hall. Alongside this, they used new motion capture to create bespoke transitions between scenes in the med bay, allowing characters to move naturally and maintain the believability of the area.
Further tasks were completed for chapter 14, including polishing a scene on the bridge and creating prototypes for additional post-combat vignettes.
Progress was made on the Vulkan backend to achieve parity with DirectX 11, which requires a pass over all shaders to remove a handful of legacy DirectX 9 features that are no longer supported.
The VFX Programmers continued the Gen12 conversion of their code, which is almost complete. Great progress was made on the fire hazard too, while a major overhaul of particle lighting was completed. Finally, the particle lighting is now more physically based, energy-conserving (doesn’t reflect more light than it receives), and gives higher quality results that are more consistent over different lighting scenarios.
Level Design continued to populate the various gravity-based levels and solidified areas of gameplay with support from the art teams, while Social Design worked through some of the many narrative-driven scenes across the campaign.
In another production initiative, some of the team worked with the Design and Character teams to help organize and sanity-check the Master Character List by providing context and descriptions for all characters in the game. “As you might expect, it is not a short list!” -The Narrative Team
They also met with the Art Team to talk over initial ideas for adding additional depth and character to some of the locations. Following the meeting, they began building documents to outline potential audio cues, set dressing, and overarching tone ideas to share with the artists.
The weapons authoring pipeline also received attention to assist its users and automate as much as possible. This will see Maya more intelligently handle engine files and enable a portion of the authoring and validation to be done directly in its environment.
On the code side, the team supported various areas, such as the UI visuals for scanning gameplay and expanding the visual tools used to make interactive screens. They also added the ability for developers to add tooltips to give players more info when they hover over an item on certain screens.