1. Stellaris
  2. News

Stellaris News

Stellaris Dev Diary #373 - 4.0 Development Progress Update

by Eladrin

Hello everyone!

We’re still hard at work getting the features we’ve been describing into the game, but this week we’re giving you a bit of a progress update, and I’ll be giving my thoughts on what shape they’ll be in when we begin the Open Beta. As with everything over the past couple of months, all of this is still subject to change.

We’ve successfully gotten past the critical milestone of “the game is no longer completely broken”, and things are starting to come together very nicely.

[h3]DD #367: Precursor Selection, Databank, Species Modification, and Ship Designer​[/h3]
The first three are fully functional and will be in the Open Beta.

The Databank still has some placeholder graphics on some buttons, and we’re planning on adding more entries, but it’s good enough for the Open Beta.



The work for the Ship Designer changes was done in the Q2 DLC branch to support that release, and while it is functional it will not be in the Open Beta (but will be in the final release).

[h3]DD #368: Pacing Adjustments, Galaxy Generation, Leader Traits, Events/Messages/Notifications, Empire Focuses and the Timeline, Hard Reset, and Achievements​[/h3]

Wow, we covered a lot in that dev diary.

All of these are functional, but like the Ship Designer, Hard Reset is in a different branch and will not be present in the Open Beta (but will be in the final release).

The Timeline shows a number of important milestones, and is generally functional. There’s still some polish to be done here, but I feel like it’s in a good enough state for the Open Beta.



Many of the basic Focus Tasks are in too, along with some of the progression rewards for completing them. We’ve added a couple of new Technologies to use as awards, such as Existential Campaigns, a tier 5 Society Tech.

Still to-do are Tasks for nonstandard gamestyles, and we haven’t moved things like Form Federation out of the Diplomatic Traditions yet.

Currently almost all of the Focuses relate to the base game only, but it’s good enough for now. We will have more in the actual 4.0 release.

Achievements no longer require Ironman, but the use of any debug commands disables them for that run. We haven’t updated them to the new systems yet though, so getting things like 100 pops on a planet is trivially easy.

Well that was easy.

[h3]DD #369: Trade and Logistics, Mammalian Portraits​[/h3]
Most, but not all, of the features described in dev diary #369 are in a functional state. Trade is a normal resource that is shown in the top bar. There’s Logistical upkeep on ships and for local planetary deficits, and it has replaced energy as the market resource.



We have not yet completed the entire trade economy for Gestalts, but they will have some baseline generation to handle this from their Maintenance Drones for the Open Beta.

Our mammalian friends are done, but like Hard Reset, are in their own development branch and will not be present in the Open Beta.

[h3]DD #370: Pop Groups and Workforce, Colonization, and Civilians​[/h3]
This is the core of what we’re interested in testing during the Open Beta.

Pops have been converted to using the new Pop Group system, and most aspects of Workforce are functional. We’re still going through the various jobs and updating them, and some of the weirder stuff in Stellaris (like, for example, Permanent Unemployment) hasn’t been worked on yet. Broken Shackles is hilariously broken right now. (It’s in the name, after all.)

Multispecies pop growth is working, but we haven’t made Xenocompatibility pool different species together yet.

Simultaneous pop growth!

Your homeworld starts with an extra 2000 pops, most of whom start as Civilians. This number is subject to change based on our internal playtesting and the Open Beta.

[h3]DD #371: Planet UI & Zones, Surface UI, Ecumenopoli, and Habitats​[/h3]
This is the other big part we’re still working on. The backend for the new mechanics is mostly complete, but we’re still doing the design side implementation of the new jobs, zones, and buildings.

The actual surface UI is still very much a work in progress - it’s getting to a functional state, but isn’t near the polish level of the designs you saw in the dev diary. It’s likely to be part of the way there (but not complete) at the start of the Open Beta.

Special planet types like Habitats and Ecumenopoli are unlikely to be fully implemented for at least the first part of the Open Beta. We have completed tying Habitat maximum development directly to the sizes of the deposits in the system, but haven’t had a chance to recreate their districts or zones using the new systems yet.

[h3]Performance​[/h3]
In a couple of threads, I mentioned that we’re not yet taking full advantage of some of the new model's performance benefits. Many things are still being calculated daily rather than monthly and are still largely single-threaded. We plan to keep it that way for the first couple of patches of the Open Beta because it will make it significantly easier for us to spot and fix any major issues that crop up.

As a reminder, the 3.11 Technology Open Beta found an issue like that with the Breakthrough Technologies, and finding these sorts of fundamental problems is my primary desire for the Open Beta. The Stellaris community is pretty exceptional at providing general feedback with the information provided by dev diaries, but a week of Open Beta testing will hammer the systems harder than we could do with months of internal testing.

[h3]So WHEN is it? What’s Next?​[/h3]
I can’t quite tell you that right now. This Friday, we’ll be evaluating the status of our current build, and I’ll try to provide a possible timeline for sometime next week.

Until then, it’s back to the code mines for us! See you next week!

Stellaris Dev Diary #372 - Modding: Pop Groups and Jobs

by Eladrin

Hi everyone!

This week, Gruntsatwork will discuss the technical details of pop group scripting. This topic is likely to be of most interest to the modding community.

The systems we’re implementing now are just scratching the surface of where we want to go with them - we’re looking forward to some of the things we’ll be able to do with these tools over the next few years as well as seeing what you do with them.

As with all of these dev diaries, some of this is still subject to change during implementation and during the beta.
[h3]Pop Groups and Jobs​[/h3]
Hello everyone, Gruntsatwork here! Let us talk about some of the script changes that are coming with 4.0 when it comes to pops and jobs…

As Eladrin already mentioned in Dev Diary 370, we are changing the way we look at Pops by grouping them together into Pop Groups. These groups are defined by their species, traits, ethics, and factions but NOT their jobs. It is entirely possible and likely for a pop group to have pops working different jobs.

The goal is that for most purposes in the game, you will reference pop groups instead of pops, which should hopefully save us from iterating through every single pop in our empire whenever a modifier needs to be re-calculated.

This allows us to tone down or remove some of the most performance-intensive actions we used before and replace them with far more performance-friendly variations instead.

For example, that means that both “random_owned_pop” or “any_owned_pop” have been relegated to the dark corners of history and replaced with “random_owned_pop_group” and “any_owned_pop_group”.

The same holds true for many of the effects used on those pops, like create_pop or kill_pop, or move_pop. Going forward, we will now create, move and kill pop groups, either in their entirety or through percentages. And for the eagle-eyed among you, YES, that means you no longer have to loop through singular pops to do unspeakable things to them, you can nicely target their pop group and let it do the math for you.

Thanks to the tireless efforts of our programmers, who have given us some new functionality for scripted triggers like comparators, other old tools, like num_pops, will see a resurgence as a scripted trigger. We expect the modding folks to find a lot of use in that, even as we slightly dread what you will come up with.

As also mentioned by Eladrin, this means we no longer have a constant contact between pops and their job.

Instead, there is a single moment of assignment when the pop group briefly knows which job it is supplying and with how much workforce. From then on, the job only knows that it has been supplied with workforce and thus must produce the associated resource. As long as the assignment stands, we have no need to check on the pop again.

This brings us to one of our biggest changes: removing all production modifiers on species traits and replacing them with bonus workforce. Simply put, because the workforce assigned to a job does not know which species it came from during most checks, production bonuses from species (modifiers like +10% Research from Jobs from the Psionic trait) cannot be applied. Instead, species traits now provide modifiers like “+10% Bonus Workforce for Researcher Jobs”, which means 100 Psionic Pops working 100 Physicist jobs will have the job upkeep and output of 110 Physicist jobs. In other words, we only pay upkeep on 100 Pops, but we get the output of 110 Researchers! This also has the side effect of the modifiers for job output from species traits are now multiplicative with other modifiers.

As an example, in 3.14 if we had 1 Psionic (+10% Research from Jobs) Pop working a Researcher job in an empire with the Meritocracy civic (+10% Specialist Job Output) on a Relic world with a Central Spire (+15% Research from Jobs), the total output would be 3 × (1 + 0.1 + 0.1 + 0.15) = 3 × 1.35 = 4.05 of each type of research.

In 4.0 if we have 100 Psionic (+10% Bonus Workforce for Researcher Jobs) Pops working 100 Physics jobs in an empire with the Meritocracy civic (+10% Specialist Job Output) on a Relic world with a Central Spire (+15% Research from Jobs), the total output would be 3 × (1 + 0.1) × (1 + 0.1 + 0.15) = 3 × 1.1 × 1.25 = 4.125 physics research.

This brings us beautiful new script entries like this one from the Psionic trait:
It doesn’t have to be like this. But it can be. Grunts made his choice. - E
This is perfectly serviceable - G
I have hopes to refactor this - AS​


As a side note, some checks can still query a pop’s job, but only indirectly, by scoping to a job and determining which pop group is filling it. This means we can still ensure functionality for Death Cults and similar targeted kill_pop effects.

In contrast, production bonuses on the planet or the empire are still available since they simply affect everyone.

So for species traits, we encourage the use of these new modifiers

 pop_job_bonus_workforce_mult

To increase the bonus workforce a pop generates for a given job.

 pop_job_workforce_mult

To increase the workforce a pop generates for a given job, this is not bonus workforce.

 job_max_workforce_mult

To increase the maximum workforce a Job can accept

As a reminder, a job's workforce will fill to its maximum allowed but not beyond that. If a pop generates more workforce than usual, fewer pops will be required to fill the job to max, but it will not produce more than its maximum. If a pop generates a bonus workforce, it can go beyond the job's maximum and scale its production up.

In addition, we have also split quite a few of our economic categories that depended on triggered checks of species traits. This also includes the use of triggers to fake an inheritance of economic classes, which we have removed in many cases and only left in the ones we deemed the most reliant on them.

For inheritance, we recommend the normal parent-child structure of economic categories OR, to use static_modifiers to grant the modifiers of any combination of economic_categories.

Most, if not all, of these changes were made to improve performance: reducing calls, loops, and modifier cascades that would otherwise trigger recalculations across every planet and pop in your empire, just in case a deficit check was needed at that moment.

Looking ahead, we see great potential in workforce mechanics, both for us and the modding community. We've hinted at automation – workforce decoupled from pops – and some of you may have already considered new applications for Virtuality. Who knows what other, more extreme variations in the type and number of pops empires require might now be possible?

Simply put, we now have the workforce to power Stellaris for years to come. Pun very much intended.
[h3]What’s Next?​[/h3]
Our planned livestream is going to be delayed a bit, and will likely end up being alongside the Open Beta. Right now our primary focus is on implementation.

Next week we’ll have some more updates on how things have been going.

Stellaris Dev Diary #371 - 4.0 Changes: Part 5

by Eladrin

Hi everyone!

This week we’re looking more at the economic changes of the Stellaris 4.0 ‘Phoenix’ update, and how we’re going to update the Planet UI to work with them.

As this is all still in development, things are still subject to change, and I’m going to be using a lot of the UX Design Mockups in this dev diary. The final versions will not match these work-in-progress designs precisely. The Open Beta will definitely not be at these polish levels. Also be aware that numbers on these mockups are all placeholders meant to help the rest of the team get the layout right, so things like the Pop Counts or Production numbers aren’t accurate.

[h3]Planets - Districts - Zones - Buildings - Jobs​[/h3]
As mentioned last week, one of the fundamental changes we’re making to the economy behind the scenes is that planets are now the source of production rather than the pops themselves. This is a generally subtle change from your perspective as a player, but this opened up an opportunity to revamp exactly how planets are structured, and to formalize some of the job hierarchy. A few of you have already guessed some of the things I’m going to share with you.

We’re introducing a new planetary feature: Zones. By specializing Districts, Zones function similarly to how the Forge World, Factory World, and Industrial World designations previously modified the jobs provided by Industrial Districts – only now as a more structured, intuitive, and flexible mechanic.

The 4.0 Planet Hierarchy is:
  • Planets produce and consume resources.
  • Districts provide a base number of Jobs for each level of development.
  • Zones manipulate what Jobs are provided by their District.
  • Buildings typically modify the production of Jobs themselves, though may also provide static numbers of Jobs.
  • Jobs are filled by Workforce, and make the planet produce a single resource by default (unless they have been modified).


Standard planets have a City District that contains your urban development, and remains capped by planet size as it is in 3.14. The City District has four Zones - one will always be locked to a Governmental Zone and contains your Capital Building, while the other three will be selectable. Normal planets also have Mining, Agricultural, and Energy Districts which each have one Zone, and - like 3.14 - are gated by planetary features. Industrial Districts have been removed, as their function has been replaced by Zones.



Upgrading Districts is now clearly shown as a button on the Planet UI - this should reduce the number of “it took me X months to realize you can build districts” posts. As part of the increase in differentiation between Districts and Buildings, we’ve changed some of the terminology slightly - instead of building a dozen Districts across a planet, you will upgrade their development level. Functionally this remains the same.



Zones are our new addition to the Planet Hierarchy. Zones let you change the nature of their District. By default, the City District will provide Housing and increase the maximum number of Civilians that your planet can support. (Based on design discussions over the past week, we’re leaning towards your Empire Capital having a bonus increasing this number significantly, which has the nice secondary effect of making the conquest of Homeworlds in the early game carry the societal challenge of suddenly creating many angry Dissidents that will be unable to promote back to Civilians as this bonus is lost.) If you build a Foundry Zone, the City District will replace some of their Civilian capacity and housing with Metallurgist jobs for each level of development. If you then build a Factory Zone, the City District will provide both Metallurgist and Artisan jobs, but with further reductions to their Citizen capacity.



While you can build multiple Zones of the same type (in your City District, for example), the first Zone of each type built on a planet gains three slots for Buildings. (Duplicate Zones do not grant additional Building slots.) Buildings typically modify the production of their associated Job, and most are now Planet Unique. The majority of Buildings are restricted to the specific relevant Zones that they can be built in, but some can still be built anywhere. The Government Zone and Urban Zone can, however, accept most Urban buildings. The build list will be filtered appropriately.

The majority of Jobs will now have a single output by default, so Researchers are being broken apart into Physicists, Biologists, and Engineers.

Origins and Civics that previously replaced Jobs will now typically instead have a Building that modifies the associated Job. A benefit of this is that it should now be able to stack better with other similar Civics - we hope to be able to reduce restrictions so perhaps you’ll be able to sacrifice willing Pops by flinging them into a black hole for money.
[h3]The Planetary Surface​[/h3]
Your homeworld is a bit of a special case in Stellaris - it’s not a brand new colony, but it’s also not very specialized. It needs to provide a little bit of everything, but could really use some cleanup after all those years of development (becoming an Early Space Age civilization is a dirty job.)

Here’s the work-in-progress UX mockup of what Earth may look like at the start of the game:



The unspecialized mess of being an Early Space Age civilization gives us a relatively unspecialized zone that provides us with the basic resources necessary at the start of the game. We’ll eventually want to replace that Zone with a more specialized one.

As we head to the stars, we’ll naturally want to colonize our Guaranteed Habitable Worlds. The new Colonization UI will let us immediately set the desired planetary designation for our brand new colony.

Don’t worry, you’ll be able to select something other than Factory World...

Here’s what our new colony could look like once the colonization process finishes:

...But why did you choose Mining World for a planet with Poor Quality Minerals?

The Reassembled Ship Shelter provides Colonist jobs that will provide the Amenities and Stability previously granted by the Colony designation. As shown, the technologies required to expand on an alien world are not necessarily the same as those you need back on your home planet.

Our UX designer has created these explanations of the new UI:





And here’s what our two planets might look like after some time has passed.





[h3]Special Cases​[/h3]
Ever since MegaCorp, paving the entire world has always been a grand ambition of Empires.

We’re currently thinking that an Ecumenopolis should act like the megacity it is. The Ecumenopolis will have multiple Urban Districts - one large main one and three more smaller Arcologies.

Wait, this means you can make a Fortress Ecumenopolis…

Although the gameplay of upgrading a Habitat Complex by building orbitals throughout a system made Habitats more interesting, having to hunt down that last moon to place the orbital proved incredibly annoying.

For 4.0, we’re removing this pain point. Upgrading Districts on a Habitat will spawn Orbitals throughout the system as their Development Level increases. Some of the district capacity will be available immediately upon colonizing the Habitat Central Complex, with the remainder gated by upgrading the Capital Building. We’re also considering having the district capacity for Habitats more closely linked to the deposits available in the system instead of the current behavior where each mineral deposit grants a static amount of capacity.

We expect to see some unique or former districts for habitats be reimagined or return as Zones, such as the Order’s Demesne for KotTG or Sanctuary Districts for Rogue Servitors.

Goodbye, hunting for where that last minor orbital is hiding!

[h3]Next Week​[/h3]
Next week, Gruntsatwork will go into some of the scripting details of Jobs and Pop Groups. We should also have some more information about the upcoming 4.0 livestream.

See you then!





Stellaris 4.0 fixes the space game's performance problems with population rework

Paradox has big plans for Stellaris 4.0. The next major update for the space game is giving it a hefty rework for its ninth birthday. Currently targeted for May, the Phoenix update aims to act as a reigniting spark, and one of the biggest focuses for the strategy game giant is tackling the performance issues that have cropped up as Stellaris continues to grow ever larger and more complex. As part of this process, game director Stephen 'Eladrin' Muray explains how Paradox is dramatically rescaling populations, and what that means for your next game.


Read the rest of the story...


RELATED LINKS:

Stellaris console commands and cheats

Stellaris 4.0 will give Paradox space strategy game a much-needed 2025 overhaul

Stellaris dev says espionage "isn't satisfying," so a rework is on the cards

Stellaris Dev Diary #370 - 4.0 Changes Part 4

by Eladrin

Hello everyone!

This week we’re going to look at the upcoming changes to Pops in the Stellaris 4.0 ‘Phoenix’ update.

Last week I said we might also look at the Planet UI, but I’m going to save that until next week since there’s quite a bit to cover here (especially if you’re into the technical details), and I’d rather not split the feedback.

[h3]Pop Groups and Workforce​[/h3]
As mentioned in Dev Diary 366, the Pop and Jobs system introduced in Stellaris 2.2 ‘Le Guin’ has always had significant performance implications in the late game, and we’ve been working on incremental improvements ever since. In the Stellaris 4.0 ‘Phoenix’ update, Pops will be grouped into Pop Groups based on species, strata, ethics, and faction, and these Pop Groups will produce Workforce that is used to fill (or partially fill) Jobs. As part of this change, we’re changing the overall scale of Pops - most things that previously affected or manipulated 1 Pop would now affect or manipulate groups of 100. The new systems can manipulate any number of Pops within a Pop Group just as easily as manipulating one, and I’ll go into some of the benefits of the finer resolution below.

Our primary desire with these changes is to improve late-game performance, but while working on it we took the opportunity to streamline some aspects of planetary management and improve the planet UI.

Let’s take a closer look at some of the details.

[h3]Workforce[/h3]​
In Stellaris, the core economic loop since 2.2 has been: Pops fill Jobs, and Jobs produce resources.

With the 4.0 ‘Phoenix’ update, we’re making a subtle but important change - Pops will now generate Workforce, which is used to fill Jobs, and planets themselves will produce resources.

At a basic level, this works almost the same way. By default, every Pop generates 1 Workforce, so Jobs are still filled at the same rate. However, this shift is crucial for backend performance improvements, reducing the number of calculations the game needs to make each month.

Example: Then vs. Now​
Before (3.14):
  • Take a planet with 100 Pops working Metallurgist Jobs, where 20 of them have a +10% Production Bonus from a Species Trait.
  • These 100 Pops produce 612 Alloys per month.
  • Every Pop is individually checked - 80 produce the standard amount, while 20 get a 10% Alloy production bonus from their species trait.


Now (4.0):
  • Instead of tracking individual Pops, we track Workforce filling Jobs.
  • Jobs are now filled by 10,000 Workforce (since Pops are scaled up by 100).
  • 8,000 Workforce comes from regular Pops, while 2,000 Workforce comes from the bonus-earning Pops.
    • The species bonus is now “10% bonus Workforce when working Alloy jobs” - those Pops contribute an extra 200 Workforce, making the total 10,200 Workforce. Bonus Workforce is allowed to go over the required Workforce for a job, yielding extra production.
  • If 100 Workforce still produces 6 Alloys, the planet still produces 612 Alloys - same output, different system.


Why This Matters:​
The key benefit is efficiency. Instead of iterating through and calculating production for every individual Pop, the game now only checks once per planet. This makes the system more scalable and improves performance, while still allowing for species based bonuses and modifiers.

Most existing species traits that affect Job production will be converted into Workforce bonuses or planet-based modifiers. As always, the final balancing will be refined through the Open Beta.

There are a few quirks and subtleties about how this interacts with other modifiers - bonus Workforce as a modifier is more powerful than bonus Production due to the two of them stacking multiplicatively rather than additively.

Pop groups are currently split up by Species, Strata, Ethics, and Faction. If you end up in a case where a Pop group is not completely uniform (for example, if 20% of the Pop group are recent refugees and thus happier than the rest), then the differences get averaged across the Pop group.

If none of this feels like it makes sense - it’s okay. It’s mostly a behind-the-scenes change. Jobs require Workforce to fill them, and that’s generated by Pops. We have some ideas about ways to expand upon this in the future, such as replacing part of the Workforce with automation by using a building.

[h3]Pop Growth[/h3]​
With more granular Pop units, we have more ability to support simultaneous growth of Pops on a planet. Each species present on a planet will grow normally, and with the smaller unit size, will grow every month.

This results in several benefits, including multi-species empires not getting their growth dominated by underrepresented species, and also lets us remove the floor on colony Pop growth. This does mean that newly settled colonies will be very reliant on migration to grow their population until they develop to the point where they can support their own Pop growth, and removes a long-running issue where spamming colonies regardless of habitability simply for the minimum flat Pop growth was optimal.

Xeno-Compatibility will pool all species on a multi-species planet together to calculate their growth rate, then split the growth proportionally across the various species.

Assembly works largely the way it did before, except that fractional Assembly will become “microPops” thanks to the finer resolution of Pops. Machine and Organic Assembly will no longer conflict with one another, as the Organic Pops will handle their own growth, while all mechanical assembly will be channeled towards the highest “score” mechanical Pop templates available.

[h3]Colonization and Civilians[/h3]​
Since your new colonies will be extremely reliant on migration from their homeworld until they reach a critical mass of inhabitants where they can begin to support themselves, we’re adding a new population stratum called Civilians (or Residents, for species without full citizenship). These Civilians form the generally content base of your empire, and will trickle out to the colonies, looking for better opportunities. Unemployed Pops will still exist and downgrade through the strata, with unemployed Worker stratum Pops demoting to Civilians over time. This will have an impact on stability, as Civilians are largely content and non-disruptive.

Spoiler: More Technical Details
This is mostly for you modders out there to abuse, but in the new system, “Unemployed Specialist” will technically be a Job - there’ll be one for each stratum. Every Job can have a demotion target assigned to it, and a time.

In our implementation, all of the Specialist stratum Jobs will demote to Unemployed Specialist; Unemployed Specialist will demote to Unemployed Worker, and Unemployed Worker will demote to Civilian as they give up on their dreams of productivity and veg out in front of the holoscreen.


Your homeworld will start with a fairly large pool of Civilians to support your early expansion. We’re a bit worried about early conquest of homeworlds being too easy of a snowball with this increased starting Pop count, so are considering various ways of making it more challenging to take homeworlds in the early to mid game. One idea we have includes having Civilians create impromptu defensive militias to help defend their home, and possibly starting you off with a few Defensive Platforms. Another idea is for aggressively invaded Civilians to take “Resistance” Jobs that they must then “demote” out of over time. The number of Civilians converted to this new Job and how long it takes them to drop out of it would be modified depending on how their people are being treated by their new and old masters.

We welcome your ideas and suggestions.

[h3]Clerks are dead! Long live Civilians!​[/h3]
We’re currently still experimenting with the effects Living Standards have on Civilians (and Pops in general) - it’s likely that more of the Trade generation from Living Standards will be shifted to the Civilian stratum, and production from Unemployed Pops in the old system may also move to the Civilians. This will give them some of the functions of Clerks in the old economic model. In Gestalt empires, they are likely going to be outright named Maintenance Drones rather than “Civilians”.

We’re also renaming the Ruler stratum to “Elites”, so “Ruler” isn’t double-dipping between your Empire’s ruler at the top economic stratum.

[h3]Next Week[/h3]​
Next week we’ll be going through the new Planet UI, and how all of this changes things there.