Hello Commanders, @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 https://forums.uberent.com/threads/multithreading-the-future-of-pa-and-titans.73101/
Planetary Annihilation: TITANS
Uber Entertainment
Uber Entertainment
2015-08-18
Singleplayer Multiplayer Coop
Game News Posts 100
🎹🖱️Keyboard + Mouse
Very Positive
(10664 reviews)
https://planetaryannihilation.com/
https://store.steampowered.com/app/386070 
The Game includes VR Support
Planetary Annihilation: Titans - Linux [906.01 M]
TITANS is the huge stand-alone expansion to the already massive-scale RTS Planetary Annihilation, which includes the base game and adds tons of new features:
Devastate your enemies with 5 massive Titan-class super units like the earth-shaking Atlas bot and lightning-wielding Zeus airship!
Expand your strategic arsenal with 16 new units such as versatile Hover Tanks, indomitable Orbital Battleships, and voracious Nanobot Swarms!
Elevate your game with new planets that feature multi-level terrain available in both single and multiplayer. Get up to speed faster with a new, streamlined tutorial experience, then take your game to the next level with the new Bounty Mode option for AI skirmish and multiplayer,
Including everything you loved about Planetary Annihilation:
- Epic Scale - Command armies with numbers in the thousands across multiple planets on land, sea, air, and even in orbit.
- Epic Single-Player - Galactic War is a twist on traditional real-time strategy campaigns that has players battling across a dynamic galaxy filled with procedurally-generated content. Every playthrough is different.
- Epic Multiplayer - Play with up to ten friends (or enemies) in massive free-for-all and team-based matches. Or, compete in the 1v1 ranked play ladder.
- Smash Planets - End games by destroying entire planets with giant lasers, asteroid collisions, and the new planet-splitting Ragnarok Titan!
- Advanced Command And Control - Automate your armies with intuitive controls and features, allowing you to create and manage massive armies and production lines with ease across multiple fronts on multiple planets at once!
- Instant Replays - View in-match recordings in real-time while matches are in progress. See when a battle turned by rewinding the game to any point, and use Play From Here to turn it back in your favor.
*Must meet Minimum System Requirements for offline play
- OS: Any Linux distribution supported by Steam
- Processor: MODERN Quad Core ProcessorMemory: 8 GB RAM
- Memory: 8 GB RAM
- Graphics: OpenGL 3.2+. 1 GB GPU RAMNetwork: Broadband Internet connection
- Storage: 5 GB available spaceAdditional Notes: https://planetaryannihilation.com/support/linux/
- Processor: MODERN Quad Core ProcessorMemory: 16 GB RAM
- Memory: 16 GB RAM
- Graphics: Dedicated Graphics Chip (Not Integrated) / OpenGL 3.2+. 1 GB GPU RAMNetwork: Broadband Internet connection
- Storage: 7 GB available space
[ 5951 ]
[ 3198 ]