New patch in publicbeta (v120) with performance improvements for online co-op
This week I've been working on optimizations for online co-op. This was a particular problem when you had built up your base and there were a lot of characters around.
To get a bit technical, there were two main problems. Firstly the prediction code for nearby characters was a major bottleneck (which doesn't exist in single player). Secondly the fog of war calculations were causing framerate spikes, because unlike in single-player I was performing them on the main thread (for reasons relating to the need for determinism in multiplayer). In both cases the solution is I've offloaded them to different threads. PCs with 8 cores should benefit most from this, but I would guess most people have at least 4 physical cores, but 8 virtual cores with hyperthreading, so will probably be okay.
Anyway that was the most glaring performance problem, but I am of course aware there are other optimization needs besides this. Multiplayer will still be a little worse than single player, and even in single player it doesn't always run at a solid 60 fps on my reasonably high end PC. So I will come back to this again. (I think the main culprit is the renderer.)
Here's the changelist:
EDIT - I've released another patch, v121, which mostly just fixes an error message introduced in v120.
[h3]What's this publicbeta thing?[/h3]
v120 will be in the "publicbeta" branch for a while, before pushing it to the main game. If you want to try the latest features as they come out (and help test them!) it's a good idea to start using this branch. But keep in mind:
To use publicbeta, just right-click on Survivalist: Invisible Strain in your Steam library and go to Properties, then Betas and in the drop-down select "publicbeta".
To get a bit technical, there were two main problems. Firstly the prediction code for nearby characters was a major bottleneck (which doesn't exist in single player). Secondly the fog of war calculations were causing framerate spikes, because unlike in single-player I was performing them on the main thread (for reasons relating to the need for determinism in multiplayer). In both cases the solution is I've offloaded them to different threads. PCs with 8 cores should benefit most from this, but I would guess most people have at least 4 physical cores, but 8 virtual cores with hyperthreading, so will probably be okay.
Anyway that was the most glaring performance problem, but I am of course aware there are other optimization needs besides this. Multiplayer will still be a little worse than single player, and even in single player it doesn't always run at a solid 60 fps on my reasonably high end PC. So I will come back to this again. (I think the main culprit is the renderer.)
Here's the changelist:
- Optimizations, mainly for online co-op when a large number of characters are nearby
- Fix for being able to activate Dark Past quest twice for the same person
EDIT - I've released another patch, v121, which mostly just fixes an error message introduced in v120.
[h3]What's this publicbeta thing?[/h3]
v120 will be in the "publicbeta" branch for a while, before pushing it to the main game. If you want to try the latest features as they come out (and help test them!) it's a good idea to start using this branch. But keep in mind:
- Because it's the bleeding edge it could be less stable
- If you want to be able to play online co-op with someone you'll need to be on the same version as them
- If you go back from the "publicbeta" branch to the main branch you may not be able to load savegames created on "publicbeta".
To use publicbeta, just right-click on Survivalist: Invisible Strain in your Steam library and go to Properties, then Betas and in the drop-down select "publicbeta".