about 1 year ago - Shamm - Direct link
Week Sixty-Eight’s update is here, and with it comes a batch of performance improvements that have been championed by our dedicated performance team, and tested by our community.

Improvements to Memory, Stutters & Garbage Collection, and Engine Performance are the core focuses, and you can read more detail about what these changes mean for performance, and how we went about identifying and improving them, below.

Jump in and have a read.



Performance Improvements
As mentioned last week, our dedicated performance team has been busy looking for areas in Icarus where we can find optimizations. If you want to read in detail about the 6 areas of focus for our team, you can do so here in our Week 59 update. To summarise, these are Engine Performance, Game Systems, Memory, Stutters & Garbage Collection, and Connection.

This week's fixes fall under Memory, Stutters & Garbage Collection, and Engine Performance.
  • Removed overlap events from various collision objects on animals and changed some components to be ‘non-physical’. This should improve performance with animals moving around, as it limits how many events can happen when an animal moves around an area of the map
  • Fixed duplicate spawn of aim assist component on animals
  • Fixed aim assist component triggering multiple overlap updates during spawn. This was a small bug which duplicated the process and caused a small hitch when animals spawned
  • Removed root motion from idle animations for Buffalo
  • Made talent trees share a pool of popups rather than each having its own. This has a significant impact on load times when changing maps (on average about 5 seconds faster). This had an effect when moving from the character select > HAB > Prospect
  • Fixed a use case where UI popups were waiting for a valid UI on dedicated servers. (Dedicated servers never have a UI)
  • Improved performance of ‘talent requirement checks’ by avoiding data lookups where possible
  • Fixed settings from auto-saving during initial load and then recursively rebuilding their widgets
  • Fixed the settings screen from being constructed multiple times when the UI first gets built
  • Fixed deep vein ore deposits setting their material twice on the servers during startup
  • Cached a lookup of the replication state of stats to allow for faster replication updates when stats change. This speeds up the host working out which stats need to be sent to clients when stats change
  • Fixed stat container updates triggering multiple events per rebuild
  • Removed all critical hit logic from the stats system. Critical hit afflictions are now handled by a new column in the StatAfflictions table. The only stat that was still using this was the chance to immobilize on throwing knife crit
  • Fixed issue where hits against inanimate objects were being considered as crits
  • Envirosuit slots no longer get rebuilt every time the players' stat container updates
  • Removed expensive gathering function from the atmosphere controller. Replaced calls to directly grab the variables that are being used instead
  • Changed dropship parts to no longer tick and no longer animate while not rendered
  • Disabled collision with the dropship door (while landed)
  • Objects that can be sat on no longer tick when they aren't in use
  • Moved some audio systems tick to during physics as they do not contribute to actor positions. Audio systems being moved to the physics tick is due to them being a good candidate as they don’t influence object positions and therefore can be done separately
  • Disabled overlaps on the root mesh of equipped items
  • Disabled overlaps on tree proxies
  • Optimized some calls to the firearm controller in the players animation bp
  • Prevented armour meshes from being created on dedicated servers. This was an obsolete update cost that impacted performance due to servers not rendering cosmetic meshes
  • Improved item trait retrieval speeds of several traits by improving the time required to access categories in the data tables.


Part of this week's optimization patch has been focused on reducing the performance costs of animals in the world. The cost on the CPU of animals can be broken down into three categories: processing their AI, moving them/updating their collisions, and updating their animations. In particular, we’ve focused on improving the performance related to animal movement.

When an animal moves, it continues along a path that the AI has already picked out and updates its collision along the way, which requires it to update its physics and this causes further physics checks to be performed. Animals not only have a skeleton and a collision that is updated but also some additional colliders which are used for overlap checks in various different cases during gameplay.

In assessing the additional colliders it was determined that many of the events they where setup to trigger overlap events which where being handled elsewhere or had been removed. Due to this we were able to disable many of the channels that these colliders where responding to and in some cases removing them all togethers, drastically reducing the number of update triggers.

A single overlap has limited impact on the CPU, but this would trigger a ripple of other physics updates such as animal animation, sending the position of the animal to the server and then relaying this information to the local PC, and this could happen for every animal active at that time. When you consider ten animals, each with colliders triggering overlap events, updating three times per frame, you can see how this cost would become noticeable to performance. Though these events are generally quick to handle, any reduction in the amount of calls reduces the load on your computer.

Our change ‘Removed overlap events from various collision objects on animals and changed some components to be ‘non-physical’ directly addresses this issue, removing obsolete overlap events and limiting the number of events occurring simultaneously.

We hope this explanation gives you some insight into the details of our ongoing performance optimization!



Galileo Progress
This weeks progress on Galileo has been focused on our bestiary rewards, connecting progress to the rewards so they are correctly granted to players.

We also spent time working on the various UI elements related with these milestones, and the system is making steady progress towards a viable test product.

We have also added 5 other different ways to gather information about creatures, so there is variation in the available milestones rather than just pure ‘hunting’ totals.



Changelog v1.2.43.108956
Optimisation
  • Reworked creature spawning to be spread over multiple frames. This should reduce hitches when new animals spawn in
  • Removed overlap events from various collision objects on animals and changed some components to be non-physical. This should improve performance with animals moving around
  • Fixed duplicate spawn of aim assist component on animals
  • Fixed aim assist component triggering multiple overlap updates during spawn
  • Removed root motion from idle animations for Buffalo
  • Made talent trees share a pool of popups rather than each having their own. This has a significant impact on load times when changing maps (about 5 seconds faster)
  • Fixed case where UI popups were waiting for a valid UI on dedicated servers. (Dedicated servers never have a UI)
  • Improved performance of talent requirement check by avoiding data lookups where possible
  • Fixed settings from auto saving during initial load and then recursively rebuilding their widgets
  • Fixed settings screen from being constructed multiple times when the UI first gets built
  • Prevented multiple refreshes from happening in one frame in the cheat overlay
  • Fixed deep vein ore deposits setting their material twice on the servers during startup
  • Moved map manager saving of map state to code. Merged map manager save data gathering functions to prevent additional iterations of the map tiles
  • Cached a lookup of the replication state of stats to allow for faster replication updates when stats change
  • Fixed stat container updates triggering multiple events per rebuild
  • Removed all critical hit logic from stats system. Critical hit afflictions are now handled by a new column in the StatAfflictions table. The only stat that was still using this was the chance to immobilise on throwing knife crit
  • Fixed issue where hits against inanimate objects were being considered as crits
  • Envirosuit slots no longer get rebuilt every time the players stat container updates
  • Removed expensive gathering function from atmosphere controller. Replaced calls to directly grab the variables that are being used instead
  • Changed dropship parts to no longer tick, and they no longer animate while not rendered as it was still happening in the background
  • Disabled collision with the dropship door (while landed)
  • Objects that can be sit on no longer tick when they aren't in use
  • Moved some audio systems tick to during physics as they do not contribute to actor positions
  • Disabled overlaps on the root mesh of equipped items
  • Disabled overlaps on tree proxies
  • Optimised some calls to the firearm controller in the players anim bp
  • Prevented armour meshes from being created on dedicated servers
  • Improved item trait retrieval speeds of several traits
  • Added missing D_StatAfflictions from previous commit
  • Fixed issues with blueprint tooltips not showing alteration packs correctly
  • Fixed issues with blueprint tooltips adding a copy of the set bonuses text each time the tooltip is hovered
Fixed
  • Updates and improvements to distancing for the transport pod. Removing old profilers
  • Update Maximum Loops to prevent PIE crash in new missions.
  • REMNANT: Added failsafe tracking of radar scan locations (will now additionally be marked as complete if there is a scan in the area at any time, note this may not fix missions in-progress)
  • Fix enzyme geyser audio, which was broken due to a change to OverlapAudioComponent which resulted in non-unique component names in subcomponents. Fixed by changing subcomponent ownership from the owning actor to the overlap component itself
  • Remove execution pins from a new storm particle system that was added for DLC and is making it look like existing weather is severe (internal only)
  • FIRE WALK: Re-apply cannot decay modifier on crate after reload to prevent cases where the modifier fails to load
  • Fixing up Item Static which had some things marked incorrectly as DEV
  • Fixing up Item Static which had some things marked incorrectly as DEV again
  • IRONCLAD: Added failsafe for loss of snap points
  • Fixed bug where animation played when receiving a new modifier sometimes obstructed crosshair
Future Content
  • Fixing Caves On Green Quad and Updated Arctic Cave, Prometheus
  • More visual updates on Prospector field guide UI
  • Setting up Heatmaps for Olympus and Styx for the different fish spawn locations and creating spawn zones based on each heatmap
  • Hooking up New Olympus & Styx Fish Spawning Heatmaps to their respective terrains
  • Adding rockdog vomit audio, event and notify
  • General clean up and polishing in Blue swamp, deep swamp underwater dressing in Green/Blue, DLC
  • Aquariums now swap to use their dirty mesh when they are not connected to active power / water connections
  • PRO_Story_5: Added audio-visual feedback quest step
  • Adjustments to drop pod transport sonic boom audio and fixed rockdog NPC not having correct parent behavior for footsteps for new FS notify
  • Fixing Caves On Green Quad, Prometheus
  • Setting up Rhubarb, Kumara, Avocado & Strawberry datatables for items, growth states, rewards, so they can now be grown when aquired
  • Adding rock dog vomit as a vocalisation event so its not interrupted by flinch sounds. Also lowering idle state vocals spawn rates
  • Balance and spacializer updates to transport pods
  • Enabled unlock all prospects cheat for PRO
  • PRO_Story_5: Tweaked spawn locations, added obstacles
  • General Landscape Polish & Clean Up, Fixed Caves in Swamp, Tundra, Arctic & Updated Cave Template on Blue/Green Quad, DLC Map
about 1 year ago - /u/ - Direct link
A lil somethin somethin: You can find the details for this event on the announcement page here.