Multithreading – The Future of PA and Titans

@Sorian is back working on server simulation performance with multithreading this month and we have a technical update to share on his work for the next update.

Two years ago I was given the opportunity to continue work on my baby, Planetary Annihilation, for the 99337 Performance Update. My primary focus was attempting to improve performance by multithreading parts of the simulation. My initial focus was on areas of the simulation where I thought it would be easiest to do things in parallel. The most natural separation was based around planets.

Since navigation and physics are typically the worst performance offenders, separating updates by planet seemed like a good plan. Their updates tend to only act on a single entity. Initial testing blew up spectacularly, as I expected it would. Fortunately, there were not many areas of contention between threads and a performance win was born.

So, now that I am back, you may be wondering what I am working on now. I’ll be continuing right where I left off! This time I am digging further into the sim to see where I can split large groups of tasks over threads to speed things up. Early this week I was focused on the physics update. I figured, since we should only be looking at two unique physics objects at the same time, it should be possible to thread this.

Well, I was right and wrong. There were the usual small issues to fix, but threading the physics update revealed a larger issue. The physics system utilizes an HGrid (described as a loose octree) to find potential entity overlaps using a function called buildPairs. It turns out that there is no guarantee that the vector of pairs that we get back does not contain duplicates. Under normal operation this isn’t a huge issue, as this is a single call that immediately returns and it was just being done thousands of times more than it needed to be. However, when you throw threading into the mix it gets ugly. Fixable, but ugly.

I have also started work on restructuring the sim tick a bit to allow the navigation and physics updates to happen alongside other updates. Right now I have it running alongside the economy update, but the economy update is only a small part of the overall update, so not much of a win there yet. I am hoping to split some of the plan steps (our sim has plan, execute, and record steps for entities) out into a group that can also run at the same time as the navigation/physics update.

For the navigation system, I have been mainly focusing on the epic number of allocations the navigation system does during voxel integration. I have a new system in place that saves off vectors of cost cells (the objects the integrator makes tens of thousands during voxel integration) for reuse. The integrator is also doing a better job of allocating in blocks instead of individually. On the multithreading front, the navigation system has proven to be quite difficult. There are so many little acceleration features and so much lazy loading that is simply prevents multithreading without a significant amount of work.

So, what’s next? There is still more work to be done with navigation, there is still the sim tick stuff to be investigated, and some AI updates as well (of course), starting with a much needed performance pass. And that doesn’t even get into other fun stuff like modern toolchain and Coherent GT updates.

Mike “Sorian” Robbins

Development and Updates Timeline

Classic Planetary Annihilation and Planetary Annihilation: TITANS are now developed and published by Planetary Annihilation Inc.

Prior to August 2018, Planetary Annihilation was developed and published by Uber Entertainment Inc.

DateBuild(s)DescriptionKS
2012-08-15Classic Planetary Annihilation Kickstarter begins
2012-09-14Kickstarter Ends & Payment Processed11
2013-03-22Engine Tech Livestream22
2013-04-18Live Game Client Demonstration Live Stream25
2013-05-03Combat Livestream26
2013-05-17Pre-Alpha Livestream27
2013-06-06 Alpha Begins
9 months after Kickstarter
28
2013-06-13Steam Early Access29
2013-06-28First Alpha Live Stream
2013-07-30Second Alpha Live Stream
2013-08-14Third Alpha Live Stream
2013-09-26Beta Begins35
2013-10-11Beta Livestream41
2013-11-22 Final Beta Invites50
2013-11-27Fall Livestream53
2014-01-17Gameplay Livestream62
2014-02-27Gamma Begins68
2014-04-24Gamma Update Livestream71
72
2014-05-22Galactic War76
77
2014-06-03Developer Walkthrough78
2014-06-05Soundtrack Available79
2014-06-20Early Access Retail Edition80
2014-08-11Launch Price $29.9989
2014-09-05Classic PA Launch
2 years after Kickstarter
93
2014-10-01Steam Achievements / Badges / Trading97
2014-10-02Human Resources Kickstarter begins
2014-10-07Jables starts as PA producer100
2014-10-0973939DRM Free Offline Play99
2014-10-20Human Resources Kickstarter cancelled 🙁
2014-11Uber Entertainment Layoffs 🙁
2014-11-25755391v1 Ranked
Advanced System Editor
AI Improvements
103
2014-12-1776557Unit Cannon104
2015-01-2877443
77582
77673
77725
Submarines and Interplanetary Fighter105
2015-03-1379600Offline Single Player Save / Load107
2015-03-1480462Offline Single Player Save / Load108
2015-05-2882369
82293
Resume Anywhere109
2015-06-0982834
83074
83391
83796
Galactic War Redesign111
2015-07-3185138
85423
Asteroids114
2015-08-1886422TITANS LAUNCH
3 years after Kickstarter
Gifted to Kickstarter backers from September 2012
66% off for all other existing owners of classic PA


Experimental Titans
New Units
Unit Wreckage
New Terrain
Bounty Mode
Tutorial
Balance Changes
New Engine Mechanics to support Titans
116
Concurrent updates to both TITANS & Classic PA
AI Improvements
Galactic War Improvements
New Maps
Notification & Sound Alerts Improvements
Balance Changes
2015-08-2686765Balance Changes
Polish / Fixes
2015-09-0987296AI Improvements
Polish / Fixes
2015-09-2188163AI Improvements
Polish / Fixes
2015-09-2388288Hotfix
2015-10-1489528Hotfix
2015-10-2289755AI Improvements
Polish / Fixes
2016-05-3194684Community Update
Community Mods In-Game Mod Manager
Custom Servers support
Legion Expansion support
Modding Improvements
Polish / FixesCommunity Update
2016-11-2199377Performance Update
Multi-threaded local servers
AI Improvements
LZ4 Compression for Sever Mods (2x faster)
System Editor Rework
Connect to Game Improvements
Polish / Fixes
2016-12-05palobbyGlobal Community Chat
2016-12-20Legion Expansion Faction Mod
2017-03-05Unit Restrictions via Community Mods
2017-06-21105067Enhancement Update
POV Camera
Balance Changes – Removed Commander Reclaim
Alternative Win Conditions – Sudden Death Mode for teams
Sim Speed Control for Local Servers
16 New Free Commanders
2017-10-17108271Balance and Community Servers Update
Balance Changes – Zeus, Leveler, Gil-E
Polish / Fixes
New Community Servers options
AI Improvements (via Community Mods)
2017-11-251v1 Rank Display Improvements (via Community Mods)
2017-11-26Galactic War Exploring Improvements (via Community Mods)
2017-12-04Unit Restrictions Improvements (via Community Mods)
2017-12-27Game Browser Sorting Improvements (via Community Mods)
2018-04-09109959Official Chinese Translations
2018-04-15110029Hotfix for Windows and Linux Connection Issues
2018-04-17110069Hotfix for macOS Connection Issues
2018-04-18Updated PA Launchers
2018-05-01Replay Browser Improvements (via Community Mods)
2018-05-12Game Browser Improvements (via Community Mods)
2018-08-18Planetary Annihilation Inc
6 years after Kickstarter
Permanent 90% off TITANS upgrade discount for existing classic PA owners
118
2018-05-25sorian returns to work on multi-threading, sim performance, new mechanics and AI119
2018-09-05Classic PA removed from sale
(no impact on current owners with concurrent updates to both games)
https://planetaryannihilation.com/
https://forums.planetaryannihilation.com/
https://support.planetaryannihilation.com/
Official Planetary Annihilation Discord Server
120
2018-09-15Deprecation of 32 bit client support and older unsupportable operating systems
New Community Rules and Guidelines
121
2018-10-18112176Multi-threading and Performance Improvements
AI Improvements
Improved Crash Reporting
Modding Improvements (icon atlases optimised for up to 99,225 strategic icons)
Polish / Fixes
Balance Changes
122
2018-11-02112314TITANS 1v1 Ranked Ladder Reset and Seasons
Multi-threading on Official Servers
AI Improvements
Polish / Fixes
123
2018-12-20112589-pteModern Toolchain Test Builds with Audio Modding
AI Improvements
Polish / Fixes
2018-12-31112505
112589
Happy New Year Updates
Modern Toolchain Builds on Official Servers
AI Improvements
Audio Modding
Polish / Fixes
Dedicated Servers
Official Guides
124
2019-01-25TITANS 1v1 Ranked Season 2
New 1v1 Ranked Map Pool
125
2019-02-07112835TITANS 1v1 Ranked Leaderboard Update
https://palobby.com/leaderboards/
2019-03-07
2019-03-08
2019-03-20
113034
113044
113132
Translations, AI and Modern Updates
Updated and new translations for:
French, German, Italian, Spanish, Russian
Japanese, Korean, Simplified Chinese and Traditional Chinese
AI Improvements
Polish / Fixes
Balance Changes
126
2019-05-19
2019-05-24
113298
113318
PAnet and TITANS 1v1 Ranked Season 3
Modern servers with faster CPUs, more memory and increased bandwidth
New regions including Singapore, Tokyo and USWest
Official Dutch and Polish Translations
AI Improvements
Polish / Fixes
Balance Changes
127
2019-06-28
2019-07-03
2019-07-08
2019-07-17
2019-07-22
113410
113426
113430
113457
113462
TITANS 1v1 Ranked Mid-Season 3 Winners
Custom Line Formations
AI Improvements
Polish / Fixes
Balance Changes
128
2019-07-25113470TITANS 1v1 Ranked Season 4 129
2019-08-18
2019-08-29
2019-08-29
2019-08-30
2019-08-31
113553
113578
113581
113583
113600
Happy Birthday Update
AI Improvements
Polish / Fixes
Balance Changes
Stryker
130
2019-10-05
2019-10-06
2019-10-20
2019-11-05
2019-11-25
2019-11-26
2019-11-28
113783
113794
113895
113909
113929
113936
113945
Horsefly Update
Toolchain Updates
AI Improvements
Polish / Fixes
Balance Changes
131
2019-10-20Happy Halloween!132
2019-10-25113901TITANS 1v1 Ranked Season 5

Planetary Annihilation Inc: The Future of PA and Titans

Hello Commanders,

It’s Planetary Annihilation: TITANS’ third birthday, and we have some very exciting news to share.

We are proud to announce the creation of Planetary Annihilation Inc, a new company with a team comprised of original PA developers and long-time community contributors. Our sole focus will be Planetary Annihilation and making PA into the best game that it can be, one ready to take full advantage of the many changes in technology since development started back in 2012.

None of this would have been possible without our dedicated community and so we will be opening up our communication to let you know what we are working on and experimenting with. No more radio silence!

We’ll be launching an official Discord server next month. This will be a place for you to connect with other players, ask for help, share your awesome strategies and where we can engage with you to keep you informed on all the cool stuff going on.

As a thank you to everyone who purchased the original Planetary Annihilation we are permanently increasing the TITANS upgrade discount to 90% off!

This is just the beginning of the journey we’re embarking on. As we ramp up Planetary Annihilation Inc there will be more announcements about the shakeup of the 1v1 ladder and some big changes we are implementing to improve performance on newer hardware.

There are a lot of changes coming, so make sure you don’t miss anything by following us on Twitter @PA_the_game.

We hope you’ll join us on this journey, and remember: mine the gas giant, claim the asteroids, and never, under any circumstances, let them own the metal planet.

The PA Team

https://planetaryannihilation.com/news/

https://planetaryannihilation.com/timeline/

Future of PA and Titans Update

We wanted to share some of the things we’ve been working on and that are currently in the pipeline:

  • Ladder reset for 1v1 giving everyone a fresh shot at hitting the top of the ladder
  • Working on server performance and optimizations to improve player experience (some of these optimizations have already been made)
  • New 1v1 ranked maps

We will let everyone know as these come online.

Also, for those of you who did not see the announcement, Community Mods, the Community Dedicated Server, Community Chat and Legion Expansion support are now up and running.

Hotfix 110069 is now live!

This hotfix resolves the SSL issue preventing MacOS users from being able to sign in. A separate fix for the PA Launcher will be rolled out next and we will release that as soon as it is ready. Thank you again for being patient with us and happy annihilating!

Update: A fix for the PA Launcher on MacOS has been released. However, there is a new bug that has appeared on the Windows PA Launcher that causes it to get stuck in an update loop. For the time being, please hit Cancel and it will allow you to continue to play Offline for now while we sort this out. Thank you for understanding.

Second Update: The issue with the Windows PA Launcher has now been resolved and you should be able to launch the game again using any platform and any OS. Thank you for bearing with us as we worked through this issue!

Hotfix build 110029 is now live

This hotfix resolves the SSL issue preventing most people from being able to sign in.

We are aware that there is still an issue with MacOS as well as the PA Launcher. We are still working on tracking those down and will release a fix as soon as we are able. Thank you for your continued patience.

Official Chinese Localizations now live on build 109959

We’re happy to announce that we now included official translations in Traditional and Simplified Chinese. Enjoy!

我們很高興地宣布,我們現在包括繁體和簡體中文的官方翻譯。 請享用!

我们很高兴地宣布,我们现在包括繁体和简体中文的官方翻译。 请享用!

The Balance and Community Servers Update 108271 is now live!

Balance changes
Zeus

  • Reduced Zeus effective rate of fire to 0.5 from 0.67
  • Increased Zeus ammo per shot and capacity to 10,000 from 9,000
  • Decreased Zeus ammo demand to 5,000 from 6,000

Leveller

  • Increased Leveler build cost to 800 from 600
  • Decreased Leveler turn rate to 50 from 60

Gil-E

  • Increased Titans Gil-E range from 180 to 220 for Titans (same range as Classic PA)

Titans vs Classic PA

  • Titans Leveler ammo velocity is slower (140 vs 150)
  • Titans Gil-E health is lower (150 vs 200)
  • Titans Gil-E build cost is lower (800 vs 1200)
  • Titans Gil-E weapon can also target WL_Air

Polish/fixes

  • Fixed sudden death mode not displayed for other players in new game lobby (patched via community mods)
  • Fixed zoom to celestial for POV camera
  • Added tooltip for POV camera button
  • Fixed attack, move attack and area attack for point / follow units to attack from max weapons range instead of rushing into and hugging target eg bots, hornets, etc.
  • Fixed multiple saves during same game corrupting config
  • Community Servers Support:
  • Posting community servers beacon
  • support for 32 players with 16 alliances
  • command line option –gameover-timeout
  • command line option –community-servers-url
  • command line option –community-server-public-host
  • command line option –community-server-region
  • added missing help for recently added command line options.
  • added state to server beacon
  • added offworld support for AI only (no human players) testing

Enhancement Update 105067

A host of new custom commanders, free for everyone!

  • Added Locust, XOV, Reaver, spz58624, raizell, visionik, tykus24, mostlikely, nagasher, zancrowe, kevin4001, damubbster, commandonut, sadiga, jt00010177, vidicarus

Balance changes:

  • Removed friendly commander reclaim
  • Changed grenadier group preference to back
  • Changed default bounty to 0.25

POV Camera Mode, Spectator Selection, Holodeck Improvements

  • A POV camera mode that follows a unit and watches the action from their perspective! The default keybind for this is Ctrl+Shift+M.
  • More details can be found on the following thread in our forums: https://forums.uberent.com/threads/new-pov-camera-mode-testing.72119/

Alternative Win Conditions

  • Sudden death for teams (protect your weakest player)

Sim Speed Control for Local Servers

  • Added sim speed control for local servers with key bindings -/=

AI Improvements

  • Added AI shared armies
  • Added resume anywhere for AI games with no human players

Fixes

  • Fixed black screen joining game over state
  • Added social notifications when uberbar hidden
  • Fixed broken classic galatic war saves with missing combined unit_list.json for.ai and .player spec tags
  • Changed handling of look at player for spectators to use units
  • Changed label for dynamic alliances eco sharing from RESC to SHARE ECO

Modding

  • Added Friendly_Commander reclaim type and excluded friendly commanders from default unit reclaim type. Commander reclaim can be enabled again by adding Friendly_Commander to reclaim_types.

The Performance Update: Titans Update 99377

Summary of Changes

  • Added Multi-threading support to both client and local servers
  • Tweaked AI
  • LZ4 compression for server mods
  • Major rework of the System Editor
  • Lots of bug fixes and polish

Full changelog below

Multi-threading support

  • Added option to server settings tab to enable multi-threading for local servers.
  • Added server command line option “–mt-enabled” which enables server multi-threading if present.
  • The Nav, Physics, and AI updates are now run in parallel when enabled.
  • These changes do not affect PA servers, only local and private servers (if configured)

AI changes

  • Retrained all AI neural networks.
  • Made changes to reduce AI baiting
  • Support for unit restrictions in new game lobby (work in progress)
  • Added multi-thread safety to the AI neural networks

LZ4 compression for server mods

  • Enable LZ4 server mod compression on servers with replay version >= 2, to help reduce client load times on servers with large mods
  • Added check to enable LZ4 server mod compression only on new servers that can support compression based on replay version sent in login acceptance message.
  • Currently this also changes replays. Older builds cannot load replays created by newer builds with LZ4 compression of server mods, but newer builds can load older replays
  • Server version and buildid also sent in login acceptance message will be used for custom server checks in future.

System Editor changes
Refactored system_editor UI, system_editor_view and system_editor_planet

  • Fixed issues where CSG would be lost
  • Fixed lost advanced edits due to events not firing
  • Fixed resolution scaling not set causing incorrect air zoom calculation
  • Fixed unnecessary rebuilding when changing planet
  • Fixed metal spots disappearing when finished editing (invalid placement)

Camera, camera_controller, camera_contoller_planet and camera_controller_space changes:

  • Added mouseLocationAsJson
  • Added toLatLng (was planet private)

System_editor_view and system_editor_planet changes:

  • Fixed encodeCSGBrushListJson to encode preview brushes or builder brushes in planet
  • Fixed addMetalSpot to validate metal spot and any mirror when placed
  • Renamed senedSelectedPlanetToUI to selectedPlanetChanged and cleaned up usage in view
  • Renamed sendSystemSpecToUI to systemChanged and cleaned up usage in view
  • Renamed updateUIPlanetMetalSpots to selectedPlanetMetalSpotsChanged and cleaned up usage in view
  • Renamed updateUIPlanetLandingZones to selectedPlanetLandingZonesChanged and cleaned up usage in view
  • Added selectedPlanetCsgChanged to view
  • Moved terrain editing status from view into planet (it’s per planet which fixes lost CSG and unncecessary rebuilds)
  • Moved UI interaction out of planet world into view
  • Moved UI planets ready from planet world to view and renamed to updatePlanetsReady
  • Added arePlanetsReady to planet world
  • Added basic camera lookAt support for planet mode to view (TODO: space camera)
  • Added systemEditor.convertSelectedPlanetToAdvanced for advanced editing in UI to view and planet
  • Added selectedPlanetEditingChanged and selected_planet_editing message for advanced editing in UI to view
  • Added selectedPlanetEditingAsJsonMessage to view
  • Added setLandingZoneSize to planet for advanced editing in UI to view and planet
  • Added camera_movement message for UI to view
  • Added planent_csg updates for UI with selected planet index and current CSG selection for every change when editing terrain to view
  • Added selected_csg message for UI when selectected CSG changes to view
  • Added editing mode and planet status to selected_planet_index message for UI to view
  • Added mouse location to time message for UI (to avoid spamming another UI message) to view
  • Refactored state handling to use new engine messages
  • Added handling to restore editing state when changing planets

System Editor Advanced mode changes

  • Changed advanced edit of no preview placeholder to convert with no csg, metal spots or landing zones
  • Changed advanced edit of terrain preview to convert csg only with no metal spots or landing zones
  • Disabled advanced edit mode changes while planets are building
  • Added landing zone rules editor with camera support to look at landing zone when selected
  • Added landing zone size
  • Added display of delete key bindings when editing metal spots and landing zones
  • Added camera location
  • Added mouse location

System_editor_view / system_editor_planet, csg_brush_preview changes

  • Added resetSystem for loading entire system
  • Added previewSelectedPlanet and updateSelectedPlanet
  • Added releaseCsg and changed grabSelectedCsg to save original position
  • Added cameraLookAt with space camera to focus on sun
  • Added cancel check to release grabbed CSG
  • Added saveUndoPosition and restoreUndoPosition to CSG brush preview
  • Renamed buildAllPlanets to previwAllPlanets
  • Tweaked setLandingZoneSize
  • Tweaked systemChanged and selectedPlanetChanged from first pass
  • Tweaked updatePlanetSpec

Additonal changes

  • Added basic camera support to planet view in system editor via camera_movement handler and api.camera.lookAt
  • Added planet selector with sun zoom to celestial (no more accidentally changing orbits trying to select a planet)
  • Added thrusters required for attack to advanced edit
  • Added clickable CSG command bar showing key bindings when CSG selected (was key bindings help)
  • Added api.terrain_editor.releaseCsg with ESC handling to cancel grabbed CSG and restore original position
  • Added sandbox back into biomes
  • Cleaned up handling of planetCSG, metal_spots and landing_zones conversion to source > brushes, metal_spots, landing_zones
  • Cleaned up initial loading of system
  • Added buildAllPlanets to replace convertAllToTerrainPlanets with checks for existing status to system_editor_view
  • Added resize handling to system editor when editing controls section overflows screen height eg long landing zone lists
  • Added key bindings help when editing csg to system editor
  • Tweaked advanced landing zone size and selected csg updates in system editor
  • Added api.settings.title
  • Added systemEditor.set_flooded_csg and systemEditor.set_no_features_csg
  • Tweaked handling of release CSG
  • Added hasUndoPosition and checks for newly placed CSG with no undo position
  • Fixed message spam when planet or CSG grabbed
  • Fixed csg selection not cleared when ending CSG editing
  • Fixed selected csg not updated when placing new CSG
  • Fixed flooded and weight params not preserved in preview CSG

Bug fixes/improvements
Client_connection changes

  • Added CONNECT_TIMEOUT of 5 seconds and STATE_INITIALIZED
  • Added RECONENCT_DELAY of 0.5 seconds and STATE_RECONNECTING
  • Changed MAX_RETRIES to 2 ( best handled in UI where we can provide feedback)
  • Fix for change from list to vector in ThreadPool and TaskBatch where mTasks size is 1 (macos crash fix).

Connect_to_game scene

  • Added cancel button visible for non Ladder1v1 games after first failure which cancels immediately if no penidng engine connection
  • Changed DEFAULT_CONNECTION_ATTEMPTS to 5 (now less in engine)
  • Added DEFAULT_CONNECT_DELAY of 2 seconds when connecting to a new local server (reduces chance of first time fail while server is still starting)
  • Added DEFAULT_RETRY_DELAY of 5 seconds
  • Added connection attempts of 15 with retry delay of 10 seconds when loading local saved games (server is non responsive when loading big saved games)

Other fixes

  • Updated to FMOD 4.44.64
  • Attempted fix for AMD green planet bug
  • Fixed missing build bar images for Enderstryke71 and Nefelpitou commanders.
  • Fixed incorrect economy rate when new player joins an empty slot cleared by another player leaving / kicked / spectating (or an AI removed) that was an economy rate not 1.0
  • Fixed long timeouts with many retries when connecting to non existent or stealh blocked servers.
  • Fixed loading of big saved games
  • Added cancel button while connecting to server
  • Fix for planet wide patrol task not getting enough initial patrol points, causing the task to constantly reset itself and cause lag.
  • Patrol task, auto repair task, and anti entity task now filter possible targets faster. This represents a decent perf boost for later game.
  • Fixed bounty claimed by ally voice over playing in group for nuclear missle ready.
  • Removed the ?_? AI name, since it was not displaying properly on at least one platform.
  • Fixed lobbyId typo in start rejoinGame, lobbyId not set in matchmaking, ko db extender breaking systems and player guide not scrollable
  • Fixed rejoinGame not settings mods, etc due to consistent use of lobbId vs lobby_id
  • Fixed lobbyId not saved in matchmaking
  • Fixed broken systems when not initialised correctly with default value of empty array by ko db extender
  • Fixed player guide not scrollable due to incomplete white flash fix
  • Fixed server mods not uploaded during host connect for manually started local server
  • Changed community mods CDN URL
  • Removed the Mutex from swizzletree. Instead mEnumerationCount is a std::atomic.
  • Fix for an uninitialized variable that was preventing users from being able to change the playback rate of replays
  • Removed a couple of very spammy log messages
  • Fix for burnables attempting to write out to the burning curve during the shutdown call when the curve was already updated by the call to incinerate on the same tick.
  • We no longer query the order’s unit’s position for every pass of (is my fellow unit close enough to me). For area patrols with lots of units, this is a huge perf win.
  • Fixed the army patrol target cache to work more like it was initially intended.
  • Added sim performance percentage next to game time in live_game_options_bar.
  • Fix for agent looking at wrong move type value when determining if it should just steer towards its slot position.
  • Fix for formation looking at wrong move type value when determining grid and cushion size.
  • Fix for group moving an agents goal to its slot position when the slot position is not valid.
  • Fixed nav agent logic regarding when to steer towards their group slot position and when to use their own ground path.
  • Fix for a nav agent variable getting modified on when it wasn’t supposed to be.
  • Adjusted the logic controlling what nav search spaces get updated per tick.
  • Minor adjustment to nav to prevent units from remaining stuck due to not having a flow field for an extended amount of time.
  • Adjusted nav group logic so that slots are not treated as ahead of the group when the group is not moving.
  • Added gNoMods to startupJS for better handling of –nomods by community mods.
  • Added cores, memory and nomods to getSetupInfo and UI start scene.
  • More multi-threading protection for the unit type db.
  • Fix for Collision Geometry potentially rebuilding its BVH in one thread while another thread is walking the tree. Would only occur if there were multiple AIs and multi threading was enabled.
  • Fix for uninitialized variable in nav agent.
  • Adjusted AsyncParallelForDriver to split work more evenly over threads.
  • Added getVersion to AudioWrapper, NullAudioWrapper, FmodAudioWrapper with decoding and logging of FMOD version.
  • Added getVersion / getRenderer / getShaderVersion to GLRasterizer, NullRasterizer and Rasterizer
  • Added fmod_version, opengl_version, opengl_renderer and opengl_shader_version in getSetupInfo for UI
  • Moved where feature observables are removed to prevent features from mutating the sim history during the retire entities step.
  • Fix for octree::walk deleting the FindState we are working before we were really done with it.
  • Fix for failing to parse a unit type string if one of the unit types returned an empty spec set. This can happen if a spec string includes one of the Custom unit types, but there are no mods installed that makes use of that unit type.
  • Added defeated status and AI personality to army replay info
  • We are no longer allocating a string eveytime we validate a build order. We do this often enough that this is a decent perf improvement.
  • Added checkboxes for selected CSG pathable, mergable, no features and flooded flags
  • Added display of selected CSG JSON (temporary until full parameter editing is finished)
  • Added clearMergableCsg, setFloodedCsg, clearFloodedCsg, setNoFeaturesCsg and clearNoFeaturesCsg to api.terrain_editor
  • Improved and renamed respondToResize to checkResize with cleaner handling of landing zone and CSG json overflow
  • Fixed uninitialised weight, weightHard and weightScale
  • Fixed revert to standard mode while advanced editing with zero CSG, metal spots and landing zones
  • Fixed remote saved games not showing last saved time and incorrectly sorting to bottom of saved games list
  • Fixed minor scroll overflow in frame for player guide article
  • Fixed –nomods handling using new gNoMods in connect to game, new game and replay loading
  • Fixed api.net.joinGame never returning for invalid lobbyId
  • Added cancel to join game after waiting 10 seconds
THE GALAXY WON'T CONQUER ITSELF Get it now on Steam!
Get It on Steam

90% off for classic PA owners