[/p][p]Today we’ll be looking at the impact the changes of the 4.3 ‘Cetus’ Open Beta has had on performance, with graphs and a comparison video.
[/p][p]As a reminder - during the Cetus cycle, dev diaries will be on a once-every-two-week cadence.[/p]
Performance
[p]Back in 3.14, we had hit the limits on how far we could go with optimization with many of the systems of Stellaris. In the 4.0 update, we changed planet and pop systems to one that would be a better foundation for future performance improvements. Alongside the design changes to reduce ship counts and balance the economy, with 4.3 we’re finally able to deliver some of those promised improvements.[/p][p]We’ve been running side-by-side comparisons of different versions of Stellaris, and while the major differences in versions means we can’t do direct comparisons, we tried to minimize divergence. [/p][p]Today we’ll be showing off 3.14.1592653 vs. 4.3, with Default settings - except that it’s on a Huge Galaxy, Ensign Difficulty, with the Prethoryn Scourge as the crisis. Autosaves were disabled on this run so they wouldn’t interfere with the recording. Both of these were run on the same higher end Windows machine, an i9-14900K with 32 GB of ram and a GeForce RTX 3060, and as some of these changes are hardware dependent we’re very interested in hearing about your performance experiences in the Cetus Open Beta.[/p][p align="center"][/p][previewyoutube="qH52AqXxguM;full"][/previewyoutube][p]Here’s a chart looking at seconds per year, generated from .tsv’s using the [c]-gamestatetimer[/c] command line parameter.[/p][p][/p][p]-gamestatetimer? Explain.[/p][p]If you add [c]-gamestatetimer[/c] to the launch options of Stellaris, the game will generate a game state timer log in your logs directory.[/p][p][/p][p][img src="https://clan.akamai.steamstatic.com/images/9703436/d93b640a580cc141a984ccc394821ceea730475b.png"][/img][/p][p]My command line parameters.[/p][p][/p][p]This is a tab separated text file that looks something like this:[/p][p][/p][p][c]Game Date Time Unit Seconds[/c][/p][p][c]2200.01.01 Micro 0.000611[/c][/p][p][c]2200.01.01 Micro 0.001599[/c][/p][p][c]2200.01.01 Micro 0.006324[/c][/p][p][c]2200.01.01 Micro 0.008577[/c][/p][p][c]2200.01.01 Micro 0.000912[/c][/p][p][c]2200.01.01 Micro 0.002078[/c][/p][p][c]2200.01.01 Micro 0.000530[/c][/p][p][c]2200.01.01 Micro 0.001898[/c][/p][p][c]2200.01.02 Micro 0.073470[/c][/p][p][c]2200.01.02 Micro 0.003261[/c][/p][p][c]2200.01.02 Micro 0.000590[/c][/p][p][c]2200.01.02 Micro 0.001874[/c][/p][p][c]2200.01.02 Micro 0.001394[/c][/p][p][c]2200.01.02 Micro 0.011386[/c][/p][p][c]2200.01.02 Micro 0.001238[/c][/p][p][c]2200.01.02 Micro 0.002009[/c][/p][p][c]2200.01.02 Micro 0.000521[/c][/p][p][c]2200.01.02 Micro 0.001725[/c][/p][p][c]2200.01.03 Micro 0.023613[/c][/p][p][c]2200.01.03 Day 0.047612[/c][/p][p][c]2200.01.03 Micro 0.003535[/c][/p][p][c]\[...And so on for a little over 1.2 million more lines][/c][/p][p][/p][p]Importing this .tsv into a spreadsheet and filtering out Time Units to just show the Year entries will give you the time the year ending on that date took, just as if you had run the [c]one_year[/c] console command over and over again three hundred times.[/p][p]Warning: These files can get pretty big, as they record the micro-tick times, and end up at about 30 MB of text for 300 years of game tracking.[/p][p]The [c]-incrementalsaves[/c] launch option I have up there keeps save games at 2200, 2275, 2300, 2325, 2350, and every 50 years thereafter until 2600. We use them to look at the galaxy’s development in interesting automated runs.[/p][p][c]-loadrandomseed[/c] is used to reduce game divergence.[/p][p][img src="https://clan.akamai.steamstatic.com/images/9703436/0220e8453e3149f794b6eee65685b46da24a4cf0.png"][/img][/p][p]The 3.14 build started at 30.52 seconds per year, while our 4.3 build started faster than a month per second at 11.54. It took until 2269 for 4.3 to slow down to 3.14’s starting time, by which point 3.14 was taking 44.63 seconds per year.[/p][p]The 4.3 game ended at 2500.01.01, we ended the 3.14 game halfway through 2506 because at that point it was already nearly two hours longer than the 4.3 video.[/p][p]Here’s a chart showing the cumulative elapsed time it took each game to reach the specified game years.[/p][p]
[img src="https://clan.akamai.steamstatic.com/images/9703436/00276ee18d42cb1ae17f69371805d8c609839fbf.png"][/img]We’re pretty happy with these improvements, but we’re also not quite done yet.[/p][p]We’re updating the Cetus Open Beta today with a branch that has some more experimental performance updates. As this branch includes experimental changes, we’d like to remind people that we have a Cetus Rollback branch that uses last week’s build. In my internal tests, this build was about 4% faster than the main Cetus Open Beta, but we think we’re going to be able to squeeze a little more out of it.[/p][p][img src="https://clan.akamai.steamstatic.com/images/9703436/977ad4bfe6890d408faac52b19c725da69629c4e.png"][/img]Three games from an identical save, same random seed, i7-13700k w/32 GB RAM, RTX 3060 Ti[/p]
4.3 ‘Cetus’ Open Beta Patch Notes 2026-02-06
[p]Here are the preliminary release notes for tomorrow’s Open Beta update:[/p][p]Balance[/p]- [p]Changed the scaling of Imperious Architecture[/p][/*]
- [p]Increased the maximum damage scaling for weapons that increase damage based on target ship size.[/p][/*]
- [p]Reduced the effect that Councilor skill levels has on Agenda speed.[/p][/*]
- [p]Loyalty Circuits has been replaced by Compliance Filters as an auto-modding trait. This means that Augmentation Bazaars can pick it on game start as well.[/p][/*]
- [p]The augmentation center now provided 400 jobs for Driven Assimilators[/p][/*]
- [p]Augmentor jobs for regular empires now provide flat bonus pop growth, not a multiplier to existing pop growth.[/p][/*]
- [p]Synthetic Fertility now starts with Powered Exoskeletons[/p][/*]
- [p]Significantly changed the Eater of Worlds Covenant Powers and Auras[/p][list]
- [p]The Doom power for the Eater of Worlds no longer immediately starts a war.[/p][/*]
- [p]The Aura Intensification of the Eater of Worlds no longer summons ships from nothing.[/p][/*]
- [p]The Aura Intensification of the Eater of Worlds now increments your Doom Intensity.[/p][/*]
- [p]The Doom power now manifests the Doom of the Eater fleet.[/p][/*]
- [p]Between 3 and 6 Intensity, this fleet only has Teeth (escorts).[/p][/*]
- [p]Between 6 and 12 Intensity, this fleet has Teeth (escorts) and Fangs (cruisers).[/p][/*]
- [p]At 12 or higher Intensity, this fleet has Teeth (escorts), Fangs (cruisers) and Tusks (Battleships).[/p][/*]
- [p]Intensity is capped at 50.[/p][/*]
- [p]The number of ships depends on Doom Intensity.[/p][/*]
- [p]Manifesting a new fleet will instantly dismiss any current fleet.[/p][/*]
- [p]The fleet will appear in orbit of any planet with a Sanctum of the Eater (or if one doesn't exist, your capital).[/p][/*]
- [p]Refugee Attraction was not working at all, whoops.[/p][/*]
- [p]The cross-platform Cloud Save system now works as expected.[/p][/*]
- [p]Tidied up some Cybernetics related tooltips.[/p][/*]
- [p]Remove flickering from buildable area for Deep Space Citadel.[/p][/*]
- [p]Fire Oracles now only appear if the main species of an empire has habitability \\<= 50% (before it was any local species)[/p][/*]
- [p]Wilderness empires now pay Biomass when terraforming a Volcanic World into a normal habitable planet[/p][/*]
- [p]Fixed command_limit_mult acting like command_limit_add.[/p][/*]
- [p]Significantly reduced the lag spike when creating the Solarpunk country[/p][/*]
- [p]Optimization of functions related to string[/p][/*]
- [p]Optimized memory allocations in Alert Manager[/p][/*]
- [p]Improved fleet icon logic[/p][/*]
- [p]Added experimental economic threading changes to the Open Beta[/p][list]
- [p]New dependency tracking should reduce the cpu wait time when updating and reducing the “monthly stutter”[/p][/*]
- [p]Decreased sizes of threaded batches for objects that are many and becomes uneven in cpu need for better distribution over multiple cores[/p][/*]
- [p]Mainly for reusing memory and reduce time spent on allocations/deallocations in the update[/p][/*]
- [p]Decreased sizes of threaded batches for objects that are many and becomes uneven in cpu need for better distribution over multiple cores (yeah here as well)[/p][/*]
- [p]Moving trigger dependent calculations out to suitable pulses instead (Micro, Daily, Weekly, Monthly, Yearly)[/p][/*]
- [p]Number of trigger evaluations optimized[/p][/*]
