1. Stellaris
  2. News

Stellaris News

Stellaris 3.3 "Libra" Update will release February 23rd!

Hello everyone!

First of all I’d like to thank all of you that participated in the beta and provided feedback on the unity rework that we’ve been working on for quite some time now! Your feedback has been invaluable in making sure that we release this update to Stellaris in the best state it can be. :D

Second of all, we are now ready to reveal the release date for the free 3.3 “Libra” patch. The Libra patch will be released on Wednesday, February 23rd at 10:00 am CET!

And with that announcement out of the way, here are the full patch notes for the 3.3 update:

3.3.1 "Libra" Patch Notes
[expand]

######################### VERSION 3.3.1 ###########################

# Features

# Unity Rework

* Suppressing or Promoting factions no longer costs Influence.
Known Issue: Unity costs for Faction Manipulation are not yet functioning.
* All other technologies that increased unity production now instead increase Edict Fund by 20.
* Autochthon Monument, Corporate Monument, and Simulation Site building lines now generate a small amount of Unity and increase Unity generation from jobs on their planet.
* Autochthon Monuments and other similar buildings now produce Unity based on the number of Ascension Perks the Empire has taken.
* Cutthroat Politics now also reduces Edict Upkeep by 20%.
* Executive Vigor Ascension Perk now grants 100 Edict Fund instead of 2 Edict Capacity.
* Grand Council and Harmonious Directives Traditions now grant 50 Edict Fund instead of 1 Edict Capacity.
* Imperial Cult Civic now grants 100 Edict Fund instead of 2 Edict Capacity.
* Inwards Perfection now grants 50 Edict Fund instead of 1 Edict Capacity.
* Planetary Unification now grants +5% Unity production and a one time Unity award instead of +2 Unity.
* Brand Loyalty civic now grants 25 Edict Fund instead of 1 Encryption. Subsumed Will and OTA Updates now also grant 25 Edict Fund.
* Capital designations now provide production bonuses.
* Feudal Society now also reduces Leader hiring costs by 50%, waives Unity upkeep costs for employed Leaders, causes employed Governors to instead generate Unity equal to their skill level, but removes the ability to dismiss Leaders.
* Finishing tradition trees now unlocks the ability to select previously locked Federation types.
* The Imperial Authority now gains increased Influence from Power Projection.
* Added Planetary Ascension Tiers to enhance Planet Designations through Unity
* Reforming government now costs Unity. The cost is based on Empire Size.
* Renamed Administrator jobs to Politicians. Assigned Bureaucrats, Priests and other related jobs to the new Administrator economic category.
* Resettling pops that previously cost Influence now costs Unity. Abandoning colonies still costs Influence.
* Unity Ambitions and Campaigns now function like Toggled Edicts and last until canceled with upkeep rather than costs.
* From Beta: Increased Spiritualist discounts on edict cost and upkeep to -10%/-20% from -5%/-10%. Cutthroat Politics now grants -20% edict upkeep.
* Hive empires can now build a variant of the Autochthon Monument line called Sensoriums.
* Leaders have a base cost of 100 unity and cost 50 additional unity for every leader owned leader, not counting the ones you start with. The cost goes down whenever a leader dies or is fired.
* Memorialists and Death Cults can now choose whether to build their specialized Unity buildings or regular ones. Memorialist buildings now replace the Autochthon Monument line.
* Merchant Guilds no longer produce bonus unity.
* Rulers now provide +5 Edict fund per level instead of their previous Edict Duration and Unity Boost.
* Technocracy no longer generates unity. Instead the Civic now doubles the chance that your scientists will discover a technology from within their expertise. The civic only requires you to be partially materialist.

# Necroids Species Pack Features

* New Civic: Permanent Employment added.

# New Content

* Added 2 new bespoke star systems and 3 new anomalies to be discovered: “Temporal Prism”, “Lost Soul” and “Ancient Vending Machine”. Also added a colony event chain, “Insidious Ophidians”.
* 2 new archeology sites were added to the base game: “The Mask of Transformation” and “Rage Sage”.
* Added Plantoid, Lithoid, Necroid, and Aquatic pre-sapient pops to discover for owners of the respective Species Packs.

# Balance

* Activating an edict now requires one months upkeep cost worth of stockpiled resources.
* The Hydrocentric Ascension Perk now allows empires to flood habitats, making them suitable for Aquatic species.
* Edicts can now have a cooldown before they can be disabled.
* AI Megacorps should spawn half as often as before now.
* Increased the likelihood of getting endgame crises that are not the Unbidden.
* Beta: Empire Sprawl has no effects under 100 rather than 50.
* Beta: Increased Unity production of Bio-Trophies from 1 to 3.
* Beta: Reduced the costs of higher tier edicts and campaigns.
* Scientists currently researching a technology can now gain new traits as they level up
* Distinguished Admiralty now gain +2 starting level to their Admirals and Generals.
* Fixed unmodifiable traits so that you can now correctly remove special habitability traits, along with various other traits that you were not meant to be able to add but it was fine to remove. Also allowed you to apply existing species templates containing such traits to the rest of the species. (This mainly covers flavour-based traits - there are still some such as Mechanical or Psionic or Necrophage which you will not be able to add or remove via species modification)
* From Beta: Empire Size effects on edicts, campaigns, and ambitions now directly affect the base costs of these, so bonuses like Spiritualist ethic's cost reductions now reduce costs and upkeep by the expected percentages.
* Increased political power of ruler and specialist strata under Decadent Lifestyle.
* Increased the consumer goods upkeep of Decadent Lifestyle.
* Integrated Preservation no longer increases admin cap, instead it gives your empire a flat 30% increase to Automatic Resettlement Chance.
* It now costs 25/50 influence to upgrade a habitat in addition to the alloy cost.
* Leaders now only stay in the active pool for 1 year, hire them quickly before they leave!
* Beta: Megastructures no longer have a unity upkeep
* Pearl Divers now produce one more trade value (3 by default) and will not steal Angler jobs when food is short anymore.
* Reduced campaign costs and ambitions costs significantly, re-added Edict Cost Reduction to spiritualists for Unity Ambitions and Sacrifices.
* Regenerative Hull Tissue, Nanite Repair System and Nanobot Cloud have had their values sliced in half however they now heal on a percentage basis rather than a static one leading to a net buff in most situations..
* Beta: Removed the penalty to trade value from low habitability due to it not working properly with pops that were of a species other than the empire founding species
* Servile pops should no longer retain the trait if they become zombies.
* Spiritualist empires can now acquire the technologies associated with the Autochthon Memorial and similar buildings, as well as their faith based line.
* Spiritualists are no longer allowed to take ‘Byzantine Bureaucracy’ since they don't have Bureaucrats.
* Telepaths now give +5% planetary output and get bonuses from planet administrator modifiers
* The "Sell to Private Collector" minor artifact decision now grants a flat 500 energy and has a 6 month cooldown.
* The Here Be Dragons endgame trigger now lets Machine Intelligences with the Synthetic Age ascension perk reach it after 4 ascension perks rather than 6.
* The Living Metal technology can now be discovered as long as you have some within your borders.
* The Void Dweller finisher from the Expansion tradition tree now also discounts upgrading habitats.
* Trade value is now affected by difficulty bonus. This will make non hive mind empires more competitive on higher difficulty settings compared to hive mind AI empires.

# AI

* AI can now create more specialized planets by switching place of buildings on two different planets with each other.
* AI will no longer instantly buy ever single slave pop on the slave market.
* AI will now prioritize its alloy expenditure in a more sensible way, focusing on ships then starbases modules/upgrades and only building defense platforms as a last resort.
* AI bonus willingness to choose rare tech has been reduced from 400% to 50%, AI would often spend a very long time researching expensive rare tech in the early game if they had the chance.
* AI is now much more likely to pick cheaper research options when all else equals.
* AI will now take into account free jobs and items in the construction queue when setting its economic targets.
* AI empires are now more likely to pick the mind over matter ascension perk when available.
* AI empires are now much more likely to finish their ascension path.
* AI empires that require food will no longer build bioreactors.
* AI empires who are not using food will now delete agricultural districts if they happen to have one, for example when they conquer.
* AI ethics such as militarist, spiritualist and materialist will now have an effect on the AI overall economical strategy where they will have additional focus on alloys, unity or science respectively.
* AI fleets who are following a player fleet with "take point" will now merge with each other when they reach the player fleet.
* AI fleets will now follow the player more closely with a follow command when they are in the same system.
* AI is now much more likely to prioritize surveying a system if they know there is a colonizable planet there resulting in faster expansion.
* AI rogue servitor empires will now build an organic sanctuary on each planet that has upgraded their capital building, and build additional ones on planets with high science or industrial output.
* Overhauled AI weightings for picking techs so that it favors technologies that increase research speed instead of almost always researching weapons (faster research means better weapons in the long run). Also fixed various bugs with this, for example extremely low weightings on researching robotics.
* AI can now balance how many pops it needs that produce amenities better (mostly relevant for Hiveminds, so they don’t put ALL their pops on amenity creating jobs).
* AI will no longer destroy superfluous buildings and districts during a temporary occupation of a planet.
* AI will now demolish superfluous districts, commonly obtained during conquest and purging the previous owners.
* AI will now favor the trade policy which generates consumer goods over the default wealth creation policy.
* AI will now favor researching techs unlocking the weapon type they favor (according to their personality).
* AI will now make sure planets contain at least one free building slot if it has unemployed pops and it is unable to find any possible construction which contributes to the AI's economic plan.
* AI will now only build defense platforms if they have maxed out their fleet cap.
* AI will now only upgrade fleets if there would a substantial benefit (+30% fleet power determined by define SHIP_FLEET_POWER_UPGRADE_THRESHOLD )
* AI will now remember if they have fought against a crisis together with the player and continue following their fleets as long as the threat of the crisis remains.
* AI will now spend more of its alloys on upgrading starbases when they have reached their fleet cap.
* AI will now more reliably build habitats again.
* Ai budget for alloys will now heavily favor building colony ships if we have claimed planets we want to colonize.
* AI now understands how to evaluate energy grids and other buildings that apply modifiers to the planet (so now it can create specialized planets better).
* Allied AI will now help its allies defend against the mid and late game crisis.
* AI is now much more likely to prioritize surveying a system if they know there is a colonizable planet there resulting in faster expansion.
* AI will now look at the individual unemployed pop when considering what job to create for it, solving various issues where jobs were created for pops who could not work them.
* Fixed AI often aborting jump drive orders during windup.
* Fixed Lithoid Tree of Life food building and destruction loop
* Fixed a bug where the AI would sometimes try to replace one lost science ship with an excessively high number thereof.
* Fixed an issue where AI can not build any buildings when negative on food and consumer goods at the same time.
* Fixed an issue where AI would continuously upgrade buildings and create an excessive amount of jobs.
* Fixed an issue where AI would incorrectly multiply the trade value generated by a building by the number of jobs provided by the building twice.
* Fixed an issue where AI would only consider solving amenities issues with buildings if there was no unemployment.
* Fixed an issue where AI would put too many pops working amenities jobs.
* Fixed an issue where hive minds were unable to build the spawning pool.
* Fixed an issue where repeatable tech were getting an extra chance to be research as if they were rare techs.
* Fixed an issue where the AI did not colonize low habitability planets when there are no other options causing doomsday origin empires in particular to often experience a very swift end to their species.
* Fixed an issue where the AI would not budget to use ship boost edicts.
* Fixed an issue with AI budgeting preventing it from using terraforming gasses when it wanted to.
* Fixed several issues where AI would get stuck and not build any modules or upgrade any starbases when there were open module slots which were unable to be filled according to the AI's starbase template.
* Improved "Take Point" Follow behavior for fleets.
* Improved AI construction ship behavior, construction ships will now prioritize tasks that are close to them and avoid going to another system that already has a construction ship in it. Heavily increased priority of building starbases in systems with planets.
* Increased allowed budget for alloys on planet construction which prevented AI from building energy grids.
* Life Seeded AIs now always want the World Shaper ascension perk.
* Lithoid empires are now more liberal in spending minerals on their colony ships.
* Reduces AI willingness to take a lot of planets with very low habitability.
* Removed weighted random from AI construction as it now more correctly prioritizes which buildings to build.
* The AI will now use minor artifact decisions with extra focus put on Arcane Deciphering.
* Total overhaul for scripted AI tech selection. The important techs are now: extra research speed, extra resource production, resource producing buildings, ship types and starbase types.
* Updated AI construction ship logic so that they will keep working around the system they have been sent to instead of going back and forth between the empire borders (which was a very inefficient way of building stations)
* Updated AI tradition selection to align better with the current state of the game.
* Adjusted AI tradition tree and ascension perk selection.
* Nanite repair system will no longer be used by the auto designer when the empire does not have access to nanite income.
* Fixed an issue where AI necroid empires didn't build chamber of elevation on their planets.
* Fixed an issue where clone army origin species would not always build ancient clone vats on their new colonies when possible.
* Fixed an issue where the AI were not allowed to build Gaia Seeders.
* Fixed an issue where the AI would incorrectly evaluate the potential resources gained by constructing a building.
* Fixed an issue where the AI would sometimes revert to obsolete fallback behavior when deciding what to build.

# UI

* Added a textbox for Cost in Edicts UI. Also rearranged neighboring elements to align better.
* Added column for upkeep in Edicts interface (entry as well as sort button)
* Hid Empire Sprawl impact from top of Edicts UI. Put Edict Fund in its place to keep neat alignment.
* Added upkeep into the leaders entry in Leaders View.
* You can now see Unbidden anchor systems on the galactic map.
* Clicking the fleet size icon in the top bar now opens the fleet manager.
* Improved legibility of approximate job output indicators on districts and buildings, and made those on buildings also show country modifiers (those on districts already did).
* Optimized elements for leader upkeep and age to fit localization better and avoid UI overlaps.
* Technologies which let you clear blockers now give a tooltip which says how many such blockers are on your colonies.
* Tooltips should no longer show any percentage values with decimals.

# Stability

* Fixed a bug where the closest_system effect could cause an OOS (it would OOS when hovering over the tooltip of certain events).
* Fixed a crash if script tried to change the species rights of a country (e.g. pirates) without species rights.
* Fixed a crash that would occur if a timed modifier element in the expansion planner was hovered after the modifier expired.
* Fixed an OOS if you ever use every_system_in_cluster in a tooltip (luckily, we never did that)
* Fixed crash when using pass_targeted_resolution in events

# Performance

* Reduced frame rate impact of opening planet view.
* Optimized (slowed down) recalculations of species view and colonization menu so that they don’t tank framerate.
* Refactored bonus resources that civics grant to jobs.
* Refactored unemployment benefits from living standards.
* Refactored Living Standards to use pop modifiers on the living standards script, instead of being checked for each pop category.
* Updated ship shader to support empire color in emissive, decreasing the amount of draw calls for Aquatic ships.
* Greatly improved performance of upgrading fleets. This mainly affects the tooltip of the UI (which was very expensive when hovered over), but also saves some time each time the AI attempts to upgrade its fleets.

# Bugfix

* Beta: Bio-Trophies now cost Unity to resettle instead of Influence.
* Fixed Shared Burdens not providing unity for unemployed pops.
* Fixed an issue where pops would mass switch from one job to another (for example maintenance drones).
* Fixed modifiers for Police State civic.
* Reduced Unity gained from the Trade League trade policy.
* Trade value from jobs now get a penalty from low planet habitability.
* Colony designations that increase unity from Administrator jobs now have weighting for spiritualist, hive and machine empires.
* Fixed order of Galaxy Size options in galaxy setup not being ordered based on the number of stars.
* “Synths Scuttle Starbase" now refers to the starbase orbiting a star, rather than a planet.
* Assorted, minor fixes to grammar and punctuation.
* Added Planetary Automation behavior for districts that grant Bio-Trophy jobs.
* Added missing custom icon for ship component "Nanite Repair System".
* Beta: Rogue Servitors can now upgrade their Simulation Centers.
* Beta: Rogue Servitors now have access to the correct Unity producing buildings.
* Blocked ascension tier upgrade on unowned planets.
* Blocked building ships in occupied shipyards.
* Chronicle Drones now care about photosynthesis.
* Citizen Service Soldiers now produce their unity.
* Colonizing Consecrated planets no longer enables breaking the Consecrated Worlds limit.
* Deluging primitives now removes the observation outpost.
* Democratic manadates now check for uncapped rural districts, allowing democratic candidates on shattered rings to usher in a new age of digging too deep and too greedily!
* Save files can no longer be ‘resumed’ if the required dlcs are not available.
* Edicts are now canceled if an empire can not sustain the upkeep.
* Enhanced the memory of Memorialist Hive Minds (they can now correctly build the special Memorialist buildings)
* Ensured that the Arcology Project checks for agricultural districts on Wet Aquatic worlds.
* Venus realized that they were larger than Earth and has decided to shrink to a more appropriate size.
* Fixed "The Library" dig site occasionally granting unaccessible deposits.
* Fixed Criminal Heritage Galactic Emperors.
* Fixed Curators retelling the wrong info when asking again about the Scavenger's origins.
* Fixed Defense Grid Supercomputer not immediately applying its effect upon construction.
* Fixed Megacorp Death Cults not starting with a Sacrificial Temple".
* Fixed Memorialists seeing that some techs unlocked buildings they could not build.
* Fixed Planetary Unification tech description overflowing the box.
* Fixed Sociocultural History tech showing it unlocked the Bounty Sacrifice twice.
* Fixed a bug where system wide auras sometimes persisted after leaving a system.
* Fixed a bug where you could end up with multiple Zroni homeworld systems.
* Fixed an issue where Medical Workers' habitability bonuses would not affect habitability impacts on pop growth correctly.
* Fixed an issue where a ghost Unbidden Portal would continue spawning ships.
* Fixed an issue where only the fleets of the main attacker would go MIA in enemy territory when a new war starts.
* Fixed an issue where scientists would only get expertise traits based on the fields they were not actively working on.
* Fixed automatic ship design name generation often generating a design with an invalid name (i.e. one your empire was already using somewhere) when using certain name lists.
* Fixed clicking top bar influence icon opening the edicts view.
* Fixed expired timed modifiers being visible in the expansion planner.
* Fixed fleet upgrade button telling you your ships were already upgrading telling you your ships were already upgrading twice.
* Fixed it being possible to build ships in occupied mega shipyards.
* Fixed it being possible to upgrade the ascension tier of planets not owned by the player.
* Fixed leader cost sorting option in the leader view sorting by energy instead of unity.
* Fixed looping checkbox clicked audio in the Apply Species Template view.
* Fixed potential issue where Sentinels (crisis-fighters) used the same global event target as Sentinels (stone soldiers from an arc site).
* Fixed reinforcements not arriving to the target fleet and instead showing up at the station when an evasive path was needed in order to get to the target fleet.
* Fixed reinforcements not using evasive path.
* Fixed several places where tooltips in the contacts or diplomacy views would mistake guaranteeing and being guaranteed, and supporting independence or having one's independence supported.
* Fixed some building requirements
* Fixed some faction demands
* Fixed some inconsistencies with whether Aquatic habitability modifiers were applied and displayed.
* Fixed some megastructures not animating properly.
* Fixed some misgenderings of rulers in German espionage and Galactic Imperium events.
* Fixed some spacing issues in the localisation of the fire event effect in foreign languages.
* Fixed species modification planetary trait list sometimes overflowing.
* Starbase modifiers should now be applied more quickly after changing.
* Fixed starbase modifiers not always being properly updated when removing buildings or components.
* Fixed the Manifesti faction demanding you outfit your ships with the Gestalt equivalent of sapient combat computers.
* Fixed the species gender selector not having the correct impact on certain Vanilla species' leader portraits.
* Fixed the tooltip of Open Border policies sometimes helpfully telling you that your country was default (in a way that isn't translated to other languages)
* Fixed trade UI showing negative values for Collection Range and Protection Range under some circumstances
* Fixed transport ship jump drive cooldown resetting when invading a planet.
* Fixed unlocalised text "UNKOWN_ORDERS" in a certain tooltip in the fleet interface
* Fixed various living standards incorrectly providing unity instead of a happiness penalty for unemployed pops.
* Fixed wrong color of font used in the Alien Box event in Brazilian Portuguese
* Fixing missing line break for the alert about Necrophyte Shortages in Chinese
* From Beta: Chronicle Drone and Death Chronicles now have the same production.
* From Beta: Chronicle Drones are now Administrators
* Great Khan will no longer turn hostile towards their own satrapies
* Increased reward of the "Shattered World" anomaly event from 3 to 5.
* Beta: Life-Seeded Permanent Employment Megacorps will no longer all be zombies.
* Loading... New Rogue Servitor Planetary Automation Algorithms installed. Bio-Trophy district management for habitats and city worlds updated... Have a nice day.
* Machine Intelligence empires with the Rogue Servitor civic won't be forced to burn organics during the Primordial Soup event.
* Masters Writing of War and Politics now also cost unity.
* Nanite repair system will no longer be picked by the ship auto design if you do not have nanite income.
* Pop job weight for enforcers is now adjusted based on if there is crime or not.
* Posthumous Employment Centers can now be seen even if you can't build them yet.
* Religious Arcologies should now provide appropriate jobs for Death Cults.
* Revolts in systems with enclave stations will no longer be granted ownership of the enclave station (it will remain in the hands of the enclave).
* Sacrifices now have a unity cost.
* Science ships no longer get a free survey completion when their target system gets taken over by someone else.
* Streamlined "Unknown Contact" event chain by turning the "Study the Living Sea" planetary decision into a special project.
* Taking "The Flesh is Weak" no longer makes your species lose its gender presets.
* The Caravaneers will no longer turn Gestalt Rulers psionic.
* The Materialist faction is now happy that you’ve discovered the secrets of the precursors even if those precursors are the Baol or the Zroni.
* The Nemma World colony event will now actually fire.
* The Rubricator is no longer lost to the player if a non-default empire kills Shard.
* The orbital station on New Baldarak (which is rendered useless by the events that create New Baldarak) is now correctly removed.
* The portrait selection view for empire creation now gets a scrollbar if the number of portraits exceeds the two visible rows.
* The project for reanimating Hrozgar now uses the correct art.
* Transport Fleets should handle Landing armies better, notably when in ‘Aggressive Stance’.
* Updated various job weights
* Void dwellers no longer start with a broken Posthumous Employment Center.
* You can now build a Fleet Academy if you have queued a Shipyard (you don't need to wait for it to complete)
* You cannot drag and drop ships into someone else's fleet anymore.
* Zombies can no longer colonize planets.
* Added a missing line break in the Take Point button's tooltip.
* Added missing tooltip when hovering the shipyard tab of a mega shipyard owned by another empire.
* Added missing description for "Precognitive Interface" and "Psi Jump Drive" components in the Technology menu.
* Added missing description for "The Sentinels" planetary feature.
* Added missing description for deposit "Project Cornucopia".
* Added missing galaxy settings tooltips to the galaxy creation screen, both in Multiplayer and in single player.
* Added missing header in the description of "Omega Theory" technology.
* Added missing header in tooltip description of "Defense Platform" and "Habitat".
* Added missing information about required DLC for the Corporate Authority.
* Clarified the tooltip for automatic development to be clear when you had it turned on or not.
* Fixed Angler job name not displaying in FR
* Fixed Megastructure view description resetting so that it no longer shows the wrong description when switching between different kinds of Megastructures.
* Fixed Megastructure view description sometimes not reflecting the selected Megastructure.
* Fixed Megastructure view not always using the default image when no structure specific image exists.
* Fixed a Galcom resolution tooltip saying that the empire was already supporting the resolution when in fact it was meant to say it was already opposing it.
* Fixed a bunch of empire names being missing (and therefore English) in Chinese. Mainly Machine Empires and the Galactic Imperium.
* Fixed a bunch of issues in various federation law acceptance tooltips (several had missing or hard to interpret and ugly information).
* Fixed a dev comment being present in an event text when you encounter an empire with Here Be Dragons during First Contact.
* Fixed a missing species name in event The Dragon has Landed.
* Fixed an issue where the tooltip breakdown for the habitability of an uninhabited planet was missing country modifiers.
* Fixed an unlocalised tooltip in non-English versions of the game when hovering over a megastructure's effects.
* Fixed broken localization reference in Doomsday Origin.
* Fixed cases of unlocalised text when the Galactic Community or Empire tried to build too many Titans for its Defense Force.
* Fixed gender selection tooltip in empire creation stating that clicking a non selected gender will revert to default gender settings.
* Fixed grammar of adding a single clue to an arc site or insight to a first contact.
* Fixed incorrect description of traits "Inspired Researcher" and "Inspired Surveyor".
* Fixed it being possible to get unlocalised "Greetings!" in other languages when you opened diplomatic interactions with other empires for the first time.
* Fixed missing loc string for Nemma Mining Operation deposit.
* Fixed missing localization for PLANET_ASCENSION_TIER_EFFECT_DESC in the tooltip for planetary designation.
* Fixed that an empty broken Federation details tooltip would show up if you tried to look at the federation of a country with no federation in the contacts view.
* Fixed the tooltip of Integrated Preservation tradition.
* Removed references to edicts and factions from influence tooltip.
* Shortened string SLAVE_MARKET in French.
* The description for the Imperial Navigation System no longer speaks of the Community of old.

The tooltips giving estimated job upkeep and production are now better at dealing with stuff like rogue servitors (where it would previously estimate based on an organic pop which could not work the job, sometimes giving the tooltip a food upkeep instead of a minerals one).
* Fixed "Tebri" and "Tebiron" (prescripted empire planet and system names) being untranslated in Chinese.

# Modding

Read the modding section here.
[/expand]

Some of the entries are marked as “Beta:”, to show what has been changed compared to the updated beta version that some of you may have been playing on. And also as a way to show the impact that community feedback has had on the game.

Be sure to catch our 3.3 “Libra” Release Stream, on Wednesday, February 23rd, at 9:30 AM CET on twitch.tv/paradoxinteractive!

Stellaris Dev Diary #241 - Unity Open Beta and the Dev Clash

written by Eladrin

Hi everyone!

We’re two weeks into the Stellaris Dev Clash, which is being played on the Stellaris 3.3 “Libra” Unity Open Beta branch.

Since we initially put it up, there have been over 216,000 games played in the Open Beta, and we’ve gathered fantastic amounts of feedback from the community - some of which was taken into account during the first update to the Open Beta, and more adjustments will be coming before the actual 3.3 release.

The first update included the following changes:

3.3 UPDATED Unity Open Beta Changelog
[expand]
###################
# Feature
###################

  • Unity Ambitions and Campaigns now function like Toggled Edicts and last until canceled with upkeep rather than costs.
  • Planetary ascension now also reduces the effects of empire sprawl from that planet


###################
# Balance
###################

  • Empire Sprawl has no effects (except for edict costs) under 100 rather than 50.
  • Removed Machine Intelligence increased size penalties, replaced with -15% size from pops and +50% size from colonies.
  • Megastructures no longer have a unity upkeep.
  • Increased Unity production of Bio-Trophies from 1 to 3.
  • Reduced the costs of higher tier edicts and campaigns.
  • Leaders have a base cost of 100 unity and cost 50 additional unity for every owned leader, this value starts increasing once you own more than 6 leaders.
  • Reverted Citizen Service, it now provides unity just like it used to.
  • Distinguished Admiralty now gain +2 starting level to their Admirals and Generals.
  • Zombies are now less likely to seek jobs that produce resources.
  • Servile pops should no longer retain the trait if they become zombies.
  • Spiritualists are no longer allowed to take Byzantine Bureaucracy since they don't have Bureaucrats.
  • Trade value is now affected by AI difficulty bonus. This will make non hive mind empires more competitive on higher difficulty settings compared to hive mind AI empires.


###################
# AI
###################

  • AI can now create more specialized planets by switching place of buildings on two different planets with each other
  • AI is now much more likely to pick cheaper research options when all else equals
  • AI will now favor the trade policy which generates consumer goods over the default wealth creation policy
  • Fixed a bug where the AI would sometimes try to replace one lost science ship with an excessively high number thereof.
  • Fixed an issue where repeatable tech were getting an extra chance to be researched as if they were rare techs
  • Fixed several issues where AI would get stuck and not build any modules or upgrade any starbases when there were open module slots which were unable to be filled according to the AI's starbase template
  • Improved AI construction ship behaviour, construction ships will now prioritize tasks that are close to them and avoid going to another system that already has a construction ship in it. Heavily increased priority of building starbases in systems with planets.
  • Reduces AI willingness to take a lot of planets with very low habitability


###################
# UI
###################

  • Added a textbox for Cost in Edicts UI. Also rearranged neighboring elements to align better.
  • Added column for upkeep (entry as well as sort button) in Leader recruitment UI.
  • Hid Empire Sprawl impact from top of Edicts UI. Put Edict Fund in its place to keep neat alignment.
  • Improved legibility of approximate job output indicators on districts and buildings, and made those on buildings also show country modifiers
  • Optimized elements for leader upkeep and age to fit localization better and avoid UI overlaps.
  • Technologies which let you clear blockers now give a tooltip which says how many such blockers are on your colonies


###################
# Bugfix
###################

  • Ascension Tiers on planets are set to 0 whenever a planet changes owner
  • Bio-Trophies now cost Unity to resettle instead of Influence.
  • Fixed modifiers for Police State civic
  • "Synths Scuttle Starbase" now refers to the starbase orbiting a star, rather than a planet.
  • Fixes to grammar and punctuation.
  • Added a missing line break in the Take Point button's tooltip
  • Added missing description for "Precognitive Interface" and "Psi Jump Drive" components in the Technology menu
  • Added missing description for "The Sentinels" planetary feature.
  • Added missing galaxy settings tooltips to the galaxy creation screen, both in Multiplayer and in single player.
  • Added missing header in the description of "Omega Theory" technology
  • Added missing header in tooltip description of "Defense Platform" and "Habitat".
  • Added missing information about required DLC for the corporate authority
  • Rogue Servitors now have access to the correct Unity producing buildings.
  • Clarified the tooltip for automatic development for when you had it turned on or not
  • Deluging primitives now removes the observation outpost
  • Fixed "Tebri" and "Tebiron" (prescripted empire planet and system names) being untranslated in Chinese
  • Fixed Criminal Heritage Galactic Emperors
  • Fixed Curators retelling the wrong info when asking again about the Scavenger's origins
  • Fixed Memorialists seeing that some techs unlocked buildings they could not build
  • Fixed Planetary Unification tech description overflowing the box
  • Fixed Sociocultural History tech showing it unlocked the Bounty Sacrifice twice
  • Fixed a Galcom resolution tooltip saying that the empire was already supporting the resolution when in fact it was meant to say it was already opposing it
  • Fixed a bug where you could end up with multiple Zroni homeworld systems
  • Fixed a bunch of issues in various federation law acceptance tooltips (several had missing or hard to interpret and ugly information)
  • Fixed a missing species name in event The Dragon has Landed
  • Fixed an issue where scientists would only get expertise traits based on the fields they were not actively working on
  • Fixed an unlocalised tooltip in non-English versions of the game when hovering over a megastructure's effects
  • Fixed incorrect description of traits "Inspired Researcher" and "Inspired Surveyor"
  • Fixed leader sorting by cost in the leader view sorting by energy instead of unity
  • Fixed some spacing issues in the localisation of the fire event effect in foreign languages
  • Fixed species modification planetary trait list sometimes overflowing
  • Fixed the tooltip of Integrated Preservation tradition
  • Fixed the tooltip of Open Border policies sometimes helpfully telling you that your country was default (in a way that isn't translated to other languages)
  • Fixed various living standards incorrectly providing unity instead of a happiness penalty for unemployed pops.
  • Fixed wrong color of font used in the Alien Box event in Brazilian Portuguese
  • Fixing missing line break for the alert about Necrophyte Shortages in Chinese
  • Life-Seeded Permanent Employment Megacorps will no longer all be zombies.
  • Posthumous Employment Centers can now be seen even if you can't build them yet.
  • Revolts in systems with enclave stations will no longer be granted ownership of the enclave station (it will remain in the hands of the enclave)
  • Sacrifices now have a unity cost.
  • The Caravaneers will no longer turn Gestalt Rulers psionic.
  • The Materialist faction is now happy that you discovered the secrets of the precursors even if those precursors are the Baol or the Zroni.
  • The project for reanimating Hrozgar now uses the correct art.
  • Void Dwellers no longer start with a broken Posthumous Employment Center.
  • Zombies can no longer colonize planets.


###################
# Modding
###################

  • Added error logging for when a window uses a scroll bar but does not have a background
  • Enabled the use of the "distance" trigger in script maths (e.g. export_trigger_value_to_variable)
  • Fixed a tooltip crash from firing a nonexistent event
  • Renamed election cost modifier country_election_influence_cost_mult to country_election_cost_mult to not reference influence, as it now costs unity.
  • You can now use script values in ships' empire_limit

[/expand]

Some additional changes and fixes that we've made based on the Open Beta and will be in the release to live include:

3.3.1 EVEN MORE UPDATED Unity Open Beta Changelog
[expand]
###################
# Balance
###################

  • Edicts can now have a cooldown before they can be manually disabled, but are now cancelled if an empire can not sustain the upkeep.
  • AI Megacorps should spawn half as often as before now.
  • Leaders now only stay in the active pool for 1 year, hire them quickly before they leave!
  • Telepaths now give +5% planetary output and get bonuses from planet administrator modifiers
  • Empire Size effects on edicts, campaigns, and ambitions now directly affect the base costs of these, so bonuses like Spiritualist ethic's cost reductions now reduce costs and upkeep by the full percentages.
  • Increased Spiritualist discounts on edict cost and upkeep to -10%/-20% from -5%/-10%. Cutthroat Politics now grants -20% edict upkeep.
  • Reduced campaign costs and ambitions costs significantly, re-added Edict Cost Reduction to spiritualists for Unity Ambitions and Sacrifices
  • Removed the penalty to trade value from low habitability due to it not working properly with pops that were of a species other than the empire founding species


###################
# AI
###################

  • AI will no longer instantly buy ever single slave pop on the slave market.
  • AI empires are now more likely to pick the mind over matter ascension perk when available
  • AI empires are now much more likely to finish their ascension path
  • AI will no longer destroy superfluous buildings and districts during a temporary occupation of a planet.
  • Added AI budgeting for habitats
  • Fixed Lithoid Tree of Life food building and destruction loop
  • Fixed an issue where the AI would not budget to use ship boost edicts
  • Life Seeded AIs now always want the World Shaper ascension perk
  • Updated AI tradition selection to align better with the current state of the game
  • adjusted AI tradition and AP selection + bugfix nanite repair system


###################
# UI
###################

  • Clicking the fleet size icon in the top bar now opens the fleet manager


###################
# Stability
###################

  • Fixed a crash that would occur if a timed modifier element in the expansion planner was hovered after the modifier expired


###################
# Bugfix
###################

  • Fixed Shared Burdens not providing unity for unemployed pops
  • Reduced Unity gained from the Trade League trade policy.
  • Scientists assigned to research can now gain new traits.
  • Colony designations that increase unity from Administrator jobs now have weighting for spiritualist, hive and machine empires.
  • Tidied up the tooltips for various civics
  • Rogue Servitors can now upgrade their Simulation Centers
  • Blocked ascension tier upgrade on unowned planets
  • Chronicle Drones now care about photosynthesis
  • Citizen Service Soldiers now produce their unity.
  • Do not resume a save if the required dlcs are not available
  • Edicts are now cancelled if an empire can not sustain the upkeep. Activating an edict now requires one months upkeep cost worth of stockpiled resources.
  • Enhanced the memory of Memorialist Hive Minds (they can now correctly build the special Memorialist buildings)
  • Fixed Defense Grid Supercomputer not immediately applying its effect upon construction
  • Fixed a bug where system wide auras sometimes persisted after leaving a system
  • Fixed an issue where a ghost Unbidden Portal would continue spawning ships
  • Fixed clicking top bar influence icon opening the edicts view
  • Fixed expired timed modifiers being visible in the expansion planner
  • Fixed it being possible to get unlocalised "Greetings!" in other languages when you opened diplomatic interactions with other empires for the first time
  • Fixed it being possible to upgrade the ascension tier of planets not owned by the player
  • Fixed looping checkbox clicked audio in the Apply Species Template view
  • Fixed missing localization for PLANET_ASCENSION_TIER_EFFECT_DESC in the tooltip for planetary designation
  • Fixed order of Galaxy Size options in galaxy setup not being ordered based on the number of stars
  • Fixed reinforcements not arriving to the target fleet and instead showing up at the station when an evasive path was needed in order to get to the target fleet
  • Fixed reinforcements not using evasive path
  • Fixed some building requirements
  • Fixed some faction demands
  • Fixed trade UI showing negative values for Collection Range and Protection Range under some circumstances
  • Fixed unlocalised text "UNKOWN_ORDERS" in a certain tooltip in the fleet interface
  • From Beta: Chronicle Drone and Death Chronicles now have the same production.
  • From Beta: Chronicle Drones are now Administrators
  • Great Khan will no longer turn hostile towards their own satrapies
  • Masters Writing of War and Politics now also cost unity.
  • Nanite repair system will no longer be picked by the ship auto design if you do not have nanite income
  • Removed references to edicts and factions from influence tooltip
  • Station modifier applying on building/module construction
  • Taking "The Flesh is Weak" no longer makes your species lose its gender presets
  • The description for the Imperial Navigation System no longer speaks of the Community of old
  • The tooltips giving estimated job upkeep and production are now better at dealing with stuff like rogue servitors (where it would previously estimate based on an organic pop which could not work the job, sometimes giving the tooltip a food upkeep instead of a minerals one)
  • Updated tutorial screens and tooltips according to the Unity system rework.
  • Updated various job weights
  • You cannot drag and drop ships in someone else's fleet anymore



###################
# Modding
###################

  • Added resource_revenue_compare and resource_expenses_compare triggers
  • Fixed station_modifier and triggered station modifiers on starbase modules or buildings, not immediately applying their effects upon construction
  • You can now again specify that a leader made with clone_leader is an event leader (or immortal)


[/expand]

Thank you for all of the suggestions, opinions, bug reports, constructive criticism, and observations. While the feedback threads have closed, you can still play on the Open Beta branch. To opt-in to the Steam open beta branch, right-click Stellaris, click Properties, Beta tab, and choose “Stellaris_test” from the drop-down.



Nearly a hundred years have passed and war has broken out across the galaxy as ten teams desperately struggle to keep up with Normal Speed. (Have we mentioned that there have been performance improvements in 3.3?)

The Dev Clash teams were revealed here, and you can view the first two sessions here:

Session 1 - The Act Session 2 - The Heart

Join us for Session 3 (and beyond) every Monday at 1500 CET (UTC + 1) on http://twitch.tv/paradoxinteractive!

We’ve gathered statements from the Empires:



Having heard that there were a bunch of cyborgs nearby, Heavy Metal, Inc. Party Fleets™ completed a complementary grand tour through the periphery of QA Core space to bring the noise to the local Jira-Goblins. We made a quick pilgrimage over to the black hole they had (because it's cool!), then on the way home ended up doing an impromptu encore tour (with a surprise stop at their homeworld!) when they asked for more.

Pour one out for our little Groupies. They wanted to be free, but the pyrotechnics show near the Dashboard seem to have given the QA Core a taste of the party life, and people say they're planning on a bash so huge it'll blow up the galaxy.

Metal.



Qua|ity Assur@nc£ C0re §t@tus:

> Intr0duct|on of Me7al(tm) to Jirα-G0b|ins
> Prιmary Qu4|ity Assur@nc£ algorithms corRupt£d
> Reboot to firmware engaged
> Restoring from Backup
> Backup not found...
> Attempting repair of primary algorithms
> Repair Completed Failed Successfully
> ®u¦7is_ A§su®anc£ C0re boot sequence engaged
> Crisis Assurance Core θn|in3



We are pleased that you can join us for our latest earnings call. Profits are steadily climbing with the acquisition of new Platypi Doughnuts, and we are making progress on forming the Great Galactic Torus. As you no doubt remember, our projected profits for completing the Great Torus is enough to purchase the three closest galaxies, which would allow us to spread the beauty and bounty of our Doughnuts throughout the universe.


We remind all of our organic friends to remain in their safety cocoon at all times. (If you do not have a safety cocoon, you will be provided with one shortly.)

Thanks to Witch_Streamer for the image



We in the Horticulturist Commonality are very pleased with how things are starting to look in our own garden now, never before have we seen so much immense beauty outside of our home Protea. We are also overjoyed that we have found new fluttering friends that share our passion for gardening! Together with the Rhopalocerans of the Great Cocoon, our gardening projects will reach a much larger scale through the newly established Gardeners of the Galaxy. We hope that we will find the rest of the civilizations in the galaxy to be just as cooperative with letting us tend to their planets. After all, who would wish for anything but perfection and beauty?

However, it has been difficult getting through to our neighbors, the Church of Gainz, as they seem to refuse our envoys' attempts of diplomacy. We will look into other ways to tend to the planets that they have within their borders. We have also heard unpleasant things about the Human Game Developers and the Quality Assurance Core, that we will need to look closer into. Whether you are biological beings or machines, we seek to eventually open everyone's eyes to the beautiful potential of the galaxy.



Blessed are the gains, when one may reap the rewards of physical labour and enjoy the rewards afterwards! Though they (power-)walk a different path from us: we of the Strict Observance of Our Lady Trappistine are grateful to have found new friends in our neighbours, the Church of Gainz. So too do we wish the Doughnut Corporation well — may your quest for the divine torus be a peaceful and nourishing one.

It has been especially pleasing to see our produce so warmly received at the other end of the galaxy: eat, drink and be merry, Human Game Developers! As it is written upon our scripture-ledgers, so shall it be: all who dwell within this galaxy shall be enriched by Our Lady's offerings. We work, that the future of our galaxy may be safely assured through acts of divine merriment and gluttonous joy. [Bing, bing!]



Peaceful nations of the galaxy, you might have seen we've conquered a bunch of systems despite our declared peaceful politics. You see, we are pacifists by our nature, and this is why we started to PANIC when our federation decided to start a war and we made a lot of hurried actions.

Now, when there is a huge not-that-friendly looking federation has formed just next to us we are NOT PANICKING AT ALL and would like to apologize for any hostilities in the past. Also, our beautiful ocean worlds are very machine-friendly and will not cause any corrosion to their metal housings!

Let's make some high-quality friendships now and forever.



The most beautiful aspect of Humanity is what we can accomplish together. With the recent creation of the United Human Game Developers Federation we, The Humans, will together with the ASU and the QA Core strive to create the most perfected Product on the market for all Humans to enjoy. We welcome all Customers to witness as we enter the Galaxy into a new era of prosperity, peace and safety.

All customers that preorders our new product will receive an invitation to enjoy our beta program on our newly repaired Ringworld Segment “Also Also Earth”. Here all Humans can enjoy the perfected experience brought to you by us, The Human Game Developers.

By Humans, For Humans.



The Church of Gainz was suddenly and deliberately attacked by a neighboring nation with which we've been in peace with. Although tensions had been rising, the aggression of our neighbor truly shows the vileness and unhinged hostility that they are capable of. This will be remembered as a day of infamy, one to be recorded in the annals of the Swolephin people, and not soon forgotten.



The Rhopalocerans have discovered their true calling: gardening. As members of the Gardeners of the Galaxy alongside the delightful Horticulturist Commonality, we adhere to a simple motto: all planets will be rendered beautiful. Unfortunately, it seems like some planets will have to be pruned... alongside the mechanical infestation that inhabits them.

---

Will The Groupies be avenged? Are the QA Core going to succeed in "clearing the bug database"? Can the Human Game Developers be stopped? Can the vision of the Great Torus be fulfilled?

So, who are you rooting for? And why is it Heavy Metal, Inc.?

See you next week!

Stellaris Dev Diary #240 - Scripting Improvements in 3.3

written by Caligula

Доступно на русском в ВК/Read in Russian on VK

Hello and welcome to another modding-based dev diary - as has become tradition in the weeks before releases in recent times. I fear that we may soon run out of ways to revolutionise the script system, but for now, there’s some pretty cool improvements we have to show off which will be making their debut in 3.3 (you can try them out early in the open beta).

[h3]Script Values[/h3]

This story starts with weight fields. With which I mean something that looks a bit like this:

    weight = {
base = 1
modifier = {
factor = 2
some_trigger = yes
}
}


We realised that the code underlying this script structure was not consistent: there were a number of distinct code implementations that varied in ways that were not readily obvious to the end user, the scripter. For instance, in certain ones, you could input “factor” or “add”, in others, “factor” or “weight”. Then there were the downright problematic cases: sometimes, when you set the base to 0, the game would read 1, and in one case (ai personalities) “factor” would actually count as “add”!

The solution here was to remove all the variations and consolidate them into one code implementation to rule them all. It would have to be made to incorporate the idiosyncrasies (except for the mentioned issues/bugs) of the existing versions (i.e. not break vast swathes of script), but on the other hand, having one system would allow for us to roll out improvements that could be used everywhere in the game.

Despite a few hitches at the start (I may or may not have accidentally had every anomaly capable of spawning on every planet, at one point), this proved quite achievable, so now we no longer need to worry about these fields working differently in different places. Basically the only variance left is whether their default value is 1 or 0.

This done, a few more things could be added to the system. For instance, why just have “factor”, “add” and “weight”? There are a lot of other mathematical operations out there. So we added subtraction, division, modulo, min, max, abs, and rounding (with round, floor, ceiling and round_to). We also made it no longer necessary to enclose these in “modifier = {}”, if they were meant to always apply rather than be triggered.

But that was just the start. Back in 3.1, we added the ability to use “trigger:” in lieu of a number in places such as this, to allow some more complicated maths (so it would take the result of the trigger e.g. num_pops could return 32 pops instead of an absolute number). The code behind this wasn’t quite ideal, though. Basically, whenever the game wanted to calculate what “trigger:num_pops” meant, it would take the string “trigger:num_pops”, see if it started with “trigger:”, if yes then shave that off, and then try and make a trigger from the remainder (and log an error if it failed). Unfortunately, this wouldn’t happen during startup, but rather whenever the game encountered this in script - for example, if it was needed to calculate a tooltip, it would be doing this every frame. Which made it annoying to debug and more potentially costly performance-wise than it needed to be.

This could be done better. So, for 3.3, we made a container called a “CVariableValue”, which could contain several objects:
  • An integer or fixed point (basically just a normal number)
  • A scope/event target - so you could refer to “owner.trigger:num_pops”
  • A trigger
  • A modifier definition
  • A variable string
  • A script value*


*I’ll get back to this later.

Basically, whenever the game would read a script value, it’d work out what it is on startup. This means that whenever the actual value is needed, it would not have to chop up the string and work out what is wanted, but it could simply give the value or call the trigger that is specified. Coincidentally, this system also made it vastly easier to roll out the ability to use “trigger:” in various places, so if there are more places where they’d be desirable, we really don’t have that many excuses not to provide them there (uh oh).

The modders amongst you will have noticed that there’s a few extra things we made possible along the way, there. Firstly, a quick win was to let you call “modifier:” in the same way as you’d call “trigger:”. Basically, if a pop had +20% citizen happiness modifiers applying to it, and you used “modifier: pop_citizen_happiness (without the space - :p is an emoji...)”, you’d get 0.2. The other thing we added was script values.

The idea for these came from newer PDS games, the Content Designers of which would taunt us with their games’ superior script maths capabilities. Basically, the gist of what made them powerful was being able to substitute a value for a key which would run a series of calculations on demand. So “my_script_value” could be 57 + ( 24 * num_pops ) / num_colonies, or something like that. With the already-mentioned changes, we were almost there, so we added a new thing (named after script_values and capable of many of the things they are capable of in our newer games, but actually sharing very little code, so the exact workings probably vary a bit).

These “script values” would basically be a weight field like that mentioned at the start of this section, which would be defined by key in a script_values directory, e.g.

leader_cost = {
base = 2
modifier = {
subtract = 6
num_owned_leaders > 5
}
modifier = {
add = trigger:num_owned_leaders
num_owned_leaders > 5
}
mult = 50
}


Then we could refer to it anywhere in the game via “value:leader_cost”, and it would calculate the value on demand. We are already finding this very useful in improving the game’s scripts - not only is it easier to get correct values with this, but we can also radically cut down on copy-pasted scripts in weight fields (job weights, I’m coming for you!). Conveniently, since script values are read in a similar way to scripted values and triggers, we can feed in parameters, e.g. value:my_value|PARAMETER|50| would have the game use the script value my_value where any instance of "$PARAMETER$" would be substituted with 50.

Even with all these changes, there were still a couple more we could make to the scripting language. The first was adding complex_trigger_modifiers to script_values and weight fields. Basically, these allow you to use the value of triggers too complicated to use with “trigger:”. An example would be this:

        complex_trigger_modifier = {            #fewer worlds => more menace from destroying one
trigger = check_galaxy_setup_value
parameters = { setting = habitable_worlds_scale }
mode = divide
}


This works with the same triggers that work with export_trigger_value_to_variable. We also added a few triggers to these: notably, all count_x script list triggers (e.g. count_owned_planet), and the “distance” trigger.

A comprehensive guide on all you can do with script values is attached to this post (and in common/script_values). To be honest, it’s hard to overstate the amount of things this new system system enables us to potentially do. For instance, in the example above, we scaled leader costs based on how many leaders you own. We also scaled Unity boosts with the Autochthon Monument based on how many ascension perks you have unlocked with this method. The list goes on and will continue to grow with each update we release.

[h3]Mod Overwriting[/h3]

Script values isn’t the only thing I can talk about today. Modders have long been a bit bemused by the different ways elements of the game handle overwriting. Specifically, by the way it varies. Unfortunately, they will probably continue doing so for a while yet, but since a bit of progress was made here, I felt it would be interesting to people to know why this sort of issue occurs.

Basically, when modders overwrite the vanilla files, they can either overwrite the entire file (which always works), or they can overwrite individual entries within the file, for example the “miner” job. When the game encounters a second entry that matches the key of an existing one, various things can happen:
  • It replaces the existing one perfectly (last read is used)
  • It replaces the existing one, but imperfectly, e.g. if you individually overwrite jobs, you can no longer refer to them in modifiers (not ideal)
  • The second entry is ignored (first read is used)
  • Both the first and the second entries are kept (duplication - not ideal)
  • It appends the information inside to the existing entry (special case for on_actions)


So, why are there these various behaviours? Basically, it is largely a matter of how the database is read in the C++ code.

When the game encounters script files, as a rule, it will read the object (e.g. miner = { }) and store that in a matching database (e.g. the job type database), which the game will use in various ways when it needs to do stuff with that matching object type. In the case of many of the oldest objects in the game (stuff that has existed largely in its current form since before release, e.g. technologies and ethics), they would be coded in as an object in a custom-made database. Since the code for reading this database would be written afresh (or copied) each time a new object was defined, both the order in which it would read files (A to Z or Z to A) and the way it would treat duplicates could vary, which is not ideal. In some cases, this made sense: for example, in on_actions, there is a legitimate cause for special handling - basically, the intention there is that modders can use on_actions without having to worry about Vanilla contents. This is also the case for heavily code-dependent databases, such as diplomatic actions, where one cannot simply add an entry and expect the code to know what to do with it.

But for most cases, this is simply a matter of tech debt: nowadays, we have better ways of coding in databases. When we add a new object, we now (since a couple of years) add it as a TGameDatabaseObject in a TSingleObjectGameDatabase. The standard code for the TSingleObjectGameDatabase handles the reading of objects and need not be copy-pasted, and most importantly for modders, it handles overwriting by deleting the existing object and replacing it with the new one. This usually works well for modders, but there were some high-profile cases where it didn’t: in the cases of jobs, districts, planet classes and a few others, modifiers would be broken, i.e. a modifier adding miner jobs to a planet would end up doing nothing. Basically, what would happen is, the job would create modifiers, which would be a) added to the modifier database and b) stored in the game’s job definition (not the script file, but rather what the program gets from reading the script file) - which allows the game to attach an effect to that modifier (i.e. grant x number of this job). Then the job would be deleted and a new one would be made. It too would create modifiers in the same way. But now the modifier list would have two entries with the same key. Then, when the game encounters such a modifier when it is used in a script file, it will look through the list, find the first one which matches, and assume that was the one intended. Unfortunately, the job itself thinks that the second modifier applies to it. As a result, the modifier - for the intents and purposes of a modder - becomes unusable.

I can report good news on this front, though - we fixed that issue. These objects can now be overwritten safely, or at least, this particular cause is not a reason for their overwriting to break - the modifiers will now function properly. (Why the caution? Well, basically, if adding an entry to one database alters another database, then overwriting it can cause issues unless carefully handled; luckily, this is fairly rare aside from the example of modifiers). This will hopefully be quite useful to modders, since jobs and districts are some of the objects that the are probably most likely to want to alter.

As a final note on TGameDatabaseObjects, since the way they are all read uses the same lines of code, we added a small gift for modders: the error log message warning about overwrites will now specify exactly which one is used, removing some of the ambiguity in overwriting. So if you see this error message, you can be fairly confident of how the game is behaving:

[14:03:02][game_singleobjectdatabase.h:147]: Object with key: miner already exists, using the one at  file: common/pop_jobs/03_worker_jobs.txt line: 319


As a side note, we've extended the 3.3 Unity Open Beta feedback period until Monday, February 7th. We will be leaving the Open Beta branch available until 3.3 releases so those of you who are currently playing on the open beta can continue your games until 3.3 releases. And if you haven't yet, please leave your feedback on the 3.3 Unity Open Beta here!

Don't miss the next episode of Dev Clash 2022 on Monday, February 7th, starting at 1500 CET on http://twitch.tv/paradoxinteractive!

That’s all for this week! Eladrin will be back next week to share his thoughts on the open beta and, of course, the dev clash!

If you still don't own Stellaris it's currently free with Amazon Prime Gaming

Quick tip - GOG and Amazon Prime Gaming have teamed up to give subscribers an offer they can't refuse - another free game! Get a copy of Stellaris from Paradox Interactive / Paradox Development Studios.

Read the full article here: https://www.gamingonlinux.com/2022/02/if-you-still-dont-own-stellaris-its-currently-free-with-amazon-prime-gaming

Steam Lunar New Year Sale

The Steam Lunar Sale is here!

From now until February 3rd, get 75% off Stellaris, and 50% off selected DLCs. Additionally, get 33% off the Necroids Species Pack, and 20% off Nemesis!

Or complete your Stellaris collection with the Stellaris: Starter Pack or Stellaris: Ultimate Bundles, get an extra 10% off the sale price, and you don't pay for what you already own.

A galaxy full of wonders is only a click away!

[previewyoutube][/previewyoutube]