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

Stellaris Dev Diary #232 - 3.2 Balance Changes and Performance Improvements

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.555 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:

Code:
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:

Code:
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
                }
            }
            AND = {
                owner = { is_gestalt = yes }
                count_owned_pop = {
                    limit = {
                        is_unemployed = yes
                        NOT = { has_living_standard = { type = living_standard_organic_trophy } }
                    }
                    count > 10
                }
            }
        }

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”

script profiler 1.png

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
 

Attachments

  • profiling_summary after.log
    695,8 KB · Views: 0
  • profiling_summary before.log
    465,4 KB · Views: 0
  • effects.log
    181 KB · Views: 0
  • localizations.log
    4,4 KB · Views: 0
  • modifiers.log
    332,5 KB · Views: 0
  • scopes.log
    8,1 KB · Views: 0
  • triggers.log
    128,8 KB · Views: 0
Last edited by a moderator:
  • 95Like
  • 25Love
  • 25
  • 4
  • 2
Reactions:
That said, I am not convinced that "what players pick" is meaningful. A lot of people probably picked FA because there were a lot of YT videos using it and people wanted to try whatever thing some creator showed off. They say they waited until after the initial spike. But I normally only do one two games per patch, and I usually use whatever got changed. So I used a lot of FA this patch just because it was different. It also happens to be really good, but I can't say that merchant void dwellers were particularly fun. I don't think I even bothered to finish that game. And even if aquatics are all very off meta, that's probably what I'm going to play with for most of the next patch. And if you only look at people creating new games well after the initial patch release, you get a very unrepresentative sample with its own statistical problems.

In addition the latest patch added the Clone Soldier origin and the Idyllic Bloom civic, both of which want building slots.
And building slots are scarce early game, when the resources to build a city district to unlock another are still scarce.

The dev diary give the impression "it was popular, so it much be too good" and thus got nerfed. While that is a symptom of an unbalanced game element, this is really where one should start looking at an element, to see if there is an underlying lack of balance or if there are other reasons (it's useful to almost every empire; it helps the most early on; it fuels faster research indirectly, and everyone wants that) that make it simply popular for other reasons.
Balancing FA is not easy, because it is in the small list of civics that are "evergreens" aka, almost always useful for any empire and noteworthy enough ton be worth a pick. Mining Guilds and Meritocracy are similar here, whereas others are often either not good enough or much mroe restricted by ethics and government.

Simple answer - artificial lighting for those who can’t spend enough time outside.

Putting the "farm" in "cubicle farm".
 
  • 2Like
  • 2Haha
Reactions:
The dev diary give the impression "it was popular, so it much be too good" and thus got nerfed. While that is a symptom of an unbalanced game element, this is really where one should start looking at an element, to see if there is an underlying lack of balance or if there are other reasons (it's useful to almost every empire; it helps the most early on; it fuels faster research indirectly, and everyone wants that) that make it simply popular for other reasons.
You're right that the dev diary kind of reads like "It was popular, kill it", but as per your post it's not hard to see that it's popular because it's powerful and I can't see them not having come to the same conclusions. On top of that it's no brainer for void dwellers and no brainer choices (outside obviously thematic choices like taking voidborne) are bad.

What's confusing is why they didn't just fully revert to the 10/10/1 setup from a few patches ago. I made a big post about why upkeep reduction is less interesting than extra slots, but just removing the slot without restoring the upkeep reduction seems weird.
 
  • 5
  • 1Like
Reactions:
On the contrary: livestock currently counts as 25% at 0 approval. Now that's reduced by 40% compared to the currently released version, i.e. 15%. It has a noticeable impact on how fast stability goes down once your livestock starts growing.

Are you sure it's not the other way around- how fast the stability goes back up per each necrophyte conversion (or necro-purge)? There's a significant difference in the strategic implication, and mitigating a penalty is what already incentivizes necro-purging.

Livestock already struggle to grow more than 3 pops a planet a decade under the current empire-wide pop system, and 3 pops is starting necrophyte conversion rate. Given that it's a conversion and not mutual addition, on most colonies- especially lower habitability ones- net livestock growth a decade is already 0. In fact, you're strongly incentivized to not maximize necrophytes (either by cutting the number of jobs or avoiding the building) in the early decades on colonies in order to actually grow your net food economy.

With net livestock growth effectively being 0 in many places in the empire when maximizing necro-pop production, and being significantly less than the 3+ necro-pops per decade that conversion (and spawning pools) give, the noticable impact won't be in the growth of livestock- which is net 0 against an ever-growing necro-pop population- but in their removal.

This already applied, mind you, but the political power bonus only matters in so much that you have an increasing share of livestock pops who would use it. Which is locked to war-gains, due to net-0 livestock growth if you're growing max necrophytes, and if you're capturing pops you can necro-purge them, which gets the amenity-savings faster.




In fact, the necrophage trait change removing the penalties/bonuses will likely incentivize more necro-purging, making the pop weight change matter less as a third-order effect.

Currently, there's a partial balance in how many species you want to necro-purge because necro-purging is 75% efficient at conversion. Even 75% is better is more useable drones than livestock, but there was a balance that the 5% specialist drone bonus was an incentive to wait, and the 10% menial drone penalty decreased the incentive turn livestock into other worker-type pops. The upcoming change removes the incentive to wait, and increases the incentive to eat the 25% conversion penalty.

Given that necro-purge is fundamental to overcoming the necro-hive's starting population disadvantage- and their primary advantage over other hives to make use of conquered pops- necro-hives already were strongly incentized to do that already. But given that necro-purging is an advantage with a time-limit of whenver Bio-ascension can be reached and assimilation can be used to get drones directly without the delays or inefficiencies, necro-purging's other aspects become more relevant. With the Unity of Mind tradition for (up to) 100 unity per necro-purged pop to get to Bio-Ascesnion through tradition unlocks, with more incentive to purge early for workers also enabling more scientists to research the pre-req techs, and fewer reasons to wait for necrophytes to make necro-drones, there's a much clearer case for necro-purging your guaranteed primitives and early conquests.

Which means more early-game necro-drones, and fewer livestock to lower the approval rating.


In so much that it already only mattered a little (25%, not 100%), it now matters even less, because you're likely to have less livestock overall to weigh you down in the first place.
 
Last edited:
Are you sure it's not the other way around- how fast the stability goes back up per each necrophyte conversion (or necro-purge)? There's a significant difference in the strategic implication, and mitigating a penalty is what already incentivizes necro-purging.
Well no, it just won't be very low to start off with. So it doesn't matter how fast it goes up, because it's no longer a significant penalty.
 
  • 4
Reactions:
Well no, it just won't be very low to start off with. So it doesn't matter how fast it goes up, because it's no longer a significant penalty.
Right, but it wasn't a significant penalty to begin with either. The livestock and necrophyte situation were already a net stability gain over empires with the same number of drones and livestock per planet, and it only got better over time as a higher proprotion of pops become necro-drones through necrophyte ascension.

The change only really kicks in when you suddenly acquire large numbers of livestock through war, because it means fewer necro-drones per planet to have the same level of stability. But since the early game is a necro-pop shortage, you already want to be necro-purging to have more drones, which just further means a higher drone-to-livestock ratio.
 
  • 1
Reactions:
How do you feel about the current situation with Void Dwellers?

The idea of nerfing some of its massive advantages based on how often the build dominates the game in multiplayer was not at all popular with other users, but it's still a fact that Mercantile tradition combined with Void Dweller is ridiculously powerful, and because of that, overrepresented in multiplayer games.
 
  • 1
Reactions:
I would point this out because you wanted people to tell you. The most annoying to be in terms of ui lag is fleets. When i late game select quite a few fleets. (modded of course) but even if it was a full battleship fleet of like say 50 selecting more then 4 of them at times will freeze my entire game for like 20 seconds until i deselect it... So i had to move 1-3 fleets at a time to points, otherwise i would be able to even use my navy... not sure if this is UI LAG but can you look into this?
We are aware that there are performance issues with this UI and it's tied to figuring out what is allowed and making sure that information remains correct while the game runs in the background and the game state can change. So these issues can be difficult to get at without also making buttons enabled/disabled in the wrong situations.

That being said, some investigation and tentative improvements are underway already.

I would love it if you could fix a bunch of Fleet Manager bugs.
There may or may not be some of this in the bugfix notes for 3.2 :)
 
  • 11Like
  • 2
Reactions:
Right, but it wasn't a significant penalty to begin with either.

That depends on the amount of pops per planet. Take a lookt at the image below.

stability%20malus.PNG



The current issue is how Necrophytes and Livestock work against each other. Livestock reduce your stability while Necrophytes increase it if you have excess amenities. However, these pops in total could be much more productive if you simply had them working other jobs. And we all know you don't want excess amenities either. Its best to be at 0 amenities and have pops working as many good jobs as possible.

The livestock and necrophyte situation were already a net stability gain over empires with the same number of drones and livestock per planet

Thats a weird comparison and a poor argument in my opinion. You don't want livestock as a Hivemind anyway. They scale poorly since farmer output bonuses do not affect them. Once you unlock full Genetic Ascension you just assimilate all pops and give them real jobs.

Personally I am happy something is done to make Necro-Hives suck less. Whether or not thats enough we will have to see. Hiveminds are notoriously bad compared to normal empires, having low options and low civic variety. Getting atleast some improvements is a small step in the right direction.
 
How do you feel about the current situation with Void Dwellers?

The idea of nerfing some of its massive advantages based on how often the build dominates the game in multiplayer was not at all popular with other users, but it's still a fact that Mercantile tradition combined with Void Dweller is ridiculously powerful, and because of that, overrepresented in multiplayer games.

Merchant focused habitat builds are something I've got my eye on.
 
  • 5Like
  • 1
Reactions:
How do you feel about the current situation with Void Dwellers?

The idea of nerfing some of its massive advantages based on how often the build dominates the game in multiplayer was not at all popular with other users, but it's still a fact that Mercantile tradition combined with Void Dweller is ridiculously powerful, and because of that, overrepresented in multiplayer games.
I like moving the homeworld away from the science deposit as a stopgap. It's not a massive change to the general "dudes on habitats" flavour and playstyle but might help delay the start of the snowball.

I hate clerks and trade so I got nothing to say about the Mercantile gimmick. Make trade districts require a trade deposit?
 
  • 1Like
Reactions:
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.
Since it is basically a different build, how about adding it as a steam beta tab entry?
People have to go out of their way to choose it, so the average player would not be impacted.

Of course, publishing a debug build might be unwanted for other reasons.

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.

On the script side, by parsing various of the top hits, we noticed a few easily-optimised bits of script. First off, graygoo.555 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).

Finally, the event crime.1 (somehow the second most costly event in the early version) was a similar case, but a lot more complicated.

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.

Another thing we saw was that, not unexpectedly, jobs were quite expensive. Specifically their weights and their “possible” checks.

Yeah, those sound about right :)
 
Simple answer - artificial lighting for those who can’t spend enough time outside.
That is... actually a really good explanation. Thank you for taking the time to answer me!
 
  • 1Love
  • 1Like
Reactions:
That depends on the amount of pops per planet. Take a lookt at the image below.

stability%20malus.PNG



However, these pops in total could be much more productive if you simply had them working other jobs.

You have 6 livestock on a colony with only one complex drone, and have a 8-point stability advantage. This is a good thing.

Further, you only have 6 livestock and a 1 drone on a colony because you moved livestock to the colony rather than let them grow into necrophyte jobs. This is poor play; you'd have three more drones working productive jobs if you'd build the necrophyte building at colony start.

The current issue is how Necrophytes and Livestock work against each other. Livestock reduce your stability while Necrophytes increase it if you have excess amenities.
All pops work against stability, because all pops work against amenities. Even entertainers and maintence drones require amenities. All that matters is net stability, which is higher due to them than it drops because of them.




And we all know you don't want excess amenities either. Its best to be at 0 amenities and have pops working as many good jobs as possible.
This is incorrect. For specialist-level rolls like science, alloys, and unity, stability is the only available means early in the game to boost output, at about 3% per 5 stability. For necrophages who are pop-limited, boosting their stability is key. The livestock isn't going to stop being a livestock in the early game unless you purge them, so it's the pop-efficiency of the drones you do have that matters most.

Thats a weird comparison and a poor argument in my opinion. You don't want livestock as a Hivemind anyway. They scale poorly since farmer output bonuses do not affect them. Once you unlock full Genetic Ascension you just assimilate all pops and give them real jobs.

This, too, is bad play. Growing livestock saves thousands of minerals a decade that you don't need to spend miners to gather, and provide the only resource you need to form an overwhelming alloy economy.

Further, most food-boosting measures do affect them, including techs and buildings. The two measures that don't affect livestock, the edict and farmworld designation, are not needed: the hive has far more important planetary designations or edict slots to benefit from (energy and mineral if you have a shortage; alloys and science if you've met them), and already has an excess of food once you get your conquests started by year 30.

Waiting to convert them to drones at genetic ascension is also bad play. If you have livestock to spare at that point, it means you haven't been necro-purging them for dozens or even hundreds of necro-drones beforehand, which would put you entire traditions ahead of other empires.

Not using necro-purging after bio-ascension is also bad play. You still have several valuable traditions to fill, and if you're in a position to capture and assimilate pops, you would get more use from further pacing down the tradition tree and getting more drones faster than from a 3/6/12 pops per year assimilation empire-wide.


Personally I am happy something is done to make Necro-Hives suck less. Whether or not thats enough we will have to see. Hiveminds are notoriously bad compared to normal empires, having low options and low civic variety. Getting atleast some improvements is a small step in the right direction.


Necro-hives are 'notoriously bad' because people try to play them as pop-and-economy blooming empires rather than war-mongers, when their mechanics make them good war-mongers and bad pop-bloomers. The changes in the update don't make them good pop bloomers, but do make them worse war-mongers.

Making good builds worse isn't a step in the right direction if you lament them having weak builds.
 
  • 1
Reactions:
Yes, habitats by design should not have all building slots unlocked (at least according to the current design).
Have you looked at a way to make Bureaucratic Habitats viable again? I miss being able to use Habitats for that. Maybe make the Tier 3 upgrade on Administrative Offices available to organics, but exclusively on Habitats?
 
Have you looked at a way to make Bureaucratic Habitats viable again? I miss being able to use Habitats for that. Maybe make the Tier 3 upgrade on Administrative Offices available to organics, but exclusively on Habitats?

As mentioned in previous dev diaries, we're currently looking at admin cap/empire sprawl on a wider level, but don't have anything to share just yet.
 
  • 3Like
  • 3
Reactions:
We are aware that there are performance issues with this UI and it's tied to figuring out what is allowed and making sure that information remains correct while the game runs in the background and the game state can change. So these issues can be difficult to get at without also making buttons enabled/disabled in the wrong situations.

That being said, some investigation and tentative improvements are underway already.


There may or may not be some of this in the bugfix notes for 3.2 :)

Please, for the love of all that is holy, fix the issue of building new ships for a fleet only for them to divide up into dozens of one ship fleets that don't register to the main fleet they where built for, so i end up spending twice as much alloys, have a UI nightmare on my hands, and a bunch of ships that it's near impossible to organise into a usable fashion.
 
  • 3Like
  • 1
Reactions:
Please, for the love of all that is holy, fix the issue of building new ships for a fleet only for them to divide up into dozens of one ship fleets that don't register to the main fleet they where built for, so i end up spending twice as much alloys, have a UI nightmare on my hands, and a bunch of ships that it's near impossible to organise into a usable fashion.
I've worked with reinforcements quite a bit for this patch with the help of a few other custodians.
The goal has been to not only fix the recent issues with it, but also to improve the feature overall to ensure that it simulates the process it automates well enough that players don't feel that constructing reinforcements manually is worth it.

That being said, there will still be cases where the ships are spawned at the shipyard, but they should be less common and when they do occurr, they should cause less frustration. The reason why we can't eliminate this completely is because there needs to be a safe path for the consutructed fleet to get to the one requesting reinforcements, or else it would be exploitable and it wouldn't simulate the manual reinforcement process. A lot can happen between the time when you order the reinforcement and the time when they finish construction and attempt to make their way to the target fleet and if it's no longer possible to get to that fleet safely, we will spawn the ship at the shipyard and leave the problem of getting the ship to the target fleet in the hands of the player.
 
  • 8Like
  • 6
Reactions: