• 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.
Showing developer posts only. Show all posts in this thread.

Wizzington

Game Director (Victoria 3)
Paradox Staff
41 Badges
Nov 15, 2007
12.865
152.675
  • Hearts of Iron II: Armageddon
  • Rome: Vae Victis
  • Victoria 2: Heart of Darkness
  • Victoria 2: A House Divided
  • Sword of the Stars II
  • Sengoku
  • Europa Universalis: Rome
  • Victoria: Revolutions
  • Europa Universalis III Complete
  • March of the Eagles
  • Majesty 2
  • Magicka
  • Heir to the Throne
  • Arsenal of Democracy
  • Crusader Kings II
  • Darkest Hour
  • Europa Universalis III Complete
  • Deus Vult
  • East India Company
  • Europa Universalis III
  • Divine Wind
  • For The Glory
  • Hearts of Iron III: Their Finest Hour
  • Hearts of Iron III Collection
  • Prison Architect
  • Shadowrun: Hong Kong
  • Shadowrun: Dragonfall
  • Shadowrun Returns
  • Stellaris: Humanoids Species Pack
  • Stellaris: Synthetic Dawn
  • Stellaris - Path to Destruction bundle
  • Stellaris: Leviathans Story Pack
  • Stellaris Sign-up
  • Stellaris: Galaxy Edition
  • Stellaris: Galaxy Edition
  • Stellaris: Galaxy Edition
  • Mount & Blade: Warband
  • Magicka: Wizard Wars Founder Wizard
  • Crusader Kings II: Holy Knight (pre-order)
  • 500k Club
  • Victoria 2
Hello and welcome back to the Stellaris dev diaries! Today we're going to start talking about the next major update, which we have dubbed 2.2 'Le Guin' after Ursula K. Le Guin. Right now we're not ready to reveal anything about the precise nature of the update or whether it is accompanied by any DLC, other than to say that the Le Guin will have focus on trade and the economy, and that its release date is far away. Today's dev diary is going to be a bit on the foundational side, going over the new economic back-end we've implemented for 2.2.

New Economy System
The original economy system for Stellaris has always been something of a limitation for us. It's a sort of hybrid system, with resources being both scripted (and thus accessible to modders) and hard-coded (and thus inaccessible) in about equal measures. For example, under the old system ships would always cost minerals, as the code was set up for them to always cost minerals, and the only thing you could change was the amount of minerals they cost. Similarly, most things in the game that had an upkeep were hard-coded to use energy for upkeep, and again, only the amounts were able to be changed. A few things (such as for example Resettlement or the precise resources produced by a building) were more open than this, but generally the system made it quite hard to introduce new resources or change the way a particular empire might use a particular resource. The old system was also quite performance-intensive.

When we decided that we wanted to make the next major update be about the economy, the first thing we knew that we needed to do was to rewrite this system entirely. For the new system, we set out a number of goals:
1: The new system should make it easy to add new resources and swap the way resources are used
2: The new system should be as open to modding as we possibly could make it
3: The new system should improve performance

From this, we've created a new system that we call Economic Templates. Where previously there would be a jumble of different systems for how cost, production and maintenance of the different features in the game would work, there is now one unified system. Any single object in the game that can be owned by an empire and have an impact on the economy is called an Economic Unit. In the database files, an Economic Unit looks like this:

Code:
resources = {
    category = armies
 
    # Normal empires pay for armies with minerals
    cost = {
        trigger = {
            owner = { is_hive_empire = no }
        } 
        minerals = 100
    }
 
    # Hive Minds pay for armies partially with food
    cost = {
        trigger = {
            owner = { is_hive_empire = yes }
        }     
        minerals = 50
        food = 50
    }     

    # If Barbaric Despoilers, produce Energy while on enemy planets
    produces = {
        trigger = {
            owner = { has_valid_civic = civic_barbaric_despoilers }
            planet = { owner = { is_at_war_with = root.owner } }
        }
        energy = 3
    }     
 
    # Normal empires pay army upkeep with energy
    upkeep = {
        trigger = {
            owner = { is_hive_empire = no }
        }     
        energy = 1
    }
 
    # Hive Minds pay army upkeep with food
    upkeep = {
        trigger = {
            owner = { is_hive_empire = yes }
        }     
        food = 1
    }     
}

For those who cannot read our scripting language, this is an example I just created of how the new system can be used. It's for a regular assault army, which normally costs 100 minerals to build and has an upkeep of 1 energy, just as before. However, if your empire is a Hive Mind, the army will instead cost 50 minerals and 50 food, and costs 1 food in upkeep instead of 1 energy. Additionally, if you have the Barbaric Despoilers civic, armies that are located on enemy planets will produce 3 energy/month, paying for themselves and then some through wide-scale looting. This isn't an actual example from the internal build, but something I just created while writing this dev diary to show the possibilities that the new economic system opens up for for both us and modders - we could have fully biological empires that use food instead of minerals to build infrastructure, ships that produce research while in certain systems, leaders that give Unity... the possibilities are endless.
2018_08_09_1.png


Advanced Resources
With this system in place, we've been able to add several new 'advanced' resources to the game. They are as follows: Alloys, Rare Crystals, Volatile Motes and Exotic Gases. These resources are either manufactured from basic resources or found in rare planetary deposits (or both!) and are used to construct more advanced things in the game, such as ship components, megastructures, certain buildings and so on. There is also still a number of strategic resources such as Dark Matter and Living Metal that provide unique benefits, though precisely how many of these we will keep and how they are used is something we're still in the process of figuring out.

As part of these changes we're also in the process of reworking the top bar. Since we will now have rather too many resources to show them all, the top bar will now only show individual entries for resources that are important for your empire to always keep track of, with the rest shown as a consolidated entry that can be tooltiped for greater detail. Science is also consolidated into a total output of all 3 sciences, with tooltip showing the individual production of each. We're going to ensure that only relevant resources are shown individually, so most Machine Empires wouldn't have Food appear as an individual entry in the top bar, for example. We're also considering letting the player manually override this and decide which precise resources they want to keep track of within the available topbar space.

(Please note that the new topbar is nowhere near final and will have some ugly graphical issues. This is not how it will look on release)
2018_08_09_2.png


That's all for today! I know this dev diary was rather technical and perhaps primarily of interest to modders, but I felt it was important to explain the fundamental changes that have taken place in the game's back-end, both in relation to the changes coming in 2.2, and the possibilities that this opens up in the future for having empire types with radically different approaches to resource production and consumption. Next week we're going to finally start talking about the new Planetary Management system. See you then!
 
Very nice! Just to be clear - will barbaric despoiler looting be an actual thing? You said that it's not in the internal build, but IMO it would actually be pretty cool if it were.

It's something we're considering doing, this particular case was just an example though.
 
So these still function like current strategic resources? I.e. no stockpiling?

As I said, we're still figuring out exactly how strategic resources will fit into the system, so more on this in a future DD.
 
You really want to make me fall in love with the game again, right?!

Really excited for the update and future dev diaries, the Twitter teasers really make me want to know more.
For what we have seen, this seems to be a very good direction for the game!

Question time!

Are all land armies now the same, since we only have one 'armies' bloc?
Can we still have multiple types of land units? If so, can we still modify what resources they need to build?

All armies are not the same. The 'armies' tag in the resource unit tells the new economy system where it should apply costs, discounts, how it should organize the tooltip, etc. These tags can be dynamically scripted and will automatically generate modifiers, etc, so you can have modifiers that only apply to certain types of armies, for example.
 
I have only one question - with all that changes that coming can we expect more differences in how different empires with different ethics build their economy and society?

Yeah. More on this in future DDs.
 
This isn't an actual example from the internal build, but something I just created while writing this dev diary to show the possibilities that the new economic system opens up for for both us and modders - we could have fully biological empires that use food instead of minerals to build infrastructure, ships that produce research while in certain systems, leaders that give Unity... the possibilities are endless.

There's a key question for how open this is to modders - how does overwriting work? I assume that you will have to overwrite the whole entry, which means that only one modder at a time can do it. This means the possibilities are far from endless! But it would seem to me that this could be done in a way that there is a "default" for each economic template and additions are additive like with on_actions (only based on the triggers, in the case where they overlap the first is read), unless you actually overwrite the default or the key for one of the other Vanilla specifications.
 
Last edited:
The amount of refactoring this had to require has got to be very, very scary.

We basically deleted almost the whole old system and made a new one. One of our programmers has been plugging away at this for quite a while.
 
I guess what you mean is like the HoI 4 Division tag categories?
Code:
categories = {
    category_front_line
    category_light_infantry
    category_all_infantry
    category_army
}
Where specific modifiers target "all Frontline", while others only target light infantery (foot infantery)?

You only have one category, but categories can have parent categories, so you could have a light_infantry tag that has armies as parent, light_infantry would only affect it and armies would affect it as well. This is also used to generate more cohesive tooltips even if you have a myriad of economic tags.
 
Am I right in thinking that this means we could conceivably move towards non-carbon based life populations? Have an empire of silicates whose pops eat energy or minerals instead of food?

Yeah, this wouldn't even be hard to do now.
 
My utmost concern is that the system will be a soft cap, rather than hard cap. To prevent situation so common in Civilization series when if you have no access to horses and Iron and your neighboor have then you are screwed.

The market will ensure that it's always possible to get your hands on fundamental resources that you need for things like ship building, though it might end up quite expensive. More on that in another DD though.
 
This will probably be answered in that market DD, but will the market be more than just some buttons to magically transmute one resource into another? Will it be connected to the other empires in the galaxy?

Yes, it will. More on this later.
 
The problem is that every other amount looks like that the game is just started, but this doesn't look so either.

I console cheated myself a second planet to have some crystal production. Any oddities like that is usually the result of me setting up the screenshot I want.
 
I wonder how well the new economic AI can analyze a highly moddable economy. Say it wants to build ships. Can it understand that it needs to build up all the prerequisite resource generators and the generators for those generators, in sufficient quantity, whatever they may be? Or even adjust its ultimate build goals based on availability of basic inputs at the other end of the production chain?

I'm making a new, far more scriptable economic AI so that it can be changed to handle new resources without needing to tweak code.
 
If it’s moveable in game, thought, it might just be an adjustment I could make at each beginning of the game...

@Wiz If we have a big screen and more UI real estate will we be able to fill up the top bar with single resources?

I really can't stand hiding things behind tool tips when my version of stellaris has two more whole resource bars worth of blank space to fill.
ATM this can be achieved with simple UI mod but who knows it might be added functionality to do it in game.
To let mods get more control over the resources in the topbar there is additional script possibilities to setup the behavior of the gui elements through name matching ex:

(single_resource_groups.txt)
Code:
...
alloys_group = {
    resources = {
        alloys
    }
    localization = {
        "RESOURCE_GROUP_DEFAULT" = default
        "RESOURCE_GROUP_DEFAULT_NEG" = { balance < 0 }
        "RESOURCE_GROUP_DEFAULT_MAX" = { stored >= max }
    }
    onclick = government
}
...

(research_resource_groups.txt)
Code:
research_group = {
   resources = {
       physics_research
       society_research
       engineering_research
   }
   localization = {
       "RESOURCE_GROUP_RESEARCH" = default
   }
   onclick = technology
}

(main.gui)
Code:
...
containerWindowType = {
    name = "alloys_group"
    background = { ... }
    ...
    instantTextBoxType={
        name = "amount"
        ...
    }
}
...
dropDownBoxType = {
    name = "research_group"
    ....

    instantTextBoxType={
        name = "amount"
        ...
    }
    expandedWindow = {
        ...
        gridBoxType = {
            name = "resources"
            ...
        }
    }
}
...
 
Is it possible to do mathematics operations on the values?

The use case for me is for Unity - i am totally not interested how much raw unity I make per month, because how much 10k of unity is worth varies vastly depending on whatever i am playing tall or wide. I would much more prefer to see some normalized value, e.g. how much % per month my empire makes till the next tradition unlock. So I would need be able to do something like this: value = monthly_increase/cost_of_next_tradition point*100
No there is currently no support for modifying the value itself more than what you can do with the format in the localization files.
I might have some spare time somewhere that i can use to investigate.
 
How performance-intensive was the old system? Twitter teasers reveal that you've completely redone not only the resource system, but entire economy and population - do you have any idea if the rework will have a noticeable impact on game performance, especially late game lag?
Kinda arbitrary, old system was not that performance heavy in my opinion (yeah i was the one rewriting it). but it scaled poorly by design but i do not think it was any major culprit for the late game tbh
Would it be possible to have different sections of a same ship type cost different ressources? Like for corvettes, you could have the normal missile boat (1 small, 1 missile) and a more advanced version that would cost some kind of extra ressource that give (2 smalls, 1 missile).
Sure you can, but why not have 2 different sections in that case?