Putting the 'role' back in role-playing games since 2002.
Donate to Codex
Good Old Games
  • Welcome to rpgcodex.net, a site dedicated to discussing computer based role-playing games in a free and open fashion. We're less strict than other forums, but please refer to the rules.

    "This message is awaiting moderator approval": All new users must pass through our moderation queue before they will be able to post normally. Until your account has "passed" your posts will only be visible to yourself (and moderators) until they are approved. Give us a week to get around to approving / deleting / ignoring your mundane opinion on crap before hassling us about it. Once you have passed the moderation period (think of it as a test), you will be able to post normally, just like all the other retards.

Stellaris - Paradox new sci-fi grand strategy game

Fedora Master

STOP POSTING
Patron
Edgy
Joined
Jun 28, 2017
Messages
31,752
u mean balance-wise or just very good?
The usual overpowered shit that will be nerfed eventually.

Also what the heck are Admin Offices good for now? Just Unity?

Edit:
1655954554461.png


:|
 

LizardWizard

Prophet
Joined
Feb 14, 2014
Messages
1,012
View attachment 25436

What the fuck happened here? Those uncolonized planets are ALL Tomb Worlds. Which is excellent because I picked the post-apoc start. :smug:
Bretty sure this is part of an event chain, if I remember right it involves an archeological project where you find out what happened to those worlds.

If you leave those systems alone for 30-60 years, the Kettling Star Pact will emerge with 200 latent psionic pops.
 

Storyfag

Perfidious Pole
Patron
Joined
Feb 17, 2011
Messages
17,717
Location
Stealth Orbital Nuke Control Centre
View attachment 25436

What the fuck happened here? Those uncolonized planets are ALL Tomb Worlds. Which is excellent because I picked the post-apoc start. :smug:
Bretty sure this is part of an event chain, if I remember right it involves an archeological project where you find out what happened to those worlds.

If you leave those systems alone for 30-60 years, the Kettling Star Pact will emerge with 200 latent psionic pops.
Kettlings more like (((Kettlings))) am I rite

Who cares? 200 free pops to enslave.
 

Trithne

Erudite
Joined
Dec 3, 2008
Messages
1,200
View attachment 25436

What the fuck happened here? Those uncolonized planets are ALL Tomb Worlds. Which is excellent because I picked the post-apoc start. :smug:
Bretty sure this is part of an event chain, if I remember right it involves an archeological project where you find out what happened to those worlds.

If you leave those systems alone for 30-60 years, the Kettling Star Pact will emerge with 200 latent psionic pops.

Stellaris needs about 4 times as many of these sorts of events and it needs to only randomly select a bunch to use in any given game. Half this game is just finding the same event chains to exploit in each playthrough.

My favourite being people putting science vessels on patrol through a black hole until it starts the Worm in Waiting.


On another note I found an Empire build that reinvigorated my interest in this game for a while; Clone Army Barbaric Despoilers. Since the vats limit you to just a handful of planets (I made a mod to double the number of vats but halve the number of pops they provide, to add some flexibility), you get to play pokemon with the other races. Also taking Clone Ascension doesn't feel so much like you've gimped yourself for lategame.
 
Last edited:

Delterius

Arcane
Joined
Dec 12, 2012
Messages
15,956
Location
Entre a serra e o mar.
Try a Clone soldiers megacorp. Quickly grow an early economy to 100 pops spread to 4 planets and use your absurd military power to subjugate your neighbors, and then the galaxy. Hell sometimes you won't even need to fight them for it. Since your economy is mostly holdings, branch offices and subject taxes you don't even have to micro anything past those first 100 pops. It's rather comfy to have 10k research with basically no sprawl.

I call this the america strategy of solving micro by mostly not having an economy.
 
Last edited:

CthuluIsSpy

Arcane
Joined
Dec 26, 2014
Messages
8,683
Location
On the internet, writing shit posts.
So, the Antivax Movement destroyed my last game.
Took an innoculation from the Caretakers.
My capital started a revolt because they had no idea what the hell was that effect. I also had a consumer goods problem because I didn't realize that setting up a monthly market trade didn't hike up prices like instant buying, so I kept forgetting to pay attention and getting deficits.
So I'm like "Ok, let's hold pattern until the vaccine effect comes to fore and this malus goes away and I get the bonus."
Well, the vaccine effects came alright.
BADLY.
Vaccine caused mutations, killed people. Less happiness (even worse now), growth penalty, leader lifespan penalty. FUCK.
Maybe, MAYBE I should't have accepted vaccines from a bunch of faulty robots because they are "good for me" because [ERROR NOT FOUND].
All my planets joined the damn rebellion. Tried martial law and everything, and my economy was going to the toilet in the proccess.
Revolt starts and I get instant game-over.

FUCKING ANTIVAXXERS!
So that's what happened to Pfizer. They became a bunch of senile robots.
 

Delterius

Arcane
Joined
Dec 12, 2012
Messages
15,956
Location
Entre a serra e o mar.
Maybe, MAYBE I should't have accepted vaccines from a bunch of faulty robots because they are "good for me" because [ERROR NOT FOUND].
when our new religion exploded the sun and turned everyone into squid-men, i said nothing

when our xenophile overlord crossbred us with bodybuilding dolphins, i said nothing

when the government decided to put slugs into our brains, i was mildly discombobulated hell i still voted for the president

but alien bots trying to cure the flu, now hold on just a minute
 

lightbane

Arcane
Joined
Dec 27, 2008
Messages
10,558
Wasn't making fun of THE JAB completely verboten and would condemn you as an uber-nazi DRUMPF voter/negationist maniac, in the eyes of normies at least? How come greedy, pozzed Swedes can get away with it?
 

Manfred

Literate
Joined
Jul 14, 2022
Messages
9
Wasn't making fun of THE JAB completely verboten and would condemn you as an uber-nazi DRUMPF voter/negationist maniac, in the eyes of normies at least? How come greedy, pozzed Swedes can get away with it?
Because the event chain existed long before the chinabug existed. Not fair, but dems the breaks.
 

Zarniwoop

TESTOSTERONIC As Fuck™
Patron
Joined
Nov 29, 2010
Messages
19,228
Shadorwun: Hong Kong
So glad I waited for the first 37 expansions to be out before getting into this so I missed all the decline and nerfing.

For me, Shattered Ringworld will always be the shittest origin, factions completely meaningless and influence slow as fuck to gain but I've never known anything different.

If you wait a long time to play a Paradox game, you don't notice how shit they make it later. Modern problems require modern solutions.
 
Unwanted

Don Salieri

Unwanted
Zionist Agent
Joined
May 5, 2022
Messages
78
So glad I waited for the first 37 expansions to be out before getting into this so I missed all the decline and nerfing.

For me, Shattered Ringworld will always be the shittest origin, factions completely meaningless and influence slow as fuck to gain but I've never known anything different.

If you wait a long time to play a Paradox game, you don't notice how shit they make it later. Modern problems require modern solutions.
I don't agree, if I was a permavirgin like you I would still be suspicious if a bunch of Swedes were telling me that normal sex was a subhuman fucking you in the ass. Although since you were interested Stellaris faggotry was already the baseline for you.
 

Zarniwoop

TESTOSTERONIC As Fuck™
Patron
Joined
Nov 29, 2010
Messages
19,228
Shadorwun: Hong Kong
Thanks, whoever's alt you are.

So they literally have something from every sci-fi movie and game now :lol: I found a very obvious Star Control 2 reference. Not sure which patch or DLC it's from.

Slave-shielded planet, with an abandoned moon base. Ruins reference the "Armistice Initiative" which is obviously like the Sentient Milieu from SC2.

Unfortunately it just gives you a boring Relic World and a mini galaxy, which slightly boosts research.
 

LizardWizard

Prophet
Joined
Feb 14, 2014
Messages
1,012
So glad I waited for the first 37 expansions to be out before getting into this so I missed all the decline and nerfing.

For me, Shattered Ringworld will always be the shittest origin, factions completely meaningless and influence slow as fuck to gain but I've never known anything different.

If you wait a long time to play a Paradox game, you don't notice how shit they make it later. Modern problems require modern solutions.
Imagine playing a PDX game unmodded
 

Zarniwoop

TESTOSTERONIC As Fuck™
Patron
Joined
Nov 29, 2010
Messages
19,228
Shadorwun: Hong Kong
So glad I waited for the first 37 expansions to be out before getting into this so I missed all the decline and nerfing.

For me, Shattered Ringworld will always be the shittest origin, factions completely meaningless and influence slow as fuck to gain but I've never known anything different.

If you wait a long time to play a Paradox game, you don't notice how shit they make it later. Modern problems require modern solutions.
Imagine playing a PDX game unmodded

Who said anything about unmodded?

One of my favourites is called "Shut up we don't care", removes a lot of the shitty spam messages you get from the midgame on.
 
Joined
May 11, 2007
Messages
1,854,427
Location
Belém do Pará, Império do Brasil
The Virgin Crusader Kings III vs The Chad Stellaris

"I-I made an event pack with VIET-tier fart jokes and rivals who can randomly become the Reverse-Flash and use their suped speed to catapult your cat."

vs

"Btw I just did a ~30% performance upgrade, fixed fuckloads of bugs, revamped artifacts and AI added some crazy new features. You're welcome."

(I'm not even dignifying Hearts of Rusting Iron IV and its absent performance improvements)
#################################################################

################### Toxoids Species Pack ####################​

#################################################################

  • New Toxoid Empire Art:
    • Species portraits
    • City set
    • Ship set
    • Colossus ship
  • New Origins:
    • Knights of the Toxic God
    • Overtuned
  • New Ascension perk: Detox
  • New Traits
    • Exotic Metabolism
    • Noxious
    • Inorganic Breath
    • Incubator
  • New Civics
    • Scavengers
    • Toxic Baths
    • Relentless Industrialists
  • New achievements:
    • Quest Complete - Find the true ending of The Order’s noble quest.
    • Toxic Workplace - As a Toxoid Galactic Custodian or Emperor, insult every other member of the Galactic Community. (Minimum 3)
    • Could be Worse - Colonize a planet that started the game as a Toxic world, then turn it into a Tomb World.


#################################################################

################# VERSION 3.5.0 - Fornax ####################​

#################################################################

Feature changes and additions
  • “All Crises” Galaxy Setting
    • If enabled, the three Endgame Crises will happen consecutively (i.e. once one is defeated, the next can spawn), each 1.5x as strong as the previous one.
  • Added the Ranger Lodge building for the Environmentalist civic granting you unity for each natural blocker left on the planet.
  • New Unique Star Systems:
    • 2 Systems with unique Archaeological Sites
    • 3 Systems where one can easily pick up some ship technology
    • 3 Systems with extra habitable planets
  • New Archaeological Sites:
    • Larionessi Refuge - A forgotten civilization of Hive Minds waiting for someone to aid them
    • Zevox - A Shroud entity that is only willing to talk to machine empires
  • New anomaly: Singing Planet
  • Reimplemented Culture Workers. Culture Worker jobs are now provided by Monuments in addition to the Ministry of Culture, with the following effects:
    • Base Output/Upkeep:
      • 10% governing ethics attraction.
      • 4 Unity Output
      • 3 CG Upkeep
    • In addition, Culture Workers have variable outputs depending on your empire ethics. These modifiers are doubled for Fanatic ethics.
      • Spiritualist: -2.5% Amenity Usage (Planet)
      • Materialist: +2 Amenities (Planet)
      • Militarist: +1 Naval Capacity (Empire)
      • Pacifist: +2.5% Trade from Living Standards (Planet)
      • Xenophobe: +2.5% Citizen Happiness (Planet)
      • Xenophile: -2.5% Pop Upkeep (Planet)
      • Egalitarian: -2.5% Pop Housing Usage (Planet)
      • Authoritarian: +3 Edict Fund (Country)
    • As Galactic Memorials replace normal Monuments, Death Chroniclers have been changed as well, they are now considered Culture Worker jobs and as such inherit the same ethics-based modifiers given above, with the following base output and upkeep:
      • 4 Unity Output
      • +2.5% Stability
      • 3 CG Upkeep
    • The gestalt equivalents of Monuments now give Evaluator jobs which provide Unity and Amenities. As expected, Chronicle Drones are now in the Evaluator category and likewise produce Unity, Stability and Amenities.
  • You can now purchase the services of a Salvage Overseer from the Salvager Enclave. They will improve your scavenging efficiency from debris.
  • New leader trait: Mindful. Scientists with this trait take longer to excavate archaeological dig sites, but are more likely to encounter anomalies.
  • Consecrating Planets now has a special visual effect based on the quality of the world. Fallen Empire Holy Worlds have the max intensity.
  • Relic Rebalance Pass (Additions and Changes are in bold. Removal is strikethroughed)
    • Javorian Pox:
      • Passive:
        • Grants Bombardment Stance
        • +20 Leader Lifespan
        • Increased likelihood of finding biology techs.
      • Active:
        • 50% increased biology research
        • Grants Bombardment Stance
    • The Last Baol:
      • Active:
        • The active decision takes 2 years to create a Gaia world
          • If the decision is activated on a Gaia World, all organic pops on the world get an empowered Gaia World Habitability preference granting them +5% resource output on Gaia Worlds.
        • The Nu-Baol will be hivemind if you are a hivemind
    • Yuht Cryo Core:
      • Passive:
        • +1 pop on every new colony
        • +20% Energy Weapon Fire Rate
    • Psionic Archive:
      • Passive:
        • Unlocks an edict granting leader XP, longevity, and accident prevention for a zro upkeep.
          • #Note Gestalts can find the tech for mining zro if they have this relic.
        • +5 Ruler Max Level
        • -50% Shroud Cooldown
        • Better Shroud odds
      • Active:
        • The knowledge option now always levels your ruler up a level instead of granting a flat xp bonus.
    • Cybrex Warforge:
      • Passive:
        • 5% Increased Alloy Output
        • Allows the building of the most powerful buildable army in the game.
      • Active:
        • Spend 10000 minerals and gain 5000 alloys.
        • Spend 2000 minerals and gain 1000 alloys.
          • Effect Increases by 2000 minerals and 1000 alloys each time it’s activated up to a cap of 20,000 alloys.
    • Vultaum Reality Perforator:
      • Active:
        • Grants one of 4 random buffs lasting for 1 2 - 5 years.
    • Blade of the Huntress:
      • Passive:
        • +25% Army Morale
        • +2 Planet Sensor Range
        • 10% Increased Diplomatic Weight
    • Omnicodex:
      • Passive:
        • Gain 1 Gene Modification Point
        • If you are a robot empire: Gain +25 Opinion with all non robot empires
      • Active:
        • Adds 3 pops of a random species to a specified planet
          • If you are a hivemind they are also hive-minded
    • Ether Drake Trophy:
      • Active:
        • 10% more happiness to every planet
        • 10 stability to every planet.
    • The Surveyor:
      • Active:
        • Can grant 3-5 1-3 rare resource deposits
    • Head of Zarqlan:
      • Now can spawn for the AI 25% of the time so the player is not guaranteed to find it every game.
      • Passive:
        • 40% Spiritualist Ethics Attraction
        • 150 opinion with Holy Guardians
        • Holy Worlds become colonizable
      • Active:
        • Gain a larger and larger fleet after each activation up to the 5th activation.
        • 75% Spiritualist Ethic Attraction for 10 years
    • The Defragmentor:
      • Passive:
        • -10% job, building and district upkeep.
    • Khan’s Throne:
      • Passive:
        • Owning the Khan’s Throne allows for selection on the Satrapy subject type, which gives the Overlord additional naval capacity equal to 30% of the subject’s.
    • Extradimensional Warlock:
    • Changed:
      • Passive:
        • 15% +30% Sublight speed
        • +20% Weapon Range
      • Active:
        • +100% more jumpdrive range
        • -50% jump cooldown reduction
        • +75% more accuracy and range on your Quantum Catapult
    • Prethoryn Brood-Queen:
      • Passive:
        • +30 Society Research
        • +50% Society Research
        • +5% Prethoryn Weapon Fire Rate, increased with every activation
      • Active:
        • Spawns a sizeable fleet, some of which are of the carrier variety
    • Isolated Contingency Core:
      • Passive:
        • +100% Pop Assembly Speed
        • Allows the construction of 2 of each megastructure instead of 1.
  • 16 New Achievements added to Species Packs and Synthetic Dawn
    • Aquatics
      • Holy Water - Drench a Fallen Empire’s holy world.
      • There be Dragons - Own 13 dragons and have them in your capital system.
      • Fishing for Trouble - As an angler empire, provoke a Fallen Empire into declaring war on you and win.
    • Necroids
      • There’s a Zombie on my Lawn - As a Necroid empire, eradicate a Plantoid empire, or vice-versa, without blowing up their final planet.
      • With Great Power - As a Necrophage Origin do not invade any pre-ftl civilisations and defeat the crisis OR have at least 10 observation stations around pre-ftl worlds.
      • Recent History - As a Memorialist empire have Galactic Memorials on five tomb worlds that did not start the game as tomb worlds.
    • Lithoids
      • Room for Desert - Consume another empire’s desert homeworld.
      • Can you Smell What the Lithoids are Cooking? - As a Lithoid empire, keep another Lithoid pop as Livestock or Process them.
      • Rock Beats Paper - As a Lithoid empire, show the Galactic Community exactly what you think of that strongly worded letter.
    • Plantoids
      • Fixer Upper - As an Idyllic Bloom empire, own and convert the junk worlds of the Ketling Star Pack into Gaia Worlds.
      • Growing Like Weeds - As a budding species, that does not have the Clone Army origin, achieve a base organic pop assembly of at least 10/month on your capital.
      • Tend the Garden - Become the custodian of Wenkwort Artem, designating it a resort world with a Ranger Lodge and all original blockers present.
    • Humanoids
      • Directive 67 - As a Clone Soldier empire, denounce a Spiritualist fallen empire as a crisis in the Galactic Community then destroy them, without blowing up their final planet.
      • Destroy the People of Earth! - As the Commonwealth of Man, destroy the United Nations of Earth, without blowing up their final planet, while your ruler is a human with a symbiotic brainslug.
      • Strange Mood - As a Master Crafter empire, fully construct a megastructure while you have a Covenant with a Shroud entity.
    • Synthetic Dawn:
      • Machine Supremacy - Win the game as a machine uprising.
  • Lithoids now have access to the Radiotrophic and Crystallization traits for owners of the Plantoid Species Pack. The former behaves as the Plantoid trait of the same name, but reduces mineral upkeep instead of food upkeep. The latter acts as the Budding trait, but with a Lithoid-specific name and icon.

UI
  • Megastructures are now listed in the Outliner.
  • Starbase outliner will now indicate if a starbase can be upgraded
  • Made it possible to directly demolish upgraded ruined buildings.
  • The tooltip and description for Commercial Pacts will now give info on what the best locations for new Branch Offices in their empire if you are a megacorp and have sufficient intel.
  • Added an icon to the situation progress elements that more clearly shows if situation progress has halted.
  • Added planetary designation icon to the species modification UI
    Situation tooltips will now display time until the next stage as well as until the situation is completed.
  • Robot empires now include robot species in system view habitability calculations.
  • Fixed UI overlap between long planet names and resource icons in the Planets & Sectors view.
  • Fixed Galactic Community UI member list overflowing when there are more than 32 empires in the community.
  • Fixed tooltip displays for empire modifiers in deposits (it will list them as country modifiers rather than confusingly lumping them in with planet modifiers).
  • Restored outliner planet blockaded icon (it erroneously said the enemy had landed armies when it merely had armies in orbit) .
  • The outliner will now no longer cut off the size of fleets above 100k.
  • Tooltip for cannot afford fleet reinforcement now says what resources you are lacking
  • Fixed army outliner showing the wrong system name for armies while they were invading planets.
  • Fixed some visual issues when scrolling the Observation Outpost Outliner.
  • Fixed overlap in Planet Outliner where if you colonized certain planets e.g. Grunur Prime, it would show the progress bar for colonization and an icon for it being desirable to clear blockers overlapping each other.
  • Tooltip now correctly states maximum ship count allowed when ship size limit is reached`.
  • Fixed tech entries sometimes using more space than required.
  • Fixed windows not always resetting their scrollbar after changing size.
  • Fixed starbase module constructions not showing up in the outliner as being in progress.
  • Fixed the megastructure galaxy map icon opening hyper relays rather than larger megastructures when clicked.

Improvements
  • Reworked Terraforming Candidates to be distributed at game start rather than through finding anomalies, as this allows for more predictable outcomes.
  • The Caravaneers will now give you the privilege to spend energy to buy reliquaries directly. At a nominally increasing fee of course.
  • Integrating a vassal now grants you any relics that they own.
  • Added Galaxy/System view switching shortcut on Mouse4.
  • Added pause/unpause shortcut on Mouse5.
  • Small portrait images in the UI now crops to focus on the face of the character.
  • Players who patronize the Artisan Enclave will no longer receive the event "Lackluster Update" as their first newsletter from that troupe.
  • Auto-survey now explores fog-of-war (e.g. within empires with open borders) when it cannot find systems to survey.
  • Science ships on auto-survey will now collaborate if they can't find separate systems to survey.
  • The Salvager Enclave will now invite you to renew the Salvager Overdrive and Salvager Insights modifiers once they expire and become available again, assuming you remain in good standing with them.
  • Consecrating Planets now has a special visual effect based on the quality of the world. Fallen Empire Holy Worlds have the max intensity.
  • Added Observer events which will notify spectating players whenever a starbase belonging to the Salvager or Shroudwalker enclave has been destroyed.

Balance
  • AIs are now significantly less eager to become vassals.
  • The acceptance penalty for vassalizing an AI Overlord can now be overcome by other terms.
  • Marketplace of Ideas now gives 0.25 unity, up from 0.125. Trade League trade conversions now give 0.2 consumer goods and unity, instead of 0.25 CGs and 0.125 unity.
  • Capped the maximum effects of sacrifice edicts at an effective 15% of your empire population.
  • Agrarian Idyll and Anglers are no longer mutually exclusive. When combined, Anglers and Pearl Divers also provide from the bonus Amenities that Farmers would produce.
  • Pop assembly's priorities for picking which species to assemble have been re-examined. It will now favor species which match your planet's colony designation. It will no longer attempt to balance growth on the planet between over and underrepresented species (like pop growth does), and it will now be slightly biased towards your empire's founder species (relevant mainly if you are doing organic assembly)
  • Synapse Hub now provides +1 Unity per synapse drone.
  • Added ship-size costs for debris resources to non-default ships.
  • Leviathan Changes:
    • The Automated Dreadnought now has increased armor, shield and hull values.
    • The Automated Dreadnought has been upgraded to use dark matter components, an Inspiring Presence titan aura and a Perdition Beam.
    • The Tiyanki Matriarch now has 4× hull/armor regen.
    • The Spectral Wraith now has 80,000 HP.
    • The Spectral Wraith is now neutral to most galactic fauna and enclaves. No more killer Artisan Troupe!
    • The Voidspawn has swapped out three of its missile launchers for artillery.
  • Difficulty settings changes
    • New Difficulty level: Civilian - easier than Cadet.
    • Default difficulty setting is now Cadet instead of Ensign.
    • Added Difficulty Adjusted AI Modifiers as a game setting. Empire wide Economic Modifiers are multiplied by Difficulty Bonus for AI Empires. This makes Late-Game AI economies significantly stronger. For example, a Technology which gives +20% mining will instead give +40% mining for AI Empires on Grand Admiral.
    • Added Mid Game Scaling Difficulty option. AI bonuses from the Difficulty setting scale up over time, starting at zero and reaching maximum at the Mid-Game Start Year.
  • Deluging a Holy World is no longer okay.
  • Increased the cap of how much unity you can gain from momentous event rewards.
  • The random event "Fire" is now available to archaeology sites other than "Sentinels", so long as they meet its criteria regarding food.
  • There is now a one year cooldown on upgrading Mercenary Enclaves.
  • The Trader Enclaves once again think fondly of their regular customers. Their Opinion of you stands to increase each full year for as long as you have a trade deal with them. The more product you buy each month, the more Opinion is gained (maximum: +3 Opinion per year).
  • Rogue Servitors now have the Sanctuary World designation which buffs Bio-Trophies instead of the Unification Center designation.
  • Reworked the Divine Sovereign event to be consistent with the Galactic Sovereign event. It now provides the Divine Sovereign civic granting +10% Unity and +25% Governing Ethics Attraction without taking up a civic slot.
  • Halved the cost of the Migrating Forest special projects.
  • S875.1 Warform now has a reactor and sensors.
  • R44 class raider now has two afterburners.
  • Yojimbo class escort now uses an artillery combat computer.
  • Culture Workers and Evaluators now count as Administrator jobs for multiplicative modifiers.
  • The happiness penalty from the Wasteland Radiation modifier is now offset by the Radiotrophic trait.

AI
  • Added a 10 year cooldown before AI can propose a Diplomatic Action which was previously timed out by the player.
  • AI will no longer leave federations because it does not like a subject empire within the federation.
  • AI is now more liberal at spending their stockpiled food on clone vats if they have them researched.
  • AI will now try to assign otherwise idle fleets to the nearest fleet group as auxiliaries during war, which will make them follow other fleets with current military objectives, effectively reducing the amount of AI fleets idling during wars.
  • AI will no longer create mercenary enclaves if it is set to attack neutrals (and therefore would immediately try to destroy the merc enclave). This would happen with Metalheads and Become the Crisis countries. The AI will also no longer make merc enclaves during wars as it needs the fleets for fighting.
  • AI will now actively attempt to increase its fleet capacity via buildings such as strongholds when they have researched a repeatable technology in the end game.
  • AI will now downgrade Bastion type Starbases which are no longer close enough to a valid threat in order to free up their Starbase capacity.
  • AI will now have a higher acceptance to status quo if they are in an unreachable war for an extended period, fixing issues where AI empires need to wait for war exhaustion to reach 100% before setting a status quo.
  • AI is now much more likely to use the Indentured Servitude slavery type.
  • Clone Origin and Necroid Empires will now be more diligent about constructing their Ancient Clone Vats and Chamber of Elevation buildings.
  • Fixed AI not being able to use defense platforms and made it focus on building those in the capital system and on Bastion starbases.
  • Fixed an issue where the AI would sometimes build holo theaters even when they had open entertainer jobs.
  • Fixed Here Be Dragons AI not breeding baby dragons.
  • Fixes an issue where AI would rather downgrade an existing starbase than canceling the construction of a new one when over the starbase cap.
  • Hive mind AI will no longer build solar panels on their anchorage starbases.
  • Improved AI's budgeting and rationale for building orbital ring modules and buildings, so it will now build the most useful ones more consistently.
  • Improvements to AI logic for building megastructures. It will no longer cease building any other megastructures because it is currently making a hyper relay, and it will now build habitats and hyper relays even if it is capped by the megastructure build limits.
  • Made the AI more likely to build defensive platforms if it is near but not at the naval cap.
  • Made the AI more likely to try and upgrade orbital rings (and less likely to attempt to downgrade them, which was meant to be impossible).
  • Necroid Empires will now force grow their subservant species on their planets.
  • Necrophage empires will now correctly use their special necroid purge type on all species that are not their subspecies.
  • Pacifists now have an increased desire to build bastion starbases, changed from Militarists.
  • Removed AI directive to delete all its upgraded buildings using a special resource if it fell into a deficit in that resource. Going bankrupt will downgrade all those buildings anyway, and downgrading is less disruptive than deleting.
  • Improved how Crises take over systems with colonies in them.

Bugfix
  • Fixed GDF and Imperial Armada fleets counting towards the empire's fleet size.
  • Federations and GDFs can now have ship size caps the same way Countries can.
  • Fixed stone age primitives spawning postatomic armies.
  • Fixed some issues with anomaly randomisation which meant that certain anomalies were disproportionately likely or unlikely to spawn.
  • Fixed occupied shipyards continuing to produce queued ships.
  • Drenching a crisis world will now correctly credit you with its destruction.
  • Fixed it sometimes not being possible to move the camera using WASD controls after loading a save.
  • Superfluous Terraforming Equipment will no longer fire on planets that aren't already colonized.
  • Fixed it not being possible to disband singular defense platforms.
  • All unity buildings are now listed in the Unity category.
  • A random event offering Minor Artifacts during the "Message in a Bottle" archaeology site no longer appears outside the "Ancient Relics" DLC. The event text now also correctly refers to the host star system.
  • Fixed "Cloud, Snagged" special project being gated behind scientist's level.
  • Stopped "Invasive Exofungus" anomaly from spawning on Ecumenopolis and Relic worlds.
  • Trader Enclaves no longer play quite so fast and loose with 'caveat emptor' when it comes to hiring out Governors. Gestalt empires will now be asked to confirm their choice to buy, given they have no inherent need for 'trade'.
  • Unity automation will now attempt to build organic sanctuary buildings and districts.
  • Adjusted the set of random events which may occur during the archaeology phase of the Research Co-operative joint operation. Participating empires will no longer be offered Minor Artifacts if they do not have the "Ancient Relics" story pack in play.
  • Azizians should no longer try to appear on a planet that is being colonized.
  • Devouring Swarm or Terravore necrophages now start with a Synaptic Node building.
  • Industrial districts no longer show the approximate output for jobs that they don't provide depending on planetary designation.
  • Fixed an issue which could prevent progress past stage 2 of "The Sentinels" arc site.
  • The Gestalt Consciousness ethic now states that pops will not require Consumer Goods.
  • Fixed an issue where releasing a vassal would delete all farming jobs in the process.
  • You can no longer declare war on the subject of a federation member, if that subject is not a federation member.
  • Positronic Implants no longer shows that it unlocks automatic research.
  • Fixed leaders dying while in the leader pool sometimes remaining there as a blank leader aged -1 (potentially forever).
  • Fixed a bug where Planet Automation would construct Healthcare or Entertainer jobs even though there were free jobs of those types during an amenity deficit.
  • Fixed an issue where non-citizen pops could often have more power within pop factions than citizen pops of an equivalent social strata.
  • Fixed an issue with planet automation for hive minds where they would build extra maintenance drone jobs while they had deprioritized maintenance drones.
  • Fixed Insidious Ophidians potentially firing multiple times in one playthrough.
  • Fixed several issues where Planet Automation would both sometimes refuse to build Arcology Leisure District or build way too many.
  • Fixed some issues with job weights where workers with the "very strong" trait would register as being good at specialist jobs for weight purposes (even though the modifier only boosts worker jobs), and other similar cases.
  • Fixed synthetic ascension resulting in potentially unlocalised body parts in events (as in, the text would read " _hand")
  • Fixed Target Uplink Computers not applying to defense platforms.
  • Fixed the scouring of the Tiyanki home system happening repeatedly.
  • Fixed weighted random formula often not returning a weighted random result correctly. This had various impacts, e.g. the AI would be biased towards ascension perks early in the list while choosing which one to pick.
  • Halved the default max distance of the spawn_system effect. This reduces the chance that systems spawned from events during the game will end up an awkwardly long distance from where they were spawned (e.g. poking halfway into the galactic core, or well off the edge of the galaxy)
  • Nivlacs are now correctly blocked from reproducing only in driven assimilator empires.
  • Fixed an error in which the "Never Forget" archaeological site would spawn even if the player does not own the "Ancient Relics" story pack, despite offering rewards which require that DLC.
  • Fixed is_democracy scripted trigger.
  • Fixed being able to build multiple megastructures in a single system.
  • Fixed some regular unity buildings converting into monuments.
  • Hydroponics station now correctly provides agri-drones for gestalt empires.
  • Lore text for the Ix'Idar Star Collective now refers to the correct star, i.e. the Athrak system.
  • The "Genius Caeli" archaeological site (part of the Research Co-operative joint operation) now offers Research rewards to participants who are playing without the "Ancient Relics" DLC.
  • You can no longer build hyper relays in systems that do not have any hyperlanes.
  • Planet Automation will no longer construct amenity jobs during the same monthly update as it has changed priority of amenity jobs on the planet, solving several bugs where planet automation would construct too many amenity jobs.
  • Species modification now applies to pops currently being assembled or grown too (i.e. you won't end up with one of the old species left on the planet anymore).
  • The alerts for ships MIA while reinforcing and Council Elections being imminent no longer fire negative alert sounds.
  • You can no longer nominate subjects, BtC empires or those with Pompous Purists to be the Custodian.
  • Removed a scripted check which was preventing archaeological sites from spawning randomly in the galaxy. As a result, 8 more arc sites may now appear across the galaxy. This is in addition to other such sites which were developed later on, and were made explicitly available outside of the "Ancient Relics" story pack. Arc sites which are unique to that story pack (such as "Moon Bump", "The Rubricator" and the precursor sites) still require ownership of that DLC.
  • Fixed fleet power from GDF and Imperial Armada fleets being considered when determining the strongest empire in a Federation.
  • Fixed an issue in which enclaves might spawn within the borders of Fallen Empires if they, in turn, were spawned as part of the Scion origin.
  • Fixed the layout of a Shroudwalker Enclave solar system which was spawning crystalline asteroids in unusual orbits.
  • Fixed the layout of various Imperial Fiefdom solar systems, which spawned asteroids outside their intended orbits.
  • Fixed cases where the orbital ring would not be correctly set to a planet's new owner (e.g. if taken in a revolt). Also made the orbital ring of a planet rendered ownerless become a ruined ring.
  • Fixed advisor audio not playing when elightening a species.
  • Fixed border graphics not being removed when the last system in an empire loses its owner without also being moved to a new owner.
  • Fixed a case where the Baol relic could bug out and not give you what you paid for.
  • It is no longer possible to apply a species template that has negative available trait points.
  • Fixed buzzing audio when the ship designer was open in the galaxy view.
  • Fixed it being possible to species mod Aquatic onto species which lacked Ocean world preferences.
  • Fixed Xenophobic Necrophages being unable to assemble robots.
  • Fixed Envoys being unaffected by Synthetic Ascension.
  • Fixed incorrect announcer voice line being played when a defense platform was destroyed.
  • Fixed issue where crisis fleets wouldn't correctly destroy already disabled starbases, causing them to idle forever.
  • Fixed various localization, spelling, and overlap issues.
  • Fixed various crashes and out of syncs.
  • Fixed missing time unit in lithoid trait description.
  • Assorted minor grammar fixes in events relating to The Rubricator.
  • Fixed incorrect tooltip for the ambient object "Abandoned Observation Outpost".
  • Fixed missing tooltip title in empire creation screen.
  • Fixed "Sensor Malfunction" event tooltip not referring to the correct target.
  • Starbase capacity tooltip no longer mentions pops.
  • Overlord Mortal Initiate Drones are no longer called Overlord Bio-Trophies.
  • Tooltips for Corporate Subjugation Policies now explicitly say if they are Oppressive, Balanced or Benevolent.
  • Fixed frame colors for Wenkwort modifiers.
  • XP is now appropriately capitalized in the Agreement tooltips.
  • Fixed a case of modifier source names not showing up (if the modifier came from a planet designation's triggered effects)
  • Fixed habitats' initial names
  • Fixed megacorp impose ideology (again!)
  • Fixed tooltip display for "Clear Blocker Speed" modifier so that it will show the actual time the blocker will take to clear in interfaces.
  • Fix issue with "..." showing up incorrectly for some text boxes, as well as some text box overruns.
  • Fix missing explanation in tooltip for when a building cannot be repaired.


Modding
  • Added can_be_upgraded trigger for fleets, ships and megastructures.
  • Added ai_force_species script files that allow for AI empires to force grow specific species on each planet’.
  • Fixed situation effects not firing when entering multiple stages in a single tick.
  • Shifted handling of technology flags for advanced genemodding and habitability modifications to game rules.
  • Added triggered trait costs, i.e. cost = { modifier ... } for traits.
  • The trait picking UI will now let you add trait A and trait B in one go even if trait B requires trait A.
  • Added ability to have @scope in event targets and global event targets.
  • Added ability to define a custom_tooltip for planetary features.
  • Added a separate has_deficits flag in country_types to handle whether countries use deficit mechanics.
  • Added built_on_planet trigger for megastructures.
  • Added country_naval_capacity_contribution_from_subjects_mult and country_naval_capacity_contribution_to_overlord_mult modifiers, which add a percentage of the subjects' naval capacity to the overlord, without reducing the naval capacity of the subject. Note that these modifiers are not intended to be negative.
  • Added "direction = corewards/rimwards" parameter to spawn_system.
  • Added effect to set a leader immortal, as well as a trigger to check if the leader is immortal.
  • Added has_forbidden_jobs trigger which checks if a planet has a deprioritized job of a certain type.
  • Added on_activate for policies that will fire when the policy group is first initialized for a country.
  • Added random/every/any_archaeological_site.
  • Added script command "inline_script" which allows scripts to "copy" in blocks of scripts from the "common/inline_scripts" folder.
  • Added script list for owned_nonprimary_starbase, since owned_starbase only returns primary starbases (so no orbital rings).
  • Added triggers max_starbase_capacity, used_starbase_capacity_integer and used_starbase_capacity_percent.
  • Added width and density values to asteroid belts allowing you greater control if not declared default is set to 1.
  • check_economic_production_modifier_for_job now correctly factors in triggered pop modifiers from traits. It also should be slightly faster.
  • Fixed starbase module on_finished/aborted/queued/unqueued.
  • Habitability ceiling and floor modifiers can now be applied directly to a planet (not just to a species).
  • modify_species now correctly lets you specify multiple add_trait or remove_trait entries.
  • Switched planet class check for habitat capitals to a scripted trigger.
  • on_planet_ownerless/transfer/conquer on_actions now have the former owner in fromfrom scope.
  • Released script profiler to public, you can enable it with console command "script_profiler".
  • Situations now have dynamic end values (generated from the end value of the final stage).
  • Added effect to enable possibility to set/update settings of the fleet after its creation.
  • Renamed bordering_country list building trigger to country_neighbor_to_system, also fixed it's behavior.
  • Added num_deposits trigger.
  • Allowed you to use script values in loc by defining them as a value in a scripted loc entry.
  • Added support for "completion_sound" to observation missions.

Performance
  • Parallelised batch modifier updates (large reduction of lag spike potential in the late game).
  • Fixed a problem with multithreading that meant that sometimes all threads would just wait a while for each other for up to 20 milliseconds.
  • Cached colonies in system so that the game can iterate through colonized planets instead of going through all the planets in the system and working out if they were colonized.
  • Cached updating of starbase type, which was previously calculated on the fly when needed - slowing down e.g. outliner updates.
  • Cached wars list instead of recalculating it repeatedly whenever a country had to see if it was in a certain (or any) war.
  • Fixed a lag spike that could happen when the AI considered where to build megastructures.
  • Improved performance of checking whether a country can use a certain hyper relay or gateway.
  • Improved performance of the game checking if a planet is a colony, slightly (it does this a lot, so this speeds up e.g. intel updating non-negligibly).
  • Multithreaded working out trade value and resources for systems' map icon displays on the galaxy map.
  • Now AI finds the best potential office branch 4x faster. Reduced number of the systems used to calculate the distance to the target planet by using only border systems of the current empire.
  • Optimized a few events frequently called via on_planet_surveyed (since planets can be surveyed and unsurveyed via the intel system).
  • Parallelised calculations for how much a Situations should progress on the monthly tick (i.e. reduced Situations' potential impact on monthly ticks).
  • Parallelised strike craft movement.
  • Reduced the performance cost of auto migration on the monthly tick (by about half).
  • Shifted country migration caching from serial to parallel.
  • Shifted most of spynetworks' daily updates from serial to threaded.
  • Shifted ship jump drive and experience calculations to parallel.
  • Shifted some parts of planets' handling of monthly pop growth to parallel to speed up the monthly tick a little bit.
  • Sped up monthly tick a bit by multithreading country opinion caching that is done then.
  • Threaded daily checks of policies' validity.
 
Joined
May 11, 2007
Messages
1,854,427
Location
Belém do Pará, Império do Brasil
Performance
  • Parallelised batch modifier updates (large reduction of lag spike potential in the late game).
  • Fixed a problem with multithreading that meant that sometimes all threads would just wait a while for each other for up to 20 milliseconds.
  • Cached colonies in system so that the game can iterate through colonized planets instead of going through all the planets in the system and working out if they were colonized.
  • Cached updating of starbase type, which was previously calculated on the fly when needed - slowing down e.g. outliner updates.
  • Cached wars list instead of recalculating it repeatedly whenever a country had to see if it was in a certain (or any) war.
  • Fixed a lag spike that could happen when the AI considered where to build megastructures.
  • Improved performance of checking whether a country can use a certain hyper relay or gateway.
  • Improved performance of the game checking if a planet is a colony, slightly (it does this a lot, so this speeds up e.g. intel updating non-negligibly).
  • Multithreaded working out trade value and resources for systems' map icon displays on the galaxy map.
  • Now AI finds the best potential office branch 4x faster. Reduced number of the systems used to calculate the distance to the target planet by using only border systems of the current empire.
  • Optimized a few events frequently called via on_planet_surveyed (since planets can be surveyed and unsurveyed via the intel system).
  • Parallelised calculations for how much a Situations should progress on the monthly tick (i.e. reduced Situations' potential impact on monthly ticks).
  • Parallelised strike craft movement.
  • Reduced the performance cost of auto migration on the monthly tick (by about half).
  • Shifted country migration caching from serial to parallel.
  • Shifted most of spynetworks' daily updates from serial to threaded.
  • Shifted ship jump drive and experience calculations to parallel.
  • Shifted some parts of planets' handling of monthly pop growth to parallel to speed up the monthly tick a little bit.
  • Sped up monthly tick a bit by multithreading country opinion caching that is done then.
  • Threaded daily checks of policies' validity.
Yeah baby, talk Performance to me.

Performance

Now, I shall turn to performance: myself and a few others weren’t really happy with the late game performance in Stellaris. So we tried, with various methods, to make it better. And, to be honest, the results are quite promising.

In general, there are three ways of making performance better: fix cumbersome logic, use caching, and multithread. It’s not so easy, though, because the latter two solutions have some unpleasant friends: caches like to hang out with Out Of Syncs and miscalculations, while multithreading likes both CTDs and OOSes. But we managed to make headway on various issues.

First and foremost, modifier updates were quite expensive. For instance, if you enabled an edict in your country, it would trigger a recalculation of the modifiers in every planet, fleet, ship and pop owned by this country. This ends up being a lot of recalculations, which could take a while, since updating modifiers was not exactly trivial - basically, the nice tooltips in pop details which show where all the effects they have come from take a fair bit of processing power to achieve.

There are two improvements on this front in 3.5. Firstly, we multithreaded the modifier updates. It was all done in serial before, and could lead to lengthy freezes and some daily ticks taking far longer than others. For good reason - there were a lot of interdependencies to untangle, and crashes to prevent. Still, this had a pretty big effect.

Additionally, I noticed that pops were getting modifiers added to them that were irrelevant, like megastructure cost modifiers. So an additional parameter was added to economic categories to specify where the modifiers in them were expected to go, which ended up saving a further 20% of time while recalculating modifiers.

Aside from this, a fairly big improvement came when we noticed that our multithreading system would occasionally bug out and have all threads waiting for each other for several milliseconds. This made multithreading relatively fast operations actually end up being slower on average, and even where it was still worth it, it’d be slower than it needed to be. Luckily, our Tech Director was able to save the day and stop this madness, improving our player experience immeasurably.

This is just a taste of the things we did. Basically, a lot of time was spent analysing a deliberately absurd save game - it was set to maximum pop growth, tech progress, galaxy size and habitable planets, and then run without crises or fallen empires until 2730. The game chugged a fair bit (with which I mean, it took 11 minutes for a year), but it turned out the main culprit was strike craft movement. I was unable to replicate this on any normal save - it probably only occurs during battle, and there were presumably some extremely large battles going on - but anyway by multithreading that it actually became somewhat more reasonable to play.

From there, there were a lot of incremental fixes that were possible. For instance, the game spent quite a bit of time working out whether a system had colonies in it, several times a day - something which could be cached quite easily. (Well, so I thought. Two OOS fixes later, I was regretting this). Another big offender was wars: a country didn’t have a cached set of wars it was fighting in, but would instead recalculate all the wars it was fighting in whenever it needed to know information about any of the wars it was fighting in. Needless to say, this was quite inefficient, and fortunately quite cachable. Then, whenever the game was working out which type of starbase a starbase was (e.g. “Bastion”) - including every few frames on the outliner - it would look through every different type of starbase and decide which one was most appropriate here - the answer? Cache, cache, cache.

We also sped up the time it took for the AI to decide where to establish branch offices. Then we noticed that most of the time spent updating countries in serial was spent assessing the validity of their policies - something which we could thread. (Ok, it’s not so easy: we could thread the calculation, cache the result, and then implement the result in the next serial update, which would be basically straight afterwards). Finally, monthly ticks should be a bit quicker, since we used a similar logic on the calculations for which pops should assemble, grow and decline, and also removed about 50% of the job cache recalculations during auto migrations.

It wasn’t all plain sailing - aside from at least three OOSes and two crashes introduced and fixed with this work, we noticed after a while that the game wasn’t quite as fast as we were expecting. In fact, it was temporarily freezing every few days. This, it turned out, was because - thanks to some logic fixes with unintended consequences - the AI was thinking extremely hard about where to place its megastructures. So some changes to put the more expensive checks there were needed.

How much impact will all this have? Well, I can’t promise any particular number, for various reasons. For one thing, most of these improvements were made in July, and it’s always possible we added new inefficiencies in the meantime (e.g. the megastructures thing). Also, in particular due to AI games, a 3.4 save is not very comparable with a 3.5 save, since the AI will have behaved rather differently in creating that save (but on the other hand, you cannot load a 3.5 save in 3.4, because it will almost certainly crash). Besides that, a particular save may have a particular thing going on causing it to lag (e.g. the strike craft issue alluded to before, which had otherwise seemed a non-issue). And sometimes computers are just temperamental and allocate their resources to doing things other than playing the game. Nevertheless, last time I did tests based on 3.4 saves, it was more than 30% faster. In my latest late game campaign, it’s not precisely fast (the late game will never be as fast as the early game - there’s so little going on in the early game that performance is primarily determined by how fast it takes to render frames), but it definitely feels less slow. But I look forward to seeing what people think, and whether people feel that more effort is needed.
Holy shit, look at what a performance mess their code was (likely still is).

But this is good progress.

Now THIS is what I'm talking about when it comes to performance fixes.

Custodians fucking deliver. All other pdox team should learn from this.
 

Storyfag

Perfidious Pole
Patron
Joined
Feb 17, 2011
Messages
17,717
Location
Stealth Orbital Nuke Control Centre
Performance
  • Parallelised batch modifier updates (large reduction of lag spike potential in the late game).
  • Fixed a problem with multithreading that meant that sometimes all threads would just wait a while for each other for up to 20 milliseconds.
  • Cached colonies in system so that the game can iterate through colonized planets instead of going through all the planets in the system and working out if they were colonized.
  • Cached updating of starbase type, which was previously calculated on the fly when needed - slowing down e.g. outliner updates.
  • Cached wars list instead of recalculating it repeatedly whenever a country had to see if it was in a certain (or any) war.
  • Fixed a lag spike that could happen when the AI considered where to build megastructures.
  • Improved performance of checking whether a country can use a certain hyper relay or gateway.
  • Improved performance of the game checking if a planet is a colony, slightly (it does this a lot, so this speeds up e.g. intel updating non-negligibly).
  • Multithreaded working out trade value and resources for systems' map icon displays on the galaxy map.
  • Now AI finds the best potential office branch 4x faster. Reduced number of the systems used to calculate the distance to the target planet by using only border systems of the current empire.
  • Optimized a few events frequently called via on_planet_surveyed (since planets can be surveyed and unsurveyed via the intel system).
  • Parallelised calculations for how much a Situations should progress on the monthly tick (i.e. reduced Situations' potential impact on monthly ticks).
  • Parallelised strike craft movement.
  • Reduced the performance cost of auto migration on the monthly tick (by about half).
  • Shifted country migration caching from serial to parallel.
  • Shifted most of spynetworks' daily updates from serial to threaded.
  • Shifted ship jump drive and experience calculations to parallel.
  • Shifted some parts of planets' handling of monthly pop growth to parallel to speed up the monthly tick a little bit.
  • Sped up monthly tick a bit by multithreading country opinion caching that is done then.
  • Threaded daily checks of policies' validity.
Yeah baby, talk Performance to me.

Performance

Now, I shall turn to performance: myself and a few others weren’t really happy with the late game performance in Stellaris. So we tried, with various methods, to make it better. And, to be honest, the results are quite promising.

In general, there are three ways of making performance better: fix cumbersome logic, use caching, and multithread. It’s not so easy, though, because the latter two solutions have some unpleasant friends: caches like to hang out with Out Of Syncs and miscalculations, while multithreading likes both CTDs and OOSes. But we managed to make headway on various issues.

First and foremost, modifier updates were quite expensive. For instance, if you enabled an edict in your country, it would trigger a recalculation of the modifiers in every planet, fleet, ship and pop owned by this country. This ends up being a lot of recalculations, which could take a while, since updating modifiers was not exactly trivial - basically, the nice tooltips in pop details which show where all the effects they have come from take a fair bit of processing power to achieve.

There are two improvements on this front in 3.5. Firstly, we multithreaded the modifier updates. It was all done in serial before, and could lead to lengthy freezes and some daily ticks taking far longer than others. For good reason - there were a lot of interdependencies to untangle, and crashes to prevent. Still, this had a pretty big effect.

Additionally, I noticed that pops were getting modifiers added to them that were irrelevant, like megastructure cost modifiers. So an additional parameter was added to economic categories to specify where the modifiers in them were expected to go, which ended up saving a further 20% of time while recalculating modifiers.

Aside from this, a fairly big improvement came when we noticed that our multithreading system would occasionally bug out and have all threads waiting for each other for several milliseconds. This made multithreading relatively fast operations actually end up being slower on average, and even where it was still worth it, it’d be slower than it needed to be. Luckily, our Tech Director was able to save the day and stop this madness, improving our player experience immeasurably.

This is just a taste of the things we did. Basically, a lot of time was spent analysing a deliberately absurd save game - it was set to maximum pop growth, tech progress, galaxy size and habitable planets, and then run without crises or fallen empires until 2730. The game chugged a fair bit (with which I mean, it took 11 minutes for a year), but it turned out the main culprit was strike craft movement. I was unable to replicate this on any normal save - it probably only occurs during battle, and there were presumably some extremely large battles going on - but anyway by multithreading that it actually became somewhat more reasonable to play.

From there, there were a lot of incremental fixes that were possible. For instance, the game spent quite a bit of time working out whether a system had colonies in it, several times a day - something which could be cached quite easily. (Well, so I thought. Two OOS fixes later, I was regretting this). Another big offender was wars: a country didn’t have a cached set of wars it was fighting in, but would instead recalculate all the wars it was fighting in whenever it needed to know information about any of the wars it was fighting in. Needless to say, this was quite inefficient, and fortunately quite cachable. Then, whenever the game was working out which type of starbase a starbase was (e.g. “Bastion”) - including every few frames on the outliner - it would look through every different type of starbase and decide which one was most appropriate here - the answer? Cache, cache, cache.

We also sped up the time it took for the AI to decide where to establish branch offices. Then we noticed that most of the time spent updating countries in serial was spent assessing the validity of their policies - something which we could thread. (Ok, it’s not so easy: we could thread the calculation, cache the result, and then implement the result in the next serial update, which would be basically straight afterwards). Finally, monthly ticks should be a bit quicker, since we used a similar logic on the calculations for which pops should assemble, grow and decline, and also removed about 50% of the job cache recalculations during auto migrations.

It wasn’t all plain sailing - aside from at least three OOSes and two crashes introduced and fixed with this work, we noticed after a while that the game wasn’t quite as fast as we were expecting. In fact, it was temporarily freezing every few days. This, it turned out, was because - thanks to some logic fixes with unintended consequences - the AI was thinking extremely hard about where to place its megastructures. So some changes to put the more expensive checks there were needed.

How much impact will all this have? Well, I can’t promise any particular number, for various reasons. For one thing, most of these improvements were made in July, and it’s always possible we added new inefficiencies in the meantime (e.g. the megastructures thing). Also, in particular due to AI games, a 3.4 save is not very comparable with a 3.5 save, since the AI will have behaved rather differently in creating that save (but on the other hand, you cannot load a 3.5 save in 3.4, because it will almost certainly crash). Besides that, a particular save may have a particular thing going on causing it to lag (e.g. the strike craft issue alluded to before, which had otherwise seemed a non-issue). And sometimes computers are just temperamental and allocate their resources to doing things other than playing the game. Nevertheless, last time I did tests based on 3.4 saves, it was more than 30% faster. In my latest late game campaign, it’s not precisely fast (the late game will never be as fast as the early game - there’s so little going on in the early game that performance is primarily determined by how fast it takes to render frames), but it definitely feels less slow. But I look forward to seeing what people think, and whether people feel that more effort is needed.
Holy shit, look at what a performance mess their code was (likely still is).

But this is good progress.

Now THIS is what I'm talking about when it comes to performance fixes.

Custodians fucking deliver. All other pdox team should learn from this.
And I was just beggining to itch for a replay...
 
Joined
May 11, 2007
Messages
1,854,427
Location
Belém do Pará, Império do Brasil
Fucking finally. Late game performance keeps me from playing the game entirely.
Right? I got a game to like 200 years, but the performance gave me soulpain.

As the saying goes, what paradox programmers giveth, paradox content creators taketh away
Yeah, but that's the thing with programming: You have to be careful or your project gets technical debt. Legacy Code is a bitch.

And I was just beggining to itch for a replay...
Sigh Right?
Its "wait for the next update so you can do a replay" o'clock.
 

As an Amazon Associate, rpgcodex.net earns from qualifying purchases.
Back
Top Bottom