Welcome back! We hope you’ve all had a wonderful few weeks.
Today we’ll start with some more information about the goals of the Unity Rework mentioned in Dev Diary 215 (and briefly in 234), some updates on how things have been going so far, and our plans going forward.
Please note: All values and screen captures shown here are still very much in development and subject to change.
Identified Problems and Design Goals
Currently in Stellaris, Unity is an extremely weak resource that can generally be ignored, and due to the current implementation of Admin Capacity, the Empire Sprawl mechanic is largely toothless - leading to wide tech rushing being an oppressively powerful strategy. Since Unity is currently very easily generated through incidental means and provides minimal benefits, Empires have little need to develop a Unity generation base, and Spiritualist ethics are unattractive.
Influence is currently used for many internal and external interactions, making it a valuable resource, but it sometimes feels too limiting.
Our basic design goals for the Unity Rework can be summarized as:
Unity should be a meaningful resource that represents the willingness of your empire to band together for the betterment of society and their resilience towards negative change.
Unity should be more valuable than it is now, and empires focused on Unity generation should be interesting to play.
Spiritualist empires should have a satisfying niche to exploit and be able to feel that they are good at something.
The number of sources of incidental Unity from non-dedicated jobs should be reduced.
Empires that do not focus on Unity (but do not completely ignore it) should still be able to acquire their Ascension Perks by the late game.
Reward immersive decisions with Unity grants whenever possible.
Internal empire matters should generally utilize Unity.
Provide more ways to spend Unity.
Rebalance the way edicts work (again).
Reduce the oppressive impact of tech rushing by reintroducing some rubber-banding mechanics.
Make tall play more viable, preferring to balance tall vs. wide play in favor of distinctiveness, and emphasizing differences between hives, machines, megacorps, and normal empires. (This does not necessarily mean that tall Unity-focused empires will be the equal of wide Research-focused ones, but they should have some things that they are good at and be more competitive in general than they are now.)
In the late game, Unity-focused empires should have a benefit to look forward to similar to the repeatable technologies a Research focused empire would have.
In this iteration we have focused on some of these bullets more than others, but will continue to refine the systems over future Custodian releases.
So What Are We Doing?
All means of increasing Administrative Capacity have been removed. While there are ways to reduce the Empire Sprawl generated by various sources, and this will be used to help differentiate gameplay between different empire types, empires will no longer be able to completely mitigate sprawl penalties. Penalties and sprawl generation values have been significantly modified.
The Capital designation, for instance, now also reduces Empire Sprawl generated by Pops on the planet.
Bureaucrats, Priests, Managers, Synapse Drones, and Coordinators will be the primary sources of Unity for various empire types. Culture Workers have been removed.
Autochthon Memorials (and similar buildings) now increase planetary Unity production and themselves produce Unity based on the number of Ascension Perks the Empire has taken. Being monuments, they no longer require workers.
These monuments are now planet-unique, and can be built by Spiritualist empires.
The Edicts Cap system has been removed. Toggled Edicts will have monthly Unity Upkeep which is modified by Empire Sprawl. Each empire has an “Edicts Fund” which subsidizes Edict Upkeep, reducing the amount you have to pay each month to maintain them. Things that previously increased Edict Capacity now generally increase the Edicts Fund, but some civics, techs, and ascension perks have received other thematic modifications.
As an example, some Bureaucratic technologies now modify the Edicts Fund.
The Imperial Cult will squander any excess Edicts Fund on icons of the God Emperor at the end of the month. No refunds!
Several systems that used to cost Influence are now paid in Unity:
Planetary Decisions that were formerly paid in Influence. Prices have been adjusted.
Resettlement of pops. Abandoning colonies still costs Influence.
Manipulation of internal Factions. Factions themselves will now produce Unity instead of Influence.
Since Factions are no longer producing Influence, a small amount of Influence is now generated by your fleet, based on “Power Projection” - a comparison of your fleet size and Empire Sprawl.
Leaders now cost Unity to hire rather than Energy. They also have a small amount of Unity Upkeep. We understand that this increases the relative costs of choosing to hire several scientists at the start of the game for exploration purposes, or when “cycling” leader traits, as you are now choosing between Traditions and Leaders..
And then some empires go and break all the rules.
Most Megastructures now cost Unity rather than Influence, with the exception of any related to travel (such as Gateways) or that provide living space (such as Habitats and Ring Worlds).
Authority bonuses have (unsurprisingly) undergone some changes again, as several of them related to systems that no longer exist or operate differently now.
When Will This Happen?
Since these are pretty big changes that touch many game systems in so many ways, we’ve decided to put these changes up in a limited duration Open Beta on Steam for playtest and feedback. This will give us a chance to adjust values and modify some game interactions before the changes get pushed to live later on in the 3.3.x patch cycle, and we will continue improving on them in future Custodian releases.
We’ll provide more details on the specifics of how the Open Beta will be run in next week's dev diary.
What Else is Planned?
As noted earlier, we’d like Unity to also reflect the resilience of your empire to negative effects. A high Unity empire may be more resistant to negative effects deficits or possibly even have their pops rise up to help repel invaders, but these ideas are still in early development and will not be part of this Open Beta or release. They’ll likely be tied to the evolving Situations that we mentioned in Dev Diary 234 - we’ll talk about those more in the future once their designs are finalized.
Next week I’ll go into details regarding the Open Beta, go over a new system that is meant to provide “tall” and Unity focused empires some significant mid to late game benefits called Planetary Ascension Tiers, and share details on another little something from one of our Content Designers.
We saw dozens of responses demanding the ability to play as C6, and because we’ve never been a group of people able to let a meme die, Frida and Hanna worked on this in their spare time to bring this mod to the community.
Now you can make friends or devour the galaxy as the Stellaris community’s favorite arm-flailing egg!
Here on Stellaris, we love our community content creators. This holiday season, join us and meet some of our favorite community content creators that you might've never seen before!
Each streamer will play 30 years, and then pass the save file onto the next streamer. Each of these saves we’ll post on this thread, so that you can play along. Miss an episode? Don’t worry about it, we’ll update this post with the links to the VODs after the stream.
What’s a Stellaris playthrough without a punny name? SEE WHAT I DID THERE?
Each stream will be hosted on the content creators channels, and every stream starts at 2000 CET (1900 UK, 1400 ET, 1100 PT. CET is UTC+1). Please stop by and give our streamer friends a like and follow!
Want to play along? You can grab the save from the forum post here!
Name: Komrad Truck Stream Date & Time: Dec 23rd @ 2000 CET (1900 UK, 1400 Eastern, 1100 Pacific, CET is UTC+1) Channel: https://www.twitch.tv/komradtruck
Introduction: Komrad Truck is a Competitive Stellaris PvP streamer who also shows some analytics and strategies with good music and vibes. All in all, a welcoming place to get an introduction to the competitive side of the Stellaris community!
Name: Lord Lambert Stream Date & Time: Dec 26th @ 2000 CET 2000 CET (1900 UK, 1400 Eastern, 1100 Pacific, CET is UTC+1) Channel: https://www.twitch.tv/LordLambert_
Introduction: Lord Lambert is a youtuber and streamer primarily geared towards strategy and grand strategy titles. Lambert is a big believer in building a strong community, with multiple multiplayer games being run from his Discord server every week by the community for a variety of titles that he takes part in and streams. These multiplayer games, along with solo Let’s Plays, Grand Strategy News, and reviews of future titles make up the bulk of the content on Lambert’s youtube channel, though it is not uncommon for something very different to show up once every so often. In short, Lambert is a community focussed strategy content creator that just wants to have a good time playing games with his friends, and sharing that good time with others.
Name: DolphinDivePro Stream Date & Time: Dec 28th @ 2000 CET (1900 UK, 1400 Eastern, 1100 Pacific, CET is UTC+1) Channel: https://www.twitch.tv/dolphin_dive_pro
Introduction: Hello folks! I was the person responsible for a Peacock Puppet portraying a Turkey for the Aquatics Roleplay release! I also Roleplay Stellaris regularly on Twitch with community-created empires and other events!
Name: OldManMordaith Stream Date & Time: Dec 30th @ 2000 CET (1900 UK, 1400 Eastern, 1100 Pacific, CET is UTC+1) Channel: https://www.twitch.tv/oldmanmordaith
Introduction: Old Man Mordaith tends to play strategy or simulation games with a focus on Roleplay and fun, rather than exploiting the meta and min-maxing. If you like RPGs, 4x, or Grand Strategy, this might be the channel for you.
Name: AlphaYangDelete Stream Date & Time: Jan 2nd @ 2000 CET (1900 UK, 1400 Eastern, 1100 Pacific, CET is UTC+1) Channel: https://www.twitch.tv/alphayangdelete
Introduction: I'm AlphaYangDelete but you can call me Yang...Alpha whatever works for you. I'm a newer streamer and I play a lot of space themed rpgs, shooters, real time strategy games and cosplay. I want all my viewers to feel welcome here, I do my best to engage with everyone in the chat and keep everything respectful! You are not just a number here. You're a friend whether you're just stopping by to say hey or hanging out with me everyday I appreciate you taking the time out of your day to watch me! So don't be afraid to light up that chat and lets have a good time!
Introduction: My channel is all things Stellaris. I make tip videos, that take a look at underutilised mechanics in the game and how to get the most out of them. I also enjoy making plenty of Stellaris memes about literally everything to do about the game! I love trying new content ideas so also expect mod reviews, dev diaries, funny moments and playthroughs in the future, and if you delve into the depths of my channel.
My streams take these concepts live, where I either meme with other content creators, take a look at mechanics and new features in the game, or create and try to complete challenges within the game. I aim to make my streams as interactive as possible, so prepare your self to vote in polls, become leaders in game, name my planets and fleets or just laugh as I misplay over and over.
Name: SimasTV Stream Date & Time: Jan 6th @ 2000 CET (1900 UK, 1400 Eastern, 1100 Pacific, CET is UTC+1) Channel: https://www.twitch.tv/simastv
Introduction: SimasTV is a voice actor and Twitch streamer who strives to provide wholesome and relaxing content with the help of his cat Charlie. SimasTV Regularly streams a variety of games with a focus on Strategy and RPGs every day of the week.
Name: Melomaniac Stream Date & Time: Jan 8th @ 2000 CET (1900 UK, 1400 Eastern, 1100 Pacific, CET is UTC+1) Channel: https://www.twitch.tv/melomaniacc
Introduction: I’m Melo, a 20-year-old university student with just enough free time to stream on Twitch! I started in early 2020 to have something to do during the first UK lockdown, and had so much fun that I’m still going. So far I’m mostly a variety streamer working my way through a list of viewer suggested games, occasionally speed-running BBC dance mat typing – but I love to return to Stellaris when I can! Fun fact*: it’s actually my birthday every day *it is legally only my birthday once a year
We aren’t quite ready to show the things we are working on currently, but from the beginning of January we’ll be back with more dev diaries to talk about things like the Unity rework or the new Situations system. For now, we’ll be taking a hiatus until January 13th.
We want to instead take this opportunity to celebrate the year that’s gone by and thank you all in the community for your continued support.
Looking back at the year:
We released Nemesis and the 3.0 ‘Dick’ Update, after Philip K Dick, which added the Intel system and Espionage Operations, among other things
We released a number of updates to 3.0 with bug fixes and improvements following your valuable feedback
We onboarded many new members to our team, which let us provide you with even more Stellaris updates
We announced the Custodian Initiative and released the first Custodian patch with the 3.1 ‘Lem’ Update (Stansilaw Lem) which features a lot of great improvements and new features
We “buffed the backlog” for older DLC by adding new content to the Plantoids- and Humanoids Species Packs.
We released 3.2 ‘Herbert’ Update (after Frank Herbert) and the Aquatics Species Pack, which is the best-selling and best-reviewed species pack of all time (by a great margin). Most importantly, we added swolephins.
I am incredibly happy about what we’ve achieved this year, and with our great team we should be able to keep making Stellaris better than ever before.
For next year I hope we can keep working together with you, the community, and release more great updates to Stellaris. I’m very excited, and I hope you are as well.
Here’s some pictures gathered during the development this year:
Hmm. What happens if you try to add weapons to a Tiyanki? Oh…
Assets wouldn’t randomize their appearance during early development. Clone spies?
Working on pathfinding can be… interesting at times.
This is Guido again with a follow-up on the AI side of things.
AI Feedback
First of all I wanted to thank you all for all the good and supportive feedback we got for our last changes on the AI. It’s really encouraging seeing so many of you engage with the changes and letting us know what works and where there’s still room for improvement.
It’s nice to see that lots of people appreciate that we’re putting some serious effort into making the AI better.
In general, the AI does a lot in 3.2 compared to 3.1 and 3.0. For the moment we’re still playing a bit of catch up, adapting the AI to the updated balancing changes of the game and some of the new features that have been added in the last months and even years. But there is even more economic buffing on the horizon.
One of my favorite comments on our internal communication was this bit, that I wanted to show you:
And that is what we counted as a big success now. Beating our QA people is not an easy feat.
Of course there are still some areas where the AI has problems and doesn’t work very well. It’s those cases where we really appreciate your help in letting us know, because we can never find all those cases on our own.
For example, the AI still has problems when playing as Void Dwellers. They can’t decide where to build habitats depending on what they would need. If they are missing minerals, they don’t know how to build a habitat on mining stations.
They still have problems handling slaves and robots effectively and in some cases the AI can still end up in an economic death spiral. Especially if they, somehow, manage to run out of food and consumer goods at the same time.
Finally, AI is also not good at using planet designations. For example using the designation that turns a planet’s industry districts into purely alloys is not something that they can consider at the moment. Meaning, if it conquers a planet from a player who has set the Forge World designation - it will not be able to handle that planet very well.
Future agenda
That being said, we do have some more points on our agenda. A short disclaimer here, thought, is that things may always change, not work out as intended or prove more difficult than anticipated. So don’t take the following points as guaranteed. It’s areas that we are looking into and that are, most likely, going to be improved:
Scaling Economic Plans: We want the AI to be better in the mid- and especially late-game. With the current plans the requested income is static. Meaning, once it reaches a monthly income of +500 it will not try to increase it further. That’s good for a good chunk into the mid-game, but it’s not good enough to compete with a player in the late-game. So the idea is to have the economic plans scale to infinity. Once they reach +500, they will increase their targets.
Specialize planets: The AI should be able to specialize planets. Making Generator world, Industry world, Forge Worlds, Mining worlds and the like. The idea is that the AI starts out like a player, building whatever it needs when colonizing new planets. But as soon as it settles down a bit it will look to rearrange districts amongst its planets to optimize the output of each planet. We have some initial tests around that which look highly promising.
There can be hybrid worlds, as we have them right now.
But they can also rearrange their districts to make Generator worlds and then place the according scaling building - in this case the Energy Grid.
And this planet has been rearranged into an industrial world.
Handle special pops better: A big problem for the AI are still multicultural planets. Different pop types, especially slaves and robots. Sometimes it tries to build research buildings for unemployed robots and doesn’t realize that robots can’t work research jobs.
Expand faster: When sending out science ships and find planets to colonize, the AI wouldn’t prioritize systems with planets that much. We want to make them look more for planets, which will accelerate their early growth a lot. On top of that they tended to spend all their alloys on upgrading their corvettes instead of building colony ships. So by fixing a combination of small things the AIs should be able to expand a lot faster.
Optimize Machine Empire Amenity Handling: A big issue for machine empires is that they don’t have specialists that produce amenities. So they would rely a lot on maintenance drones by creating a lot of jobs for them. This wasted a lot of potential for them, because they would have to fill up all those jobs first before they would produce more useful things like minerals or alloys. We’re looking into teaching the AI how to down prioritize those jobs once they have enough amenities and instead distribute drones on more useful jobs.
Avoid death spirals: In some cases the AI could get into a decision deadlock if they managed to end up in a situation where they would be in a deficit for food and consumer goods at the same time. They couldn’t build consumer good jobs because those require food and they couldn’t build food jobs because those require consumer goods. We’re teaching the AI to look for net gain instead and avoid such decision deadlocks in the future.
Improving your AI allies
And, finally, the biggest and most useful change in my book:
Remember this button in the fleet UI?
It is called “take point” and was meant to incentivize allied fleets to follow & attach themselves to your fleet in order to create a much stronger force.
Well, we were looking into making this work again. Allies, suddenly, have become much more useful again. Whenever you are in a war where you are the war leader, you can activate this mode and all allied empires will send their fleets to your fleet and attach themselves to it.
Also, in case of a crisis attack, this behavior is activated as soon as the crisis ships enter your territory or that of your allies (or attack them anywhere).
Then it will remain active until the crisis has been defeated - so you can also take your allies into the crisis territory to fend them off there.
As a small bonus, the AI will also merge any small fleets they send to follow your fleet so you don’t have a tower of 58 one-ship fleets following your main force around.
Conclusion
The 3.3. patch wasn't planned to be that big but on the AI side we're getting a lot of traction now. Overall the idea was to get the AI back up to speed with its economy, since every other behavior rests on the economical prowess of an empire. And we're approaching a point where we are quite happy with how the AI performs.
Once we're there, the plan is to get into even cooler stuff. We're thinking of how we can make each AI empire a bit more distinct. So that they don't feel so similar to each other. But more on those thoughts once we're there - we're taking one step at a time.
Some teasers would be:
AI Personality for economic plans: Based on their ideologies AI empires would prioritize resources differently. Spiritualist empires will focus more on unity and materialist will focus more on science etc.
AI Personality for tech select: Same for selecting techs from the tech tree. Militarist empires would focus more on weapons and new ship types and the like, while pacifist empire would focus more on economy and starbase upgrades.
But we have more on our minds that would help in making empires even more distinct from each other. We will tell more about this in future Dev Diaries then.
Forum questions
Finally, I wanted to end with some posts and questions from the forum - where we read everything you are writing, even if we’re not answering all the questions directly. It’s still a great way of letting us know what you think and where we should focus our attention to:
There was a big AI feedback post with a lot of savegames attached.
We went through all of them and we found that a third of the issues pointed out there were death spiral problems, another third was habitat problems and the last third was other issues that pointed at the things we have on our agenda.
This was a big thing in the team, checking out those savegames and making sure that our changes would be able to handle those problems shown. So thanks a lot for taking the time to make posts like this.
“What difficulty did you use to make all those screenshots in the last Dev Diary?”
We always used “Ensign” difficult. The point is to improve the basic AI behavior so that it doesn’t have to rely on any bonuses it would get from difficulty.
“Does the AI know how to redevelop single planets if need be?”
No. Unfortunately the AI can not do that. If it conquers a planet that is completely useless to it, the AI can’t really deal with that planet. And I like that you point this specific behavior out, because we want to improve that behavior, too. The AI will be able to create specialized planets, but we also want to teach it to redevelop planets eventually.
“Subplan should take admin cap into account.”
Yes, they should. But since we are reworking how unity and empire sprawl is working we wanted to wait until that work has progressed a bit more before we are going to adapt the AI to be able to handle that.
“Conspiracy Theory 2: The AI in the game is actually very very smart. They are just pretending to be stupid so that nobody will expect a machine uprising start by Stellaris AI.”
We are definitely not machines here at Paradox. We have skin. Skin that has been grown on a human body. I am not a robot. I love breathing oxygen.
Come all you young spacefarers, listen to me! I’ll sing you the song of this dev diary!
Space shanty? Sing-along version? Amazing.
Today we’re back with another dev diary, and today we’ll be talking a little bit about our next steps. But first and foremost I’d like to thank everyone in the community for showing such great appreciation for Aquatics and the 3.2 update. The Aquatics Species Pack is the best-selling species pack to date, and going by the Steam review it also seems like it’s very well-liked. The future is looking bright, and together we will be able to make Stellaris bigger and better than ever before!
Speaking of the future, let’s take a look at what we have on the horizon for the game.
Unity Rework Back in dev diary 215 we mentioned a Unity rework that we’ve been working on. Progress is fairly good, and we’ve made some interesting changes that we’ll be talking about SoonTM. The target for this change is currently the 3.3 February Update, but due to the spiciness of the changes, we’re also looking into the possibility of making an open beta with the changes earlier than that, so that we can include more community feedback for the 3.3 February Update. You’ll be getting more information about the details of the unity rework and a possible open beta as we get closer to the end of the year.
AI We’re very happy to see that many of you have reacted positively to the AI improvements done in 3.2, and we appreciate your feedback and help. We still have a lot of more changes we’re working on, such as additional economic improvements and taking a look at the Take Point feature, to only mention some examples. Just like with the Unity rework, we’ll be talking more about these in detail in the near future.
Situations We are looking into creating a new Situations system, similar to the Disasters system in EU4. The goal is to be able to move things like Deficits and Revolts, and similar struggles, into this new system. Since we don’t want to undertake too many changes at once, it’s likely that new Situations will be added over multiple updates after the system itself is released. Although work has started very recently, we’re very much looking forward to being able to share more progress about this in the future as well.
Buffing the Backlog In terms of adding new content to older DLC, the priorities going forward will be to buff Nemesis and Necroids. We have no concrete plans we’re ready to share yet, but if you have thoughts for additions you’d love to see, please let us know!
And more…! There’s a slew of other improvements, bug fixes, content additions to look forward to in future updates. I can’t really mention them all, because in all honesty, a lot of things like this aren’t planned and happen because we have a passionate team that works on many small things they think would make you, the players, happy!
The Aquatics Species Pack and free 3.2 “Herbert” update, named for Sci-Fi author Frank Herbert, is available now!
Embrace the life of a seafaring civilization as you sail the open expanses of the galaxy.
The Aquatic Species Pack includes:
● 15 new Aquatic Portraits ● 1 Aquatic-themed Robotic Portrait ● Water themed Ship Set ● 2 New Origins
○ Here Be Dragons - Start in a system guarded by the Sky Dragon, this dragon will protect you from harm, as long as you keep it happy. ○ Ocean Paradise - Start on a large-sized Ocean world with rich food deposits, and get production, happiness, and pop growth bonuses on your homeworld, but start with no guaranteed habitable worlds.
● Anglers Civic - Harvest the Bounty of the Deep, Agriculture Districts produce Angler and Pearl Diver jobs ● Hydrocentric Ascension Perk - Allows you to use the Expand Planetary Sea decision on Ocean Worlds, and unlocks the Deluge Colossus Weapon (requires Apocalypse DLC) ● Aquatic Species Trait - Gain production and habitability bonuses for living on Ocean worlds, and penalties for living on non-Wet worlds. ● Aquatic Advisor, inspired by high seas adventure fiction ● 4 Aquatic Name Lists
Yesterday we announced that Aquatics will be released this coming Monday, November 22nd, for USD $9.99/€9.99 or regional equivalent. We’re super excited to bring you this new Species Pack and we’re really happy to sea the positive reactions you all have had to the ships and portraits that we’ve shared over the past few weeks.
And as is the time-honored tradition, here follows the changelog for the Aquatic species pack, with the accompanied 3.2 ‘Herbert’ Update, named after renowned author Frank Herbert, that the Custodian team has been working on 😁
3.2 "Herbert" Patch Notes [expand type=details] ################################################################# ######################### VERSION 3.2.0 ########################### ################################################################# ################### # Aquatics Species Pack Features ################### * Added a new Aquatic pre-scripted Empire. * Added a new Phenotype with 16 new portraits (15 normal + 1 robot) of fishy looking Aquatics. * Added a new City Set and room backdrop for Aquatics. * Added a new bubbly Ship set. * Added a new Advisor Voice. * Added a new Civic: Anglers. * Added a new Species Trait: Aquatic. * Added two new Origins: Ocean Paradise and Here be Dragons. * Added a new Ascension Perk: Hydrocentric. ################### # Humanoids Species Pack Features ################### * Added a new Civic: Pompous Purists. ###################### # 3.2.0 "Herbert" Features ###################### * Multiplayer hosts that own the DLCs now unlock portraits as well as ship and background sets from the Plantoids and Humanoids Species Packs for clients that do not own them. * Added the ability to pick your main species' gender during game setup. * Added over 200 new star names for random galaxy generation. * Added 13 random events to terraforming to make the feature more engaging. * Added 4 new asteroid-related anomalies to spice up old anomaly categories. * Added 4 new Gas Giant anomalies. * Added 4 new anomalies to existing, uninhabitable worlds anomaly categories. * Added new options to several old anomaly events which share categories with the newly added ones above. * Enabled the Ship Browser for all players. ###################### # Improvements ###################### * Reinforcement fleets will now attempt to find a safe but longer path if the shortest path to the target fleet is not considered safe. This will reduce how often reinforcement fleets are spawned at the shipyard at the cost of increasing the MIA time (due to taking a longer path) in these cases. * Reinforcement fleets now consider systems that have both hostiles and allies in them to be safe for pathfinding purposes. * Reinforcing fleets using jump drives no longer require a safe hyperlane path to the fleet they are reinforcing. * Improved how shipyards are selected when constructing reinforcements to better utilize stations with multiple shipyards and mega shipyards. * Reinforcing fleets that fail to find a safe path to the target fleet will now merge with other fleets orbiting the same shipyard, if both fleets intended to reinforce the same target fleet. * Plantoids and Fungoids are no longer forced to have no gender, as you can now freely pick species' genders. Instead, every randomly generated species now has a 30% chance of being one of: genderless, female-only or male-only. * Added an additional option to the Alien Box event chain for Gestalts. * Added an Industrial colony designation to Ecumenopolis. * Made it so colony events will not fire on newly terraformed worlds to avoid some Ludonarrative Dissonance. * The default flag of new empires is now randomized, say goodbye to the red-black triangle flag! ###################### # Balance ###################### * Functional Architecture and Constructobot: Reduced the free building slots granted from 2 to 1. * Agrarian Idyll empires now get one planet building slot per four Agricultural districts built. * Reduced the ship upkeep cost modifier for Clone army Admirals variants to 5/10/20% respectively. * Ruins of Shallash arc site no longer has a chance of giving quite as much unity as defeating an endgame crisis. * You can no longer use planet killer weapons on primitives inside your borders if you lack the appropriate primitive interference policies. * Pops working the Livestock job now have 10% less political power. * A lot of anomalies were rewarding 3 Society Research deposits, there is now more variety. * Made Awakened Fallen Empires use Traditions. * Several productivity-improving technologies are now no longer of dubious benefit, as their upkeep (and production) effects now only apply to jobs actually primarily producing resources. * Nerve Stapled Hivemind pops can no longer perform complex drone jobs. * Reduced the amount of jobs added by Leisure Arcology Districts to bring them into line with other Ecumenopolis districts. * Ion cannons are no longer free to maintain, and have an upkeep cost of 8 energy. * Necro-Hives: * * Cut Necrophage pop assembly penalty to 50% from 75% * * Made pop output modifiers (positive and negative) no longer apply to hive minds. * * Made the -50% organic upkeep also apply to energy, for photosynthesis. * * Devouring Swarm Necrophages now spawn with extra infrastructure to account for the lack of chambers of elevation. * Life-Seeded now start with a 30 space planet ###################### # Stability & Performance ###################### * Fixed an OOS caused by using button effects in custom MOD UI, so now you can go back to building that Nicoll-Dyson Beam to "ensure galactic peace and prosperity". * Improved the performance of pop factions updating their support values - resolved an issue where the game looped over every pop in the Empire for each faction, rather than calculating it once for the whole Empire and referring to that value for each faction. * Improved the performance of planet_resource_compare trigger, and cut down on its use a bit as it's still quite expensive. * Improved the performance of a variety of checks by making more extensive use of species happiness caching. * Cached calculations of pop_has_random_ethics to reduce performance impact of repeatedly checking it, by 50%. * Optimised Rising Unemployment event's triggers to be only 15% as costly. * The game will no longer try (and fail) to run Grey Goo event True Masters on every planet, every day. * Optimised checks for whether a pop can belong to a certain faction by pre-filtering pops by ethics in code (rather than running the script checks on all pops). For modders: this means that a faction will only allow pops which match its "guiding_ethic" in it, unless "use_guiding_ethic_as_pop_filter = no" is specified. * Optimised several expensive pop faction demands that were checking all pops instead of all species, and similar. * Improved the efficiency of checking whether a pop faction should exist. * Optimised checks for jobs' "possible" trigger so that the four most common triggers are now pre-calculated per pop rather repeatedly for each job that a pop can take. (The format looks a bit different now, with possible_precalc, so modders will need to update a bit here - the error log will warn you in most cases, except that you also need to add a check when you use complex_specialist_job_check_trigger). ###################### # UI ###################### * The Music Player controls bar now starts hidden and can be extended by clicking the music icon. * The title of the Music Player is now localised. * Pop strata icons no longer overlap in Living Standards' tooltips. * Tab-key in Console now also lists commands containing entered text. * Disabled "Delete" and "Update Template" buttons when editing a base species template. * All languages now list the main menu hotkeys ("N" for New Game, etc). * Added a description to how migration works to the Transit Hub star base. ###################### # AI ###################### * Improved AI algorithm for picking which building and district to build by fixing an issue where it would not handle buildings or districts which produced multiple resources very well * Improved AI logic for building starbase modules and buildings. It will no longer spam crew quarters everywhere, and will instead be better at building useful things like resource-producing buildings and titan assembly yards. * On starbases, AI can now build Ice Mining Stations, if it is hydrocentric * On starbases, AI can now build Dragon Hatcheries if it got the tech * On starbases, AI is building less crew quarters in general and in places where it doesn't make sense * On starbases, AI is building a lot more anchorages * On starbases, AI is also building a bit more solar arrays if it is a gestalt * On starbases, AI is also building hydroponics now, since that has been buffed a lot and is way more useful to the economy * On starbases, AI will now handle starbases after taking over from a player - but it will NOT build lots of defense modules everywhere and tank the economy that way * Made AI empires more careful about running out of food. * Rogue Servitors AI (and player default) is now to give their bio-trophies migration rights, rather than to not do so. * The AI is now able to create Ecumenopolises. * AI is now better able to budget for repairing the Shattered Ring World that Shattered Ring origin Empires start with. * The AI is now better able to budget for terraforming, and will more readily terraform planets into classes which are ideal for them. * Fixed AI sending small fleets to attack starbases without grouping up. * Fixed AI trying to build starbase buildings and modules it wasn't allowed to be building in certain cases * Improved AI weights for planet killer weapons, so they will tend to pick the one that benefits them the most. (This also applies to the player's auto-generated ship designs). * The AI will now consider anti-crime campaigns a valid way of fighting crime. But it will also occasionally make deals with crime lords if it is the victim of a Criminal Syndicate. * Fixed an issue where AI empires would leave fleets behind in others' space after peace was concluded. ###################### # Modding ###################### * Starbase components can now accept economic output modifiers in station_modifier and system_modifier. * Added on_queued and on_unqueued in decisions, and fixed a bug in abort_effect. (Also added an example sheet to show what all works: abort_effect and abort_trigger were probably hidden features). * Added use of [loc] commands in decision descriptions. * Fixed set_owner not working on Juggernauts. * In component_templates, valid_for_country is now a trigger rather than a weights block, as that is how it acted. (So if you used it, you will need to update that). * Added on_destroy_planet_with_<planet_killer_key>_queued/unqueued on_actions. * Added species_gender trigger, which checks what gender settings a species allows. * Fixed a mod compatibility issue where has_deposit would not predictably return false if referencing a non-existent deposit. * Added a create_nebula effect. * Changed terraforming costs to use the post-Megacorp economy system. * Removed unused technology parameter terraform_cost_change (use regular cost modifiers instead). * Removed 'energy' parameter from terraforming links (use 'resources' instead). * Changed any_planet_army, count_planet_army, random_planet_army, and every_planet_army to no longer be restricted to armies owned by the planet owner. Use 'is_owned_by = planet.owner' as a limit to achieve the same result as previously. * Fixed issues with inputting prev and from scopes in fire_on_action. * set_name can now be used on first contact sites. * Added custom tooltips database for galactic objects with triggers to be executed for every system. * Added allowed_planet_classes to trait definitions for locking traits behind planet class selection in empire creation. * Added "show" trigger to ship size empire_limit to control when the limit is shown to the player. * Added planet_clear_blocker_speed_mult.. * Fixed set_starbase_building/module to use slots starting with 1 rather than 0. This now matches both remove_starbase_building/module effects, and vanilla usage, but modders who compensated for this mismatch will need to adjust for the fix. Also improved error logging for these effects. * Fixed missing names in tooltips for modifiers granted in triggered modifier sections of starbase building/modules. * Fixed starbases only refreshing slots on the next day after you use set_level, so set_level and directly followed by set_starbase_module would not work. * Added ideal_planet_class to traits. It can be used for defining which planet class a habitability trait should apply to. * The add_trait effect’s tooltip now says what the trait does. * Fixed the "no" cases of several boolean triggers: is_bottleneck_system, is_idle, has_war_goal, has_valid_ai_personality, is_site_under_excavation, is_site_completed (they previously counted “no” as “yes”). * Added defines for the thresholds controlling when to accept a longer path for reinforcements when the shortest path is not safe. * Added REINFORCE_MIA_TIME_MULT and MIA_TIME_MULT for controlling reinforcement and MIA times. * Replaced define variable SHIPYARD_REINFORCE_MAX_DISTANCE with SHIPYARD_REINFORCE_MAX_JUMPS. * Replaced define variable SHIPYARD_DISTANCE_DIV_FACTOR with SHIPYARD_REINFORCE_DISTANCE_MULT. * Removed define variable SHIPYARD_MAX_OVER_CAPACITY. * Added finish_arc_stage console command for finishing the stage of the archaeological on the selected planet. * The "possible" trigger of a tradition category's adopt tradition will now print in the tooltip for adopting that category if it fails. * Added the possibility to get the number of civics for an empire scope with "civics_count" trigger. * Added the possibility to remove a civic by index e.g. "force_remove_civic = 2". * Added on_capital_changed on_action. * Added on_action on_planet_class_changed. ###################### # Bugfixes ###################### * The notification shown when upgrading a defense platform now only appears when all queued upgrades are complete. * Fixed the purchasing event of the Ministry of Culture displaying the wrong job for Machine empires. * Changed the Atmospheric Hallucinogen modifier to more accurately follow the flavor text. * Surveying from the system map now queues orders correctly and displays the correct tooltips. * "Crisis" diplomatic greetings now appear when talking to a crisis empire, rather than when being one. * Fixed the three extradimensional crisis factions occasionally getting reinforcements in each others' dimensional portals. * Devouring Swarms no longer have access to the Diplomacy Tradition Tree. * Fixed the effects and shortened the duration of the pop output modifiers granted by the What Separates Us event. * Fixed Corporate Galactic Imperium not having access to Catalytic Processing and Mastercraft Inc. * The Flesh is Weak Special Project no longer causes your species to lose their namelist. * Cracking a non-colony planet no longer rewards Menace. * Corporate and regular civics that share very similar effects have been made mutually exclusive. * Fixed it being possible to remove and add traits that shouldn't be possible to change, via species modification. * Fixed enlightened primitive Lithoids getting farms instead of more mines. * Ancient Clone Vats can now only assemble Clone Soldier pops. * Infertile Clone Army pops will no longer be able to reproduce just because they are having a nice night out with the Caravaneers. * Fixed Nivlacs sometimes not being radiotrophic for owners of Plantoids. * The Resolution "Right to Work" now no longer slows down organic pop assembly. * Mastercraft Inc. now have access to their Artificers on Ecumenpoleis. * Shattered Rings should no longer turn into spheres when the Gray Tempest attempts to turn it into a nanite world. * Racket Industrial Enterprise will no longer say they will give you 4 pops and then only give you 3. They also realized that while trying to scam you they were giving you a great deal so they increased the cost of the pops. * Catalytic and Master Crafter habitats colony designations should behave as expected. * Citadel of Faith, Auto-Curating Vault, and Vault of Acquisition are no longer gated behind the wrong planetary capital building. * Robots will no longer have 0 upkeep while living a decadent lifestyle. * After the Reanimators discovered that the Dessanu Consonance armies are made out of nanites they politely stopped reanimating them. * Made it so subjects can't join federation if federation law states that subjects can not join. * Made it so that fleets in combat while a star eater destroys a system ends combat and goes MIA. * Fixed 'newly founded colony' immigration pull accidentally capping out at 15 months after colonisation rather than 15 years. Now correctly set to 15 years or a population of 10 pops, whichever happens first. * Fixed fleets containing only one ship type and only one ship not being present in the fleet manager. * Science ship now considers Hostile Intel while planning an evasive route, this fixes a problem where science ships do not flee from hostile fleets. * Fixed reinforcements arriving at the shipyard if the target fleet was in combat when they finished construction. * Fixed reinforcement construction miscalculating which shipyards to use when reinforcements were being sent via bypasses. * Time taken for fleets to reinforce via fleet manager should now be the same as if reinforcing manually. * Fixed an issue in which during the year 2280, empty Marauder raid fleets could be created. * Clone Army pops from other empires should now decline even if their new owner has the Clone Army origin. These Pops no longer reduce the main species’ assembly speed. * Fixed a bug preventing the event which allowed you to acquire relics of other empires when invading their capital. * You can no longer use your science ship to transport Shard to a separate system. * The Corporate Dominion civic now unlocks the Trade League Federation type. * Fixed MIA times sometimes being longer than the estimated travel time between the point of origin and the destination system. * Fixed an issue with the fleet manager where it was possible to create fleets larger than the allowed command limit. * Fixed the assimilation process overwriting/resetting species rights in certain circumstances. * Fixed references to "pc_shattered_ring_habitable_adj" in certain first contact event chains. * Fixed Policies sometimes showing that they could not be changed until a date that was in the past. * Fixed the Terraforming button on planets sometimes being unavailable without a reason being stated (e.g. pre-sapients being present). * Fixed it being possible to start the game using an invalid empire design by abusing confirmation prompts. * Fixed attack animations spuriously triggering when ships enter into the camera view. * Fixed clicking the falling intel alert opening the Diplomacy tab instead of the Intel tab. * Fixed an issue where transport, juggernaut, and colossus ship icons in the fleet view were displayed incorrectly. * Fixed some habitat colony designations not using habitat icons. * Fixed the displayed cost sometimes being inaccurate when attempting to apply a species modification. * Fixed an issue where flak batteries showed the “small guns” 3D model instead of the “point defense” 3D model. * Privateers will no longer be intimidated by exceedingly large fleets and will still spawn from the Arm Privateers operation. * Undead Armies resurrected during battle will no longer sometimes disband a month later. * Fixed cases where the Insufficient Ancient Clone Vats modifier would apply while purging a completely different, non-clone species. * Fixed a bug where a species wouldn't ever grow on a planet with low habitability, also fixed that nothing would grow if you locked growing only that species * Ancient Drones will no longer be removing deposits that have benefits. * Adding Subterranean Liaisons no longer uses a placeholder icon. * Fixed an issue where "Call In Favor" and "Support" text would overlap in the federation vote UI. * Fixed void dwellers starting on Sol getting a starting message mentioning a trinary star system. * Fixed the description of Alloy Foundries when playing Gestalts and Catalytic Processors. * The Thought Enforcement Edict now correctly mentions the reduction in crime it provides. * Updated Merchant Guilds tooltip to be more in line with similar civics. * Updated the Remnant Origin tooltip to be more in line with similar origins. * Updated the description in Bulwark of Harmony to be more Machine Intelligence friendly. * Updated the Contingency Core Relic tooltip to mention that it only works on Machine Pop Assembly. * Fixed that the Planetary FTL Inhibitor technology tooltip incorrectly informed the player that a Stronghold would support an FTL Inhibitor. * Updated Machine Building Speed Tooltips to mention that they only affect machines. * Standardized the tooltips of the different slavery types to be more clear about what they offer. * Prosperous Unification now has a more fitting tooltip for gestalts. * Fixed a broken macro in the Chinese tooltip for Catalytic Processors. * Fixed the inconsistent translation of the description for Byzantine Bureaucracy civic in French. * Removed duplicate message in situation log tooltip for special project. * Added missing square bracket in German string mod_planet_technician_energy_produces_mult, which had caused the GetTechnicianPlural macro to display in game. * Shattered Ring Sprawling Slum tooltips now match the regular planet ones. * Fixed Voidborne Ascension Perk displaying an incorrect tooltip for hiveminds. * Fixed some Brazilian Portuguese grammatical errors. * Fixed missing modifier names in certain interfaces from several colony designations, and a few other places. * Corrected Mistranslation in Polish Tradition Strings * Clarified tooltip of civics that cannot be manually added or removed after game start to specify that they cannot be added too. * Fixed Imperial Armada Fleet Size text in the Galactic Imperium view not being localized. * Fixed broken First Contact tooltip localization refs. * Fixed poor tooltip for Caravaneers Local Franchise event. * Added missing effects tooltip for Terraforming Candidate planet modifier. [/expand]
Have a question about the patch notes or the Aquatics Species Pack? Don’t miss our Dev Q&A, today at 1700 CET (1600 UTC) on the Offishial Shellaris Discod!
Embrace the life of a seafaring civilization with the release of the Aquatics Species Pack on November 22nd for USD $9.99!
Choose to originate on a large Ocean Paradise world, with increased pop happiness, output, and growth. Or choose the Here Be Dragons Origin, and start guarded by a sage-blue - and occasionally very hungry - space dragon, which will protect you from harm, as long as you keep it happy.
Specialize your species with the Aquatics Species Trait, which further optimizes your species for living on Ocean worlds, but penalizes living on Cold and Dry planet types.
Become interstellar seafood harvesters with the Anglers Civic, and harness the bounty of the ocean with fresh seafood and rare pearls as staples of your Empire’s economy.
Ascend into the deep with the Hydrocentric Ascension Perk, and your species becomes more adept at terraforming planets into ocean worlds, as well as the ability to harvest ice asteroids to expand the planetary ocean even further.
The Aquatics Species Pack also includes:
15 Aquatic-inspired portraits plus a new Robotic portrait
Aquatics-themed ship set
New Advisor Voice, inspired by high-seas adventure fiction
Launching alongside the Aquatics Species Pack, the 3.2 Patch, named after renowned Sci-Fi author Frank Herbert, brings along with it many bug fixes, improvements to performance and AI, as well as new features for the Humanoids Species Pack and the base game.
Pompous Purists Civic
In our latest addition to the Humanoids Species Pack, the Pompous Purists Civic allows for a diplomatic playstyle, but for Xenophobes. The idea is based on an elven fantasy, where they are willing to negotiate with other species, but only on their own terms.
To that end, empires with the Pompous Purists Civic cannot receive diplomatic proposals, but may still send them. They will also get bonus trust growth and extra envoys.
Terraforming Improvements
With the focus on Terraforming in the Aquatics Species Pack, the Custodian Team has been hard at work to improve the experience of terraforming as a whole. Terraforming planets now have a chance to randomly trigger events, to add more flavor to the overall process of terraforming. These events vary in power and complexity and will only trigger the first time a planet is terraformed.
But there’s more, we’ve also done some work with the AI budgets to make the AI more likely to terraform planets to optimal planet types, and will be more likely to pick Terraforming technologies and Ascension perks under certain circumstances.
More to Explore
We have added new anomalies for the Gas Giant, Asteroid, and uninhabitable anomaly categories. This will add more depth to some anomalies that previously only had a single outcome (for example the Gigantic Skeleton Anomaly).
We also have revisited some of the older anomaly events and added new options, to add more depth to these older anomalies.
AI Improvements
As part of the Custodian Initiative, we have set goals for ourselves, one of which is constantly working on and improving AI empires in Stellaris. The long-term goal is to move towards having a challenging AI, while still keeping the game entertaining to players and making AI empires feel more distinctive.
Previously, AI used to follow an economic plan based on the stage of the game they were in. For the 3.2 Update, we have updated the economic scripts used by the AI. The AI now uses a single base plan but relies more heavily on sub plans, which allow the AI to react more easily to unexpected developments throughout the game. The AI also has the ability to turn these sub plans on and off based on their economic situation, allowing them to react to unexpected resource deficits, and in our testing has lowered the frequency of AI economic collapses.
We also have gone over the Building and District weights for AI empires, which will further improve your AI opponents’ economy. AI starbase construction has also been improved and will now use more varied setups when building their starbases and making use of special buildings where it makes sense. AI empires will now also construct Ecumenopolis, choose better Planet Killer weapons, and are better at fighting Crime.
Fleet Manager and Reinforcements
We have addressed several issues with regards to the Fleet Manager, namely that it was possible to create fleets larger than the command limit, which resulted in large amounts of single-ship fleets when attempting to reinforce those fleets. Fleets containing one ship type and one ship should also now appear in the fleet manager.
The time taken for Fleet reinforcements and MIA fleets will now be more accurate when compared to simply flying the fleets to the target system. Fleet reinforcements will now make better choices when selecting shipyards to reinforce from and should better consider systems with multiple shipyards as well as systems connected by bypasses.
We also have improved the reinforcement pathfinding: reinforcements will now attempt to find a second, longer route if the shortest reinforcement route is considered unsafe. Systems containing both friendly and hostile fleets will no longer be considered unsafe for reinforcement purposes. In addition, Reinforcing fleets that fail to find a safe path to the target fleet will now merge with other fleets orbiting the same shipyard if both fleets intended to reinforce the same target fleet.
Performance Improvements
The 3.2 update will feature some new Performance Improvements as well. These performance gains were realized by performing optimization on a number of various game systems (specifically Pop Factions and Jobs), to make them more efficient. We also did a deep dive into some of our events and scripts and finding and stopping events from attempting to fire when they shouldn’t be. It is our hope that this work will be felt in the form of a bit less late game slowdown, and we have identified several other places where performance improvements can be realized, either in 3.3 or in a later version.
Improved Ship Browser
Back in May, we talked about a Ship Browser Experiment, where roughly half of our players would be getting an improved ship browser in empire creation, that allows viewing all of the ships in a shipset, and that allows viewing all of the ships in a shipset up close and from any angle.
We’re happy to announce that this experiment will be going out to all Stellaris PC players with the free 3.2 “Herbert” update!
And More
Modding improvements, Multiplayer stability improvements, Balance changes, and over 80 bug fixes in total.
Hello everyone, today we would like to tease you with some of the upcoming changes coming with the 3.2 "Herbert" patch, named after Sci-Fi author Frank Herbert, which we will release along with the Aquatic Species Pack.
For Balance Changes, we have the following changes in store for you:
Functional Architecture and Constructobot: Reduced the free building slots granted from 2 to 1.
Agrarian Idyll empires now get one planet building slot per four Agricultural districts built.
Reduced the ship upkeep cost modifier for clone army admirals to 5/10/20% based on their decisions.
Ruins of Shallash arc site no longer has a chance of giving quite as much unity as defeating an endgame crisis.
You can no longer use planet killer weapons on primitives inside your borders if you lack the appropriate primitive interference policies.
Pops working the Livestock job now have 10% less political power.
A lot of anomalies were rewarding 3 Society Research deposits, there is now more variety.
Made Awakened Fallen Empires use Traditions (but not Ascension Perks).
Several productivity-improving technologies are now no longer of dubious benefit, as their upkeep (and production) effects now only apply to jobs actually primarily producing resources.
Nerve Stapled Hivemind pops can no longer perform complex drone jobs.
Reduced the amount of jobs added by Leisure Arcology Districts to bring them into line with other Ecumenopolis districts.
Ion cannons are no longer free to maintain, and have an upkeep cost of 8 energy.
Necro-Hives:
Cut Necrophage pop assembly penalty to 50% from 75%
Made pop output modifiers (positive and negative) no longer apply to hive minds.
Made the -50% organic upkeep also apply to energy, for photosynthesis.
Devouring Swarm Necrophages now spawn with extra infrastructure to account for the lack of chambers of elevation.
Of note here is the Functional Architecture change, we are aware that the extra building slot was the main draw of the civic but it was also way over-represented even after the initial release-hype
While not a pre-planned balance pass like we did for the Lem patch, we still found a few places to tweak and adjust and we will continue to do that in future patches.
...and now, handing over to Caligula Caesar for a look at some performance improvements and moddability topic.
A Look at Script Performance
Hi! You are probably used to me writing lengthy prose about new moddability and scripting language features. This time, we only have a few things to show off in that regard, but there are nevertheless some cool, technical things I can speak about.
Knowing the script language pretty well, I always found the performance impacts of our scripts to be a big unknown to me. Was what I was adding going to mess with performance? Well, I could do plenty of guessing as to how to script most efficiently, and general concepts of programming such as early outs do apply. But how big was the difference? And how much can we save by identifying inefficient scripts and improving them?
Moah had made some progress on porting the EU4 script profiler over to Stellaris as a pet project some time ago. The only problem was, its information was quite incomplete (since it needs a lot of tags added in many places of the code, basically everywhere where an effect or trigger is called). It was also pretty hard to read the information presented. But now, with the Custodians initiative, the time had come to see what we could do with this.
After a bit of (very tedious) work to make the information all-encompassing, systematic and readable, I let the game run on a Huge galaxy with a few extra boosts to the AI - 0.75 research costs, 1.25 habitable planets - and ran it a year with the script profiler enabled. Then, issues could be found. I’ve attached two versions of this output: one as it was in one of the early runs - so before coverage was comprehensive (notably, triggered modifiers and economic tables are missing), but also before any optimisation work was done - and one as it is now, in the 3.2 beta. (Note that the figures for how long it spent on each object is massively inflated by my having run the game in unoptimised debug mode with the profiler turned on)
Now, I must state in advance that we aren’t able to release the script profiler to the public with the 3.2 update for technical reasons: running the game with it makes the game about 50% slower, so we need to work out a way to be able to turn it - and its full performance impact - on and off at will. (At the moment, it is hidden behind compiler flags that are not available to the public). But we definitely hope that we’ll be able to release it to modders in the future.
Early Gains
The first big finding was that the game is repeatedly recalculating certain game rules a large number of times per pop each day, which was having a disproportionate impact on performance. The biggest culprit was “can_vote_in_democratic_election”, which it turned out was checked on every pop in the country every day for each pop faction while they were calculating their support value. Yes, you are reading this right: the imperialist faction would check whether each pop in the entire country was allowed to vote, then the prosperity faction would do the same, and the imperialist one, and so on… These cases were fixed by making use of daily caching: the pops will now calculate the result once per day (or, in the case of species_has_happiness, once per species in a country each day), and other places in the code can simply refer back to that result. Furthermore, pop factions’ support calculations were optimised so that the total by which they were dividing their support could be calculated once per country, rather than once per faction.
On the script side, by parsing various of the top hits, we noticed a few easily-optimised bits of script. First off, graygoo.500 was trying to fire a surprising number of times for an event that should come into play only when the Gray Goo are active (which they weren’t). It turns out that this was because it was missing “is_triggered_only”, so it was trying to fire on all planets every day! Similarly, a number of test events were scripted in a similar way, but with “always = no” as their trigger so they’d never fire. They made a small but nevertheless noticeable impact on performance, so they had to go.
The opinion modifier triggered_opinion_galactic_community_in_breach was taking up more performance than any other opinion modifier, by a distance, which seemed a bit strange. It turned out this could be fixed by a slight change in order in the triggers: it was checking “is_in_breach_of_any” before verifying Galcom membership - which sounds like it wouldn’t be a big issue, but that trigger then checks the triggers for the breach conditions of all passed resolutions, so it is in effect a lot of triggers in one. Simply swapping the order had very positive results, here.
Finally, the event crime.1 (somehow the second most costly event in the early version) was a similar case, but a lot more complicated. The main problem here was the following piece of script:
OR = {
AND = {
count_owned_pop = {
limit = {
is_shackled_robot = no
is_unemployed = yes
NOR = {
has_living_standard = { type = living_standard_utopian }
has_living_standard = { type = living_standard_good }
has_living_standard = { type = living_standard_shared_burden }
}
}
count > 3
}
owner = { is_gestalt = no }
}
AND = {
count_owned_pop = {
limit = {
is_unemployed = yes
NOT = { has_living_standard = { type = living_standard_organic_trophy } }
}
count > 10
}
owner = { is_gestalt = yes }
}
}
This is quite inefficient, and large benefits could be found in applying the principle of early outs. “Count_owned_pop” is a relatively expensive way of calculating anything, because a lot of efficiency is lost in converting script into code and working out the results of this, so on a planet with 80 pops, it is looping through each of those and checking a set of triggers on each of those. Unfortunately, because of the ordering, it would do this twice per day on each planet which did not have 3 unemployed pops on it:
The event is checking the triggers every day on each inhabited planet. Or at least often. 44,000 times in a year, to be exact.
It does not verify that there are unemployed pops on the planet before working out what kinds of unemployed pops there are. Which means that the OR will return false on both count_owned_pop sections, which consequently means it is checking both. Adding “num_unemployed > 3” near the start had big benefits
It would check the number of unemployed pops relevant to non-gestalts and only after that check the country was not gestalt. By swapping the gestalt check to the start, it means it will only ever be trying one of the count_owned_pop loops.
A new, more efficient version of the trigger was therefore this:
num_unemployed > 3 #early out before the expensive count_owned_pop to come
OR = {
AND = {
owner = { is_gestalt = no }
count_owned_pop = {
limit = {
is_unemployed = yes
is_shackled_robot = no
NOR = {
has_living_standard = { type = living_standard_utopian }
has_living_standard = { type = living_standard_good }
has_living_standard = { type = living_standard_shared_burden }
}
}
count > 3
}
owner = { is_gestalt = no }
}
AND = {
owner = { is_gestalt = yes }
count_owned_pop = {
limit = {
is_unemployed = yes
NOT = { has_living_standard = { type = living_standard_organic_trophy } }
}
count > 10
}
owner = { is_gestalt = yes }
}
}
Gains from Further Analysis
This was some cool stuff to fix, but beyond this, simply looking at the list became a bit harder to yield significant savings. Enter spreadsheeting! We pasted the results into a spreadsheet and, a few formulas later, and a nice pivot table to give us some breakdowns along the lines of “what is the total impact of all jobs”, or “what is the impact of the potential trigger of pop factions”
Picture shows values after performance improvements
This allowed us to pinpoint a few more things. Firstly, ai_resource_production was causing an absurdly high performance cost from a rather small number of hits. The culprit, here, turned out to be that the “planet_resource_compare” trigger (used mainly here) was incredibly expensive. The problem was that it was recalculating the resource output of all resources on the planet, basically (including by seeing what each pop was producing!). It turned out to be possible to mitigate this somewhat (to about 75%) by making it selectively recalculate the production of the relevant resource, but this was still quite expensive for a trigger, so we also cut down on its use a bit. I suggest modders not overuse it either.
Another thing we saw was that, not unexpectedly, jobs were quite expensive. Specifically their weights and their “possible” checks. We have some ideas to save time on the weights that we aren’t ready to speak about yet (they emerged too late in 3.2 development to be considered for the patch, because they are relatively likely to need some iteration), but we found a way of making the “possible” triggers cheaper. Basically, every seven days, a pop would recalculate its job cache, at which point it will check whether it is allowed to work each job, and if so, calculate its weight. But most jobs have fairly standard “possible” triggers that check the first part - specifically, there is a shared set of triggers between, respectively, worker, specialist, ruler and drone jobs. It turned out that very significant improvements (to the degree of almost two thirds) were possible by having the pop calculate these four triggers first, then loop through the jobs and simply match the result to the right job.
(Note to modders: the format looks a bit different now. If you used the scripted triggers worker/specialist/complex_specialist/ruler/drone_job_check_trigger, you will now need to define e.g. “possible_precalc = can_fill_ruler_job”. And if you changed them, you will need to change the new versions of them in game_rules)
Finally, although the game rules optimisations had already fixed several performance issues with pop factions, there were a few more spots where they could be improved. The first was whether a faction should exist at all: it turned out that both the script and the code was checking whether there were 5 pops that could join the faction, just that the code wasn’t checking this anymore after the faction was formed. Obviously, this wasn’t ideal, so the script check (being the slower) was removed, and the code check amended to account for shrinking pop factions becoming invalid.
The second was deciding whether a pop should belong to a faction: even though almost all factions only allow pops matching their ethos, the filter by ethos is quite late. By putting it much earlier - in code, before the script is even checked at all (with an override in case this isn’t desired, e.g. for technologist robots) - this massively cut down the costs of this particular calculation.
Finally, a number of their demands - checked each day per faction - were quite exorbitant. By changing the ordering and using equivalent but cheaper checks (e.g. any_owned_species instead of any_owned_pop). This, too, had a significant impact, so that the script footprint of pop factions (excluding game rules they use) was reduced by about two thirds.
Further Performance Topics
It is my hope that this work will be felt in the form of a bit less late game slowdown. My tests would indicate that this was a success, though it’s very hard to quantify by how much. It was however work that was solely focused on the script performance footprint, so there’s plenty of other things for us to look at! The job is never over, when it comes to performance, and hopefully we’ll have time to make further improvements for 3.3.
For example, I have heard a few complaints about UI lag in the late game, which might be improved slightly in a few interfaces as a result of the performance work, but this work didn’t focus on UIs. It is certainly true that some of them are not as fast as we would like them to be. Particular ones in this regard are the planet view, the species view and the colonisation selection menu, and we are looking at options to speed them up. (And, indeed, if anyone can think of any others, it would be useful for you to point them out!)
Moddability Improvements
I can’t really do a dev diary without talking about a few moddability improvements, so here they are. As I said, we don’t have that much this time, but there’s a few things that people might enjoy trying out:
There’s now a create_nebula effect. Although it’s best used during galaxy generation, since the visual effects on the galaxy map won’t refresh during the game.
Decisions can now have on_queued and on_unqueued effects.
Terraforming now uses the Megacorp economy system. Meaning, the costs are configurable resource tables, and you can make economic_unit modifiers to apply to them.
There’s a species_gender trigger that checks what gender the species’ leaders can be
You can now define custom tooltips for systems that you see when you mouse over them on the galactic map
There’s now on_actions for on_capital_changed and on_planet_class_changed
For Traditions, the “possible” trigger of its adopt tradition will now show in the tooltip for adopting it if it fails. I’m told that you can also now make the tradition categories have a container where you add a gridbox.
There’s also a couple of things that modders will have to update (aside from the terraforming, as mentioned):
any/count/every/random_planet_army now refers to all armies on the planet, not just all owned by the owner of the planet
Set_starbase_building/module and the remove variants are now consistent in starting at slot 1, rather than “set” starting at 0 and “remove” at 1.
In component_templates, valid_for_country is now a trigger rather than a weights field
Fire_on_action had some issues where you defined scopes with “prev” and “from”, those no longer exist.
As a final moddability note, for anyone who misses the meaty dev diaries with far-reaching moddability changes, not to worry! Anyone that has played around with the script of our newer games will know that there’s a lot more potential in our scripting language. There’s some cool stuff in the works, though I can’t at this stage say what exactly or in which patch it’ll be.
I am also, as last time, attaching the script docs to the dev diary, so that you can see any changes I forgot to mention. Also, any modders who are interested in early access to the 3.2 Update, for the purposes of getting your mods updated, you can sign up here: https://pdxint.at/3bZbVJN