Multi-threading, Performance and AI Improvements Updates 112176 / 112209 / 112214

Greetings Commanders,

It took us a little longer than we expected to prepare this build in light of some server issues last weekend, which are now resolved.

This is our first new build on the legacy toolchain and will be the first of many once we stablise our modern toolchain builds.

Our focus is on speed and stability as we work to ensure we’re in the best place possible ahead of upgrading the technologies which underpin the game. We’ve implemented numerous server sim performance improvements, while also resolving a number of the most common causes of server-side crashes.

You should still make sure your graphics drivers are up-to-date as out of date drivers are still the most common cause of client issues. Seriously. Go do it now!

Over time we’ve seen the competitive meta settle, revealing some very visible imbalances. No one likes those. We’ve introduced some small changes to fix things. Balance is as much an art as it is a science, so we’ll continue to monitor and adjust as necessary.

The AI has also seen some love, upgraded to be more ruthless than ever. It’s in it to win it, with an upgraded neural net, along with additional behavioural improvements.

Finally, rumour has it some kind of ladder reset is fast approaching…

Titans Balance

  • Advanced Air, Bot, Vehicle and Naval Factory cost increased by 25% to 4,500 (minor delay to T2 rush)
  • Slammer cost increased to 500 (minor adjustment against Leveler)
  • Solar Array cost decreased to 1,600 (minor adjustment against land-based advanced power)
  • Gil-E vision increased to 220 (vision now matches weapon range)
  • Bluehawk range increase to 220 (buff as a counter e.g. Kaiju)
  • Pelican health increased to 200 with group (formation) preference set to back (increased survivability)
  • Stingray vision increased to 250 with new radar and sonar of 350 (new cruiser role as naval radar)
  • Typhoon vision increased to 250 with drone guard radius of 250 and passive health regen reduced to -2 (20 seconds)
  • Kaiju rate of fire decreased to 0.5 shots per second (minor nerf)

Technical Notes

AI

  • Adjusted the neural network fitness function
  • Neural networks have all been re-trained for Titans and Classic
  • Threat response platoons now see amphibious units as anti-sub threat

Added a couple of new target filtering options, a new neural net input, and a few new outputs

  • AI does a better job of gathering and using intel as well as caching it for later use to improve performance
  • When looking for a place to attack, the AI will now take into account neighbouring areas when determining what size of a force to use
  • The AI will now look for more fights that it can win rather than fights it can at least tie
  • Fix for AI platoons that would get stuck trying to disband
  • Adjusted how much the AI raids
  • Improved AI neural data merging
  • Fixed bug preventing the AI from attacking when it should have been
  • Adjusted AI aggressiveness

Server / Simulation Performance

  • Adjusted how search spaces are updated in an effort to get through as many of them as possible per tick
  • During the nav update, more of an effort is made to allow as many search spaces as possible generate their high level path so units can start moving faster
  • Added a fail safe to allow nav to steal more voxel budget if it is having a tough time getting through search spaces
  • This will give nav an opportunity to fulfill a larger number of move requests over a shorter time
  • We now query a search space to ensure we have enough voxel budget remaining for the space to prevent doing a bunch of useless work
  • Added the count of updating search spaces in nav to the perf output window
  • More aggressive filtering of collision pairs to reduce the number of pairs we have to check
  • Nav now attempts to pre-allocate the cost cells it will need for the updating search spaces it has
  • Search spaces now return their cost cells to nav when they are finished so they can be reused later
  • Moved the spatial DB update for dynamic objects so that it only happens once, at most, per update

Server / Simulation Multi-Threading

Please note multi-threading must be enabled for your server.

  • The task scheduler now supports running the plan step of parallel tasks (such as weapon auto targeting and auto manoeuvring) at the same time, per unit
  • Entity record step now runs in parallel
  • The nav and physics updates now run alongside the economy update
  • Added multi-thread support for the heavy parts of the recon update
  • Units can now update their weapon aims in parallel
  • The physics update now supports multi-threading
  • The small island build is now multi-threaded per sector
  • This helps in-game perf as well as system loading
  • Added –max-threads command line to set the max number of background threads

Crash Reporting

  • Improved crash reporting for all platforms
  • Crash dumps are now stored in the log folder (varies by OS) instead of a temp folder.
  • On Windows, a DxDiag report (stripped of all personally identifiable info) is now automatically attached to crash reports.

Crash Fixes

  • Fix for crash if, during the same tick, a search space was marked for removal and then another search space was created for the same destination
  • Fix for rebuilding the collision geometry BVH when it wasn’t needed
  • Fix for crash in swizzle tree from trying to evaluate log(0), in a rare case
  • Fix for big game crashes caused when the flood runner gets a request from a search space with an invalid goal location
  • Fix for virtual texture binding crash on the client

Modding

  • icon atlases now use grids which increases the maximum strategic icons (52x52px) on an 8K texture (older GPUs) to 157 x 157 (24,649) and on a 16K texture (modern GPUs) to 315 x 315 (99,225) resulting in a breaking change to the following shaders:
    • particle_direct_ring_selection.vs
    • particle_direct.vs
    • particle_icon.vs
    • particle_status_icon.fs
    • particle_status_icon.vs
  • strategic icon mods should use the new utility function calculateAtlasUV (added to particle_common.vs) replacing:
    • v_TexCoord = vec2(a_TexCoord.x, vUVAndExtra.x + vUVAndExtra.y * (1.0 – a_TexCoord.y)); with v_TexCoord = calculateAtlasUV(vUVAndExtra.xy);

Server Issues Resolved

Our legacy infrastructure hit a 10GB limit for archived game summaries. That’s a lot of games!

112209

112209 build is now live to help us track down the cause of sim speed stalls and includes a fix for the XOV commander crash on Linux.

112214

112214 build is now live with a fix for missing metal spot icons in the system editor.

THE GALAXY WON'T CONQUER ITSELF Get it now on Steam!