• We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.

Stellaris Dev Diary #170 - Performance and other technical issues

Hello, my friends! This is Moah, Tech Lead of Stellaris typing. I can finally talk about what you’ve all been waiting for: How many new platypi will there be in Federations? After weeks of…

Well, apparently, I should be "more technical." But before we jump into the mysteries of the Stellaris code, I want to take the time to talk a little about the balance between adding new features, improving performance and stability – especially in terms of multiplayer and the dreaded out-of-syncs (dreaded at least by me).

The Delicate Balance
Stellaris, like most decently sized code bases, is like a complex game of Mikado or Jenga: every part is connected in some way to every other part. When you add a feature, you add more connections. If you’re careful, you add only a few, if you’re in a rush you add a bit too many. This generally leads to Unplanned Features (aka bugs). In addition, once we see them perform in the actual game, we tend to expand features in new, unexpected ways, leading to more Unplanned Features(tm).

Once we realize what is happening, we start being more careful. Maybe too careful. Checking too many things, too often, ensuring that this interaction that is supposed to never actually happen is actually not happening. Not now, not later. Not ever.

So you have removed the unplanned features, but the game is a bit, ah… too careful. Some would say slow.

So you remove some of these checks. You realize that you don’t need to loop around the galaxy, you can just loop around this one tiny planet. Then you go one step further, and think “well I can maybe do that check only every three weeks, and this calculation needed by all these checks, I could store it in here and reuse it until the next time it changes.”

So now the game isn’t so careful anymore, we’re back in unplanned feature territory. But if the caching (storing/reusing calculations) happens at different times on different machines, you get slightly different results (like asking a developer for something before and after they had coffee).

Slightly different results are what OOS thrives on! Clients and servers have 0.0001 cost difference, compounded over time, that corvette is bought on the server but not on the client.

So you remove your “smart” algorithm. You replace it with the correct algorithm. You lose half of what you gained in step 2 and reintroduce some bugs. Probably.
Rinse and repeat.

But enough about my morning routine! Let’s talk about…

Performance
Stellaris fans are like C++ programmers: performance is always on their mind. To be fair, it has also been on ours a lot lately. We know that it’s not all that it could be, especially in late game and with the bigger galaxies. With that in mind, we’ve taken time to improve performance in a bit more depth than we usually can. We looked at what was taking the most time, and as everyone knows that is…

G3Zg2ENmwufWgqUXGFjTEebkxlbQzYRGI0diuSOCrFfUcSl9Xn8EkYCyzAUtWAyCdVXt5biT3vv65T4n-EnA5YmHZXb_Gpp9ydvqh28lj_Oa7py3yU3MHETwURjuo1QD4sFZiZNB


Pops.

There are many reasons why pops consume a lot of time in Stellaris, but the main one is that by endgame we have SO MANY of them. SO So so so so many. And they do so much! Pops have to calculate how good they’d be at every job (they do so every 7 days). Then they have to fight every other pop on the planet to get the job they’re best at. They also have to check if they could have a specific ethic. If they could join a specific faction. How happy they are. How happy they could be. How happy they would be on that planet over there.
All these things trigger modifiers calculations. If you remember my last dev diary, you know that modifiers are the only thing more numerous than Pops in Stellaris. And they all depend on each other. Calculating them is like pulling on a thread and getting the whole sweater.


OK, but what did we actually do about it?
Well first, I’ll admit I may have been a bit pigheaded on the whole “we need to do the jobs distribution every day because we don’t know when new jobs are added.” We reexamined this assumption, and jobs distribution is now only done on demand. It was also rewritten to iterate over a lot fewer things.

We also noticed a few triggers going through every pop of an empire to check if one or more are enslaved, decadent, or other things that can be tested at the species level. So we made new triggers to test these things at the species levels. In the same spirit, we had events going through every ship to find a fleet, so we added triggers at the fleet level.

Second, We’ve also reworked the approach to checking if pops can change ethics (and also made it work again), or if they can join factions.

Finally, we’ve looked for (and found) opportunities to use more multi threading.

But enough talk! What’s the result? Well, if a picture is worth a thousand words, here’s the answer at 30000 words a second:


The video compares the performance of 2.5.1 “Shelley” to 2.6 “Verne'' when running a save game from the community, which can be found attached to this post, with over 20000 pops. It was recorded on my work computer (Intel Core7-7900X @ 3.30Ghz, 10 cores and 20 threads, and AMD R9 Fury). You won’t necessarily get the same results, the exact difference in performance will vary with your computer, and the exact situation in your own save games, of course. On average, we’ve found something between 15% and 30% improvement in late game situations.
This save is just ideal to showcase the impact of the pops improvement.

DYxcPB_pqZfHKxxtAj0sh_Y3nx7zXM4OMcUHTkgNsDK9csuQgEECkgc6jVmUEgWpoa6lD2e9kfYdssD61j2I57mhM0XcyT20wfu8fFIZbP-Usqnw2PShuEAD0_-n-ZTNFcH0NJR6


What is this average anyway? How do you know?
Well, we have synths playing the game all night, every night. In the morning, we check how far they were able to go. We also ask them how many errors they encountered, what their endgame looked like, whether they got any OOS and then put all of that in tables and graphs, with many colors. Then we wipe the synths, so they don’t ask pesky questions about souls and whatnot.

EwNw1Mhvr5FLcwYQYuZClsoMxr8qHs3nF3VPqExEcAJrWCvISTEc2fcl3fNLWzQlWKdxuDLAGHEagL9FXOrtio6XazmKpx_rsR7Ri58Ts2tFbq7OcWPdsIG_ayumIutkMGm2VnD_


In conclusion
Although we keep performance in mind and do our best to keep it reasonable, we’re happy we had a chance to take a deeper dive into the issue. Hopefully the changes will spark as much joy for you as it did for us, and we’re looking forward to your feedback!

Next week will feature another dev diary about the other thing you’ve all been waiting for… MORE PLATYPI!

PS: The save file we're using is from the community, one of the performance threads. We are however unsure where we originally got it from. So if you recognize it, or if it's yours please tell us so we can credit you properly.
 

Attachments

  • perf_massive.sav
    4 MB · Views: 289
Last edited:
  • 1Like
Reactions:

FinellyTrained

Colonel
14 Badges
May 31, 2019
923
261
  • Stellaris: Synthetic Dawn
  • Europa Universalis IV
  • Stellaris
  • Stellaris: Digital Anniversary Edition
  • Stellaris: Leviathans Story Pack
  • Stellaris - Path to Destruction bundle
  • Stellaris: Humanoids Species Pack
  • Stellaris: Apocalypse
  • Stellaris: Distant Stars
  • Stellaris: Megacorp
  • Stellaris: Ancient Relics
  • Stellaris: Federations
  • Crusader Kings III
  • Stellaris: Nemesis
Thank you for this.

Just to throw this out here:

Have you ever thought about just reducing the amount of indvidual pops (i.e. lower pop growth rate as well as housing and all the population dependent thresholds, while accordingly increasing the ressources create by jobs?).

An indivudual pop is an abstract unit anyway, so not why make the unit a bit bigger? I wouldnt care if my planets are maxed out late game with 40-60 or 100-120 pops if the ressources provided / supply needed is the same. I mean, before 2.0 the hard cap for pop units per planet was the number of tiles, i.e. 25.
It actually will result in all sorts of problems with, say, 1 job buildings (necessity to allow 2 pop unit work a 1 job building requires some sort of GD decision).

But, actually, looking for the laziest solution possible as usual, it might be feasible to switch off pop growth to turn it into pop unit effectiveness. Say, 10 planets with 1000 pops all lose their (say) 0.1 pop per month growth, all it is added up as 1 conditional pop per empire and once a year we do something like 12 conditional pops / 1000 = 0.012 and every pop in the empire gets a 1.012 modifier to housing requirements, amenities usage, resource consumption/production. Probably will create other problems I didn't think of (like where to get new pops to settle another world, though, why not once a year allow some "reformation" of empire pops to allow them to yield extra population in exchange for some of previously acquired effectiveness in a form, say, something like a colony-type ship (let it be called resettlement ship), which can be sent to some world to settle there).

Might be kind of solution, because hardcore fans will probably always surpass any expectations regarding probable limits on in game population.
 

NeFuRii

Captain
40 Badges
May 2, 2006
320
808
  • Stellaris: Ancient Relics
  • Stellaris: Humanoids Species Pack
  • Stellaris: Apocalypse
  • Europa Universalis IV: Rule Britannia
  • Cities: Skylines - Parklife
  • Stellaris: Distant Stars
  • Europa Universalis IV: Dharma
  • Cities: Skylines Industries
  • Stellaris: Megacorp
  • Hearts of Iron IV: Expansion Pass
  • Hearts of Iron IV: Expansion Pass
  • Stellaris: Lithoids
  • Hearts of Iron IV: La Resistance
  • Stellaris: Federations
  • Crusader Kings III
  • Battle for Bosporus
  • Stellaris: Necroids
  • Stellaris: Nemesis
  • Hearts of Iron IV: By Blood Alone
  • Hearts of Iron IV: No Step Back
  • Europa Universalis IV: Rights of Man
  • Europa Universalis IV
  • Europa Universalis IV: Art of War
  • Cities: Skylines
  • Europa Universalis IV: Common Sense
  • Cities: Skylines - After Dark
  • Europa Universalis IV: Cossacks
  • Cities: Skylines - Snowfall
  • Stellaris
  • Hearts of Iron IV: Cadet
  • Crusader Kings II
  • Stellaris: Digital Anniversary Edition
  • Stellaris: Leviathans Story Pack
  • Hearts of Iron IV: Together for Victory
  • Stellaris - Path to Destruction bundle
  • Cities: Skylines - Mass Transit
  • Europa Universalis IV: Mandate of Heaven
  • Hearts of Iron IV: Death or Dishonor
  • Stellaris: Synthetic Dawn
  • Europa Universalis IV: Cradle of Civilization
1) You mention desync issues in the dev diary, but you don't refer to it later. Does that mean you are still working on that? Or it is to be assumed that those got improved as well?

2) Would it be possible to make the job checking configurable ? Doesn't have to be in the GUI anywhere, it's enough to put it in a config file. I feel it will allow players to tweak the performance of the game to their liking while retaining the original feeling for those that might feel weird if their jobs don't update immediately. I would like this option for my multiplayer group, as one of my friends has a rather crappy PC. I think with this option enabled we could play more comfortably, while the 15-30% average performance increase in late game might be not enough for us.
 

ShoGuL

Field Marshal
101 Badges
Dec 2, 2005
2.805
2.377
  • Sword of the Stars
  • Heir to the Throne
  • Europa Universalis III Complete
  • Knights of Pen and Paper +1 Edition
  • Magicka
  • Majesty 2
  • March of the Eagles
  • Europa Universalis III Complete
  • Europa Universalis IV: Res Publica
  • Victoria: Revolutions
  • Europa Universalis: Rome
  • Semper Fi
  • Sengoku
  • Hearts of Iron III: Their Finest Hour
  • Sword of the Stars II
  • Supreme Ruler 2020
  • Supreme Ruler: Cold War
  • Victoria 2
  • Victoria 2: A House Divided
  • Victoria 2: Heart of Darkness
  • Rome: Vae Victis
  • Warlock: Master of the Arcane
  • 200k Club
  • 500k Club
  • Cities: Skylines
  • Stellaris: Nemesis
  • Deus Vult
  • Hearts of Iron II: Armageddon
  • Cities in Motion
  • Crusader Kings II
  • Crusader Kings II: Charlemagne
  • Crusader Kings II: Legacy of Rome
  • Crusader Kings II: The Old Gods
  • Crusader Kings II: Rajas of India
  • Crusader Kings II: The Republic
  • Crusader Kings II: Sons of Abraham
  • Crusader Kings II: Sunset Invasion
  • Crusader Kings II: Sword of Islam
  • Darkest Hour
  • Arsenal of Democracy
  • East India Company Collection
  • Europa Universalis III
  • Europa Universalis III: Chronicles
  • Divine Wind
  • Europa Universalis IV
  • Europa Universalis IV: Art of War
  • Europa Universalis IV: Conquest of Paradise
  • Europa Universalis IV: Wealth of Nations
  • Europa Universalis IV: Call to arms event
  • For the Motherland
Looks good! For some reason the music in that video reminded me of Stargate. Not sure why - is it a new track coming with Federations?

Have you heard the Megacorp track March of Profits ?? It always makes me think of Stargate.
 

Gilbert95

First Lieutenant
29 Badges
Dec 7, 2018
273
525
  • Cities: Skylines - Parklife
  • Victoria 3 Sign Up
  • Stellaris: Nemesis
  • Stellaris: Necroids
  • Crusader Kings III
  • Imperator: Rome - Magna Graecia
  • Stellaris: Federations
  • Stellaris: Lithoids
  • Age of Wonders: Planetfall
  • Stellaris: Ancient Relics
  • Surviving Mars: First Colony Edition
  • Stellaris: Megacorp
  • Surviving Mars: First Colony Edition
  • Stellaris: Distant Stars
  • Europa Universalis IV
  • Surviving Mars: Digital Deluxe Edition
  • Stellaris: Apocalypse
  • Stellaris: Humanoids Species Pack
  • Surviving Mars
  • Stellaris - Path to Destruction bundle
  • Stellaris: Leviathans Story Pack
  • Stellaris: Digital Anniversary Edition
  • Stellaris
  • Europa Universalis IV: Common Sense
  • Cities: Skylines
  • Imperator: Rome
  • Stellaris: Synthetic Dawn
  • Europa Universalis IV: Wealth of Nations
  • Europa Universalis IV: Art of War
I rarely get to late game (for reasons other than performance), but this is still appreciated. I also enjoy these kind of technical deep dive DDs. Thanks to @Moah and his (presumably) army of platypi. :D
 

MaeltneMealtime

Sergeant
52 Badges
Mar 1, 2019
57
58
  • Stellaris: Nemesis
  • Stellaris: Apocalypse
  • Surviving Mars: Digital Deluxe Edition
  • BATTLETECH - Digital Deluxe Edition
  • Cities: Skylines - Parklife
  • Stellaris: Distant Stars
  • Surviving Mars: First Colony Edition
  • BATTLETECH: Flashpoint
  • Stellaris: Megacorp
  • Imperator: Rome Deluxe Edition
  • Imperator: Rome
  • Prison Architect
  • Surviving Mars: First Colony Edition
  • Stellaris: Humanoids Species Pack
  • BATTLETECH: Season pass
  • Age of Wonders: Planetfall
  • Age of Wonders: Planetfall Deluxe edition
  • Age of Wonders: Planetfall Premium edition
  • Age of Wonders: Planetfall Season pass
  • Stellaris: Lithoids
  • BATTLETECH: Heavy Metal
  • Age of Wonders: Planetfall - Revelations
  • Stellaris: Federations
  • Crusader Kings III
  • Crusader Kings III: Royal Edition
  • Stellaris: Necroids
  • Age of Wonders III
  • Europa Universalis IV
  • Cities: Skylines
  • Pillars of Eternity
  • Stellaris
  • Stellaris: Galaxy Edition
  • Stellaris: Galaxy Edition
  • Stellaris: Leviathans Story Pack
  • Stellaris - Path to Destruction bundle
  • BATTLETECH
  • Surviving Mars
  • Stellaris: Digital Anniversary Edition
  • Leviathan: Warships
  • Cities in Motion 2
  • Crusader Kings II
  • Crusader Kings II: Legacy of Rome
  • Crusader Kings II: The Republic
  • Crusader Kings II: Sunset Invasion
  • Crusader Kings II: Sword of Islam
  • Dungeonland
  • Cities in Motion
  • Magicka
  • Sword of the Stars II
  • Stellaris: Synthetic Dawn
I'm trying really hard to be hopeful, but 15%-30% seems minimally acceptable. That video looks great (and more than the listed %), but apparently you've made a bit of an optimal situation without fleets? So that's a bit concerning.

I'm not exaggerating when I say that this is the most important dev diary to day. While I am very excited for Federation features, if the trio of performance/desyncs/AI aren't significantly improved I expect this will be the last DLC of Paradox that I support.

I wish there were a few more details on desyncs, and AI ... but I expect that's a different topic?
 

Gilad Pellaeon

Filthy Recidivist
78 Badges
Nov 3, 2011
363
788
  • Europa Universalis IV: Rights of Man
  • Stellaris: Galaxy Edition
  • Tyranny: Archon Edition
  • Crusader Kings Complete
  • BATTLETECH: Heavy Metal
  • Hearts of Iron IV Sign-up
  • Stellaris Sign-up
  • Hearts of Iron IV: Cadet
  • Stellaris: Digital Anniversary Edition
  • Stellaris: Leviathans Story Pack
  • Hearts of Iron IV: Together for Victory
  • Prison Architect
  • Europa Universalis IV: Mandate of Heaven
  • Stellaris: Galaxy Edition
  • Age of Wonders: Planetfall Sign Up
  • BATTLETECH
  • Surviving Mars
  • Hearts of Iron IV: Death or Dishonor
  • Age of Wonders III
  • Europa Universalis IV: Cradle of Civilization
  • Hearts of Iron IV: Expansion Pass
  • BATTLETECH - Initiate of the Order
  • Stellaris: Humanoids Species Pack
  • Stellaris: Apocalypse
  • Europa Universalis IV: Rule Britannia
  • Cities: Skylines - Parklife
  • Shadowrun: Dragonfall
  • Shadowrun: Hong Kong
  • Europa Universalis IV
  • BATTLETECH: Season pass
  • Imperator: Rome Sign Up
  • Stellaris: Ancient Relics
  • Europa Universalis III Complete
  • BATTLETECH - Beta Backer
  • BATTLETECH - Backer
  • Europa Universalis III Complete
  • Shadowrun Returns
  • Stellaris: Distant Stars
  • BATTLETECH: Flashpoint
  • Teleglitch: Die More Edition
  • Warlock: Master of the Arcane
  • 500k Club
  • Europa Universalis IV: El Dorado
  • Stellaris: Federations
  • Europa Universalis IV: Common Sense
  • Europa Universalis IV: Mare Nostrum
  • Stellaris: Synthetic Dawn
  • Cities: Skylines
  • Europa Universalis IV: Call to arms event
  • Cities: Skylines - Snowfall
More like 15-30% depending on your specific save and your machine, across the board.

... So I was right. :/

Unless one already owns a beefy system, it will be negligible and still a slow crawling mess.

Sorry, but "15%-30% on already good specs" is not what I had hoped for.

Time to shelve Stellaris for good, I guess. I already didn't have much hope in anything meaningful, but this... Meh. :(

Haven't started the game in weeks now. Time to finally uninstall for good and just stop looking back.
 

Make Victoria 3

Colonel
30 Badges
Feb 19, 2018
871
549
  • Europa Universalis IV: Mare Nostrum
  • Victoria 3 Sign Up
  • Europa Universalis IV: Dharma
  • Stellaris: Distant Stars
  • Europa Universalis IV: Rule Britannia
  • Stellaris: Apocalypse
  • Europa Universalis IV: Cradle of Civilization
  • Europa Universalis IV: Mandate of Heaven
  • Stellaris: Leviathans Story Pack
  • Stellaris: Digital Anniversary Edition
  • Europa Universalis IV: Rights of Man
  • Hearts of Iron IV: Cadet
  • Stellaris
  • Europa Universalis IV: Cossacks
  • Europa Universalis IV: Common Sense
  • Europa Universalis IV: El Dorado
  • Victoria 2
  • Europa Universalis IV
  • Crusader Kings II: The Old Gods
  • Crusader Kings II
  • Victoria 2: Heart of Darkness
  • Victoria 2: A House Divided
  • Europa Universalis IV: Res Publica
  • Stellaris - Path to Destruction bundle
  • Europa Universalis IV: Wealth of Nations
  • Europa Universalis IV: Third Rome
  • Europa Universalis IV: Conquest of Paradise
  • Europa Universalis IV: Art of War
  • Crusader Kings II: Sword of Islam
  • Crusader Kings II: Legacy of Rome
... So I was right. :/

Unless one already owns a beefy system, it will be negligible and still a slow crawling mess.

Sorry, but "15%-30% on already good specs" is not what I had hoped for.
Have you even watched the video they put in? It is about 3 times as fast and 15%-30% probably refers to the increase from start to finish and i would not be surprised if the improvement at the start is so tiny that a human would not even realize it (performance drops later in the game NOT at the start).
 

ShoGuL

Field Marshal
101 Badges
Dec 2, 2005
2.805
2.377
  • Sword of the Stars
  • Heir to the Throne
  • Europa Universalis III Complete
  • Knights of Pen and Paper +1 Edition
  • Magicka
  • Majesty 2
  • March of the Eagles
  • Europa Universalis III Complete
  • Europa Universalis IV: Res Publica
  • Victoria: Revolutions
  • Europa Universalis: Rome
  • Semper Fi
  • Sengoku
  • Hearts of Iron III: Their Finest Hour
  • Sword of the Stars II
  • Supreme Ruler 2020
  • Supreme Ruler: Cold War
  • Victoria 2
  • Victoria 2: A House Divided
  • Victoria 2: Heart of Darkness
  • Rome: Vae Victis
  • Warlock: Master of the Arcane
  • 200k Club
  • 500k Club
  • Cities: Skylines
  • Stellaris: Nemesis
  • Deus Vult
  • Hearts of Iron II: Armageddon
  • Cities in Motion
  • Crusader Kings II
  • Crusader Kings II: Charlemagne
  • Crusader Kings II: Legacy of Rome
  • Crusader Kings II: The Old Gods
  • Crusader Kings II: Rajas of India
  • Crusader Kings II: The Republic
  • Crusader Kings II: Sons of Abraham
  • Crusader Kings II: Sunset Invasion
  • Crusader Kings II: Sword of Islam
  • Darkest Hour
  • Arsenal of Democracy
  • East India Company Collection
  • Europa Universalis III
  • Europa Universalis III: Chronicles
  • Divine Wind
  • Europa Universalis IV
  • Europa Universalis IV: Art of War
  • Europa Universalis IV: Conquest of Paradise
  • Europa Universalis IV: Wealth of Nations
  • Europa Universalis IV: Call to arms event
  • For the Motherland
... So I was right. :/

Unless one already owns a beefy system, it will be negligible and still a slow crawling mess.

Sorry, but "15%-30% on already good specs" is not what I had hoped for.

Time to shelve Stellaris for good, I guess. I already didn't have much hope in anything meaningful, but this... Meh. :(

Haven't started the game in weeks now. Time to finally uninstall for good and just stop looking back.

I sometimes feel like people need to play a game of, say, AGEOD's Pride of Nations, before they come back to complain about performance issues :p I was quite excited about that game, never did manage to play more than a dozen turns in a game.. the 5+ minute loading time for the AI each turn is brutal. Rome II: Total War was also quite brutal on turn times when it was released.

Stellaris is perfectly playable at the moment, on normal or smaller galaxies. I've never played beyond 2500, and the game does start to slow down at that point, but the game is also over at that point so it's a bit unfair to measure the entire game against that edge case imo...

15-30% increased performance is great.
 

Gromit

First Lieutenant
17 Badges
Jul 13, 2019
228
436
  • Stellaris: Federations
  • Stellaris: Lithoids
  • Cities: Skylines
  • Stellaris
  • Stellaris: Digital Anniversary Edition
  • Stellaris: Leviathans Story Pack
  • Stellaris - Path to Destruction bundle
  • Stellaris: Ancient Relics
  • Stellaris: Humanoids Species Pack
  • Stellaris: Apocalypse
  • Stellaris: Distant Stars
  • Stellaris: Megacorp
  • Prison Architect
  • Stellaris: Synthetic Dawn
  • Crusader Kings II
  • Magicka
  • Impire
Performance improvements look promising but I also hope you decide to implement a feature to disable certain notifications because it's way too much. You were only streaming the game for about 10 minutes before it ended up looking like this.

pingpingmeowpingping.jpg
 

KingAlamar

General
Nov 5, 2016
1.931
281
@Devs: Any chance we can get more examples of performance in "late game" with different saves [stars + pops] and different combinations of computers running the same saves??


Basically a game from 2579 for Small, Medium, and Large Galaxies.

Each game shows performance on the "MINIMUM" Stellaris system ; A "Recommended" Stellaris system ; and a modern "1000$" gaming system??
 

Ridixo

Lt. General
50 Badges
May 25, 2018
1.648
1.697
  • Age of Wonders II
  • Age of Wonders
  • Stellaris: Galaxy Edition
  • Age of Wonders: Shadow Magic
  • Stellaris: Synthetic Dawn
  • Stellaris: Necroids
  • Stellaris - Path to Destruction bundle
  • Stellaris: Apocalypse
  • Stellaris: Leviathans Story Pack
  • Stellaris: Distant Stars
  • Stellaris: Ancient Relics
  • Stellaris: Federations
  • Stellaris: Megacorp
  • Stellaris: Humanoids Species Pack
  • Stellaris: Nemesis
  • Stellaris: Lithoids
  • Stellaris: Digital Anniversary Edition
  • Age of Wonders: Planetfall Premium edition
  • Age of Wonders: Planetfall - Revelations
  • Age of Wonders: Planetfall Season pass
  • Age of Wonders III
  • Knights of Pen and Paper +1 Edition
  • Knights of Pen and Paper 2
  • Crusader Kings II
  • Crusader Kings II: The Old Gods
  • Crusader Kings II: Sons of Abraham
  • Crusader Kings II: Sword of Islam
  • Crusader Kings II: Horse Lords
  • Tyranny: Archon Edition
  • Tyranny - Tales from the Tiers
  • Tyranny - Bastards Wound
  • BATTLETECH - Digital Deluxe Edition
  • BATTLETECH: Heavy Metal
  • BATTLETECH: Flashpoint
  • BATTLETECH: Season pass
  • Warlock: Master of the Arcane
  • Warlock 2: The Exiled
  • Warlock 2: Wrath of the Nagas
  • Surviving Mars: Digital Deluxe Edition
Thanks for the patch, for the performance fix and for the chuckle:

Then we wipe the synths, so they don’t ask pesky questions about souls and whatnot.

After getting some problems and deleting my user in Windows, this make me laugh and made my day a little more bright :)
 

KingAlamar

General
Nov 5, 2016
1.931
281
15-30% increased performance is great.

I wonder what they mean by AVERAGE performance. Is this performance from year 2200 on or ONLY late game performance?? If they lump in early game performance they are selling their update short!!

From the YouTube video and the Stream a 1K Star galaxy with nearly 22K pops ran anywhere from about 20 seconds per month down to 10 seconds per month once the game had run a while. Comparing this to games on the prior patch we can see 300% improvement during late game ... not 30%.
 

DaJay42

First Lieutenant
56 Badges
Jan 31, 2018
253
661
  • Magicka 2
  • Majesty 2 Collection
  • Pillars of Eternity
  • Imperator: Rome
  • Crusader Kings II
  • Crusader Kings III
  • Europa Universalis IV
  • Victoria 2
  • Surviving Mars
  • Age of Wonders III
  • Hearts of Iron III
  • Cities in Motion 2
  • Cities: Skylines
  • Shadowrun Returns
  • Stellaris
  • Crusader Kings II: Sword of Islam
  • Crusader Kings II: Sons of Abraham
  • Crusader Kings II: Legacy of Rome
  • Crusader Kings II: The Old Gods
  • Crusader Kings II: The Republic
  • Crusader Kings II: Way of Life
  • Crusader Kings II: Charlemagne
  • Crusader Kings II: Sunset Invasion
  • Crusader Kings II: Conclave
  • Crusader Kings II: Reapers Due
  • Crusader Kings II: Monks and Mystics
  • Crusader Kings II: Rajas of India
  • Crusader Kings II: Jade Dragon
  • Crusader Kings II: Holy Fury
  • Europa Universalis IV: Mare Nostrum
  • Europa Universalis IV: Rights of Man
  • Europa Universalis IV: Res Publica
  • Europa Universalis IV: Art of War
  • Europa Universalis IV: Wealth of Nations
  • Europa Universalis IV: Mandate of Heaven
  • Europa Universalis IV: Common Sense
  • Cities: Skylines - After Dark
  • Cities: Skylines - Snowfall
  • Cities: Skylines - Green Cities
  • Cities: Skylines - Mass Transit
  • Stellaris: Distant Stars
  • Stellaris: Federations
  • Stellaris: Synthetic Dawn
  • Stellaris - Path to Destruction bundle
  • Stellaris: Humanoids Species Pack
  • Stellaris: Apocalypse
  • Stellaris: Digital Anniversary Edition
  • Stellaris: Leviathans Story Pack
  • Stellaris: Ancient Relics
  • Stellaris: Nemesis
I'm sorry to put it like this, but this statement here strikes me as really odd:
The reason why this was being done is that jobs amounts are actually modifiers and modifiers can come from everywhere, so there's no real way to check only when something change.
From a modder's perspective, this may be true, but you (the developers) are the ones who have the actual source code. Knowing or not knowing when something changes is your call to begin with, because you wrote the implementation of how modifiers work in the first place.

I really don't see why something like this would not be possible: (please excuse my pseudocode)
Code:
public virtual void addModifier(Modifier modifer)
{
    if(modifier.affectsJobsInAnyWay())
    {
        this.scheduleJobCheckOnAffectedPlanets();
    }
    // [other checks omitted]
    this.modifierList.push_back(modifier);
}
I mean, something like this should be the basics of event-driven programming, no?