1. Stellaris
  2. News

Stellaris News

Stellaris Dev Diary #205: Announcing the 3.0 ‘Dick’ Update

Hello everyone!

I hope the word about the release date for Nemesis has already reached you, but in case it has somewhat eluded your perception, here is a refresher:

Nemesis will release on April 15th, and here is the second story trailer:
https://www.youtube.com/watch?v=o86MFZPb_WI

As per usual, our expansions are released together with a significant free update, and this time is no different!

We’re happy to announce that Nemesis will release together with the 3.0 ‘Dick’ Update on April 15th! The update is of course named after author Philip K. Dick, famous for works which inspired, among other things, movies like Blade Runner and Total Recall (which also happens to be one of my favorite movies!).

Why 3.0?
We felt that the changes introduced with the new Intel system and the reworked First Contact system has enough impact on how different the game feels to warrant the change. Early- and mid game feel quite different now, in a very positive manner. Alien empires feel so much more mysterious, and charting the entire galaxy is no longer so easy. Changes like the pop growth system and the addition of industrial districts also felt impactful enough to want us to make the change.

Going forwards, we’re also gearing up to be able to be a bit more agile and deliver updates to the game a bit more frequently. I don’t want to make any grand promises quite yet, but 2021 is looking to be a very good year for Stellaris!

3.0 ‘Dick’ Features:
  • New Intel system
  • Reworked First Contact
  • Reworked Pop Growth
  • New Industrial Districts & some changes to production of Alloys/Consumer Goods
  • New Espionage system & Gather Intelligence Operation (other Operations will be a part of Nemesis)
  • Numerous bug fixes & improvements


Espionage Update
The Espionage system has undergone some changes since the Dev Diaries that previewed them. Based on playtesting and qualitative feedback, we simplified a few of the systems that seemed to be adding unnecessary complexity or were difficult or awkward to understand. The way Encryption, Decryption, and Counter-Espionage all interacted were one of these points of frequent confusion, so we decided to scrap Counter-Espionage entirely, renamed Decryption to Codebreaking, and apply standardized rules when using them:

Encryption is always used as "Espionage Defense"
Codebreaking is always used as "Espionage Offense"

In earlier iterations, which modifier was being referenced varied based on the exact circumstances, which muddled the stats a bit and made it difficult to tell which one would help you more when you're attempting to infiltrate an empire. We renamed Decryption in order to further reduce confusion. Relative Encryption is used often in the system, and will now always compare the "offensive" Empire's Codebreaking with the "defending" Empire's Encryption.

Relative Encryption tooltip. In this example, our Codebreaking is lower than their Encryption and their Codebreaking is higher than our Encryption.

The refined Operations UI. Envoy on the top left, Infiltration Level (current/max) as progress bar & value. Intel categories in the top-right.

We've streamlined the Operations UI significantly, reducing the sheer amount of numbers associated with a network and the Operations themselves. As part of this streamlining, we've removed the concept of spy power and bandwidth, so it's no longer possible to run multiple simultaneous Operations on a single Empire simultaneously - you'll have to run them one at a time. This change also alleviates a problem we had where it wouldn't always be immediately perfectly clear which mission random events were affecting, so the "mental burden" of running Operations is lower.

Upon completion, Operations will now almost always cause a significant hit to Infiltration to represent lost contacts and heightened security. Operations also used to have varying difficulty per chapter - we've standardized them so we can now list the Operation difficulty on the UI, and let you know if you have an Asset that is especially good at this one.

First Contact Update
Although not much has changed with the system itself since we first showcased it in dev diary #193, there’s still some changes that can be interesting to see.



The finished first contact UI. The silhouette in the bottom-right is supposed to be generic, and will reveal a portrait once you’ve progressed far enough into the first contact chain.​

Early hostilities can now lead to pre-contact conflicts as well. If you anger a neighboring alien civilization, there’s the chance that they will come and visit you.

More aggressive empires like fanatic purifiers or devouring swarms are also less likely to take your encroachment into their lands very kindly early on.

Abducting aliens is no longer a risk-free undertaking.

It seems like they weren’t too happy about our abductions…


Outliner Update
We’ve added some small quality-of-life improvement to the outliner. One of these improvements lets you reorder planets in the outliner.

Planets will be reordered within the sector listing or planet listing, depending on which option is active.



The outliner can also be toggled to show the icons for the designations instead of the icon for the planet class.​

With these two options it's now possible to list all your planets as you wish, and to show the designation icons. Our product manager, Simon, can now finally list his Mining 01, Mining 02, Mining 03 etc. planets in the correct, and fanatically organized, order.

---------

That’s all for this week folks! I hope you’re as excited for the upcoming Nemesis release as we are!



Stellaris: Nemesis launches April 15 giving you more power than ever

Ready for the ultimate power? Stellaris: Nemesis will launch on April 15 bringing with it some huge additions to Paradox's space strategy game.

Read the full article here: https://www.gamingonlinux.com/2021/03/stellaris-nemesis-launches-april-15-giving-you-more-power-than-ever

The Stellaris Star Wars expansion drops next month

We've been having a lot of fun learning about the upcoming Stellaris: Nemesis expansion these past few weeks. From building a network of Bothan spies, to reliving that moment in Star Wars: Revenge of the Sith, the new Stellaris DLC is basically turning the space 4X into a Star Wars game, and we're here for it.


We'll be here even more here when Nemesis releases next month in April. The new expansion's release date has been revealed as part of the Paradox Insider event running tonight, which will also feature announcements on Crusader Kings 3 and Surviving Mars.


The headline features include 'becoming' the end-game crises by creating planet destroying superweapons. You can also be voted in as the 'custodian', someone who's granted emergency powers to martial galaxy-wide resources to try and stop this galactic villain. You can then do a Palpatine and keep those powers and create a galactic empire instead. As is tradition, there will be a free patch that will accompany the expansion. We're not 100% sure on where the line is going to be drawn in terms of free and premium features.


Read the rest of the story...


RELATED LINKS:

Stellaris is one dollar

It's official, Stellaris wants to be the best Star Wars game

The new Stellaris DLC will bring your Clone Wars power fantasy closer to reality

Stellaris Dev Diary #204: Scripting Language and Moddability Improvements

"Hi all! I’m Caligula, our resident scripting language magician. As someone who works with our scripting language - both using it and improving it - on a daily basis, I’m very happy to be able to show off some of the new stuff that modders (and us inhouse) will be able to use going forwards, once the upcoming patch hits.

I’ll begin with a rundown of the new features:
  • Espionage: modders can add new operations, much like arc sites
  • First Contact: script driven, so modders can change much of the system, but all first contact is now technically one long event chain, so overwriting could be an issue. Luckily we have a new effect, “fire_on_action”, which has been inserted into various places that should alleviate this
  • Become the Crisis: code features e.g. the interface are all activated by script. So in theory, one could overwrite the whole feature to be whatever sort of progression to a goal you happen to want to mod in.
  • Emperor/Custodian: feature designed by the most experienced Content Designer at PDS. Brought with it many collateral scripting improvements, such as far more flexibility with galcom resolutions and the ability to spawn federation / community fleets via script.


Now, it’ll be exciting to see what modders do with this, but there’s so much more that we’ve done since 2.8 hit, so...

[h3]General improvements and standardisations[/h3]

It would be fair to say that the Stellaris scripting language has grown incrementally according to the game's needs. This is not unexpected - Stellaris itself has grown incrementally. But it has had the side effect that a lot of different people have contributed to it, and so inconsistencies between different implementations have arisen. On the user side, this would show itself in, for example, things which work in one place but do not work in other, equivalent places.

For the upcoming patch, we had time to take a holistic view of certain things and implement some general improvements and standardisations.

A quick win in this regard is what is known internally as "script lists". These are a code system which generates random/every/any/count_whatever_object from a single section of code - guaranteeing that the way that array is built is the same between them, i.e. any_owned_pop checks exactly the same pops as every_owned_pop would execute on. We have been using these for quite a while, but there were still some very old implementations for certain scopes that predated them. The result of this was in some cases confusion - for example, x_pop and x_planet did sometimes radically different things depending on whether you used every, random, any or count (e.g. working in different scopes, sometimes referring to all the objects in the game and sometimes all of those belonging to the current scope...). Disturbingly, it was found that any_ship referred to "any ship in the game" and was in fact used wrong 100% of the time in our scripts. Another result was that in some cases one of the versions (usually the "count" version) was simply missing.

With the next patch, nearly all of the pre-script list implementations have been removed and replaced with script lists. In some cases, the opportunity was taken to clarify what the script list did, e.g. the "planet" script list is now split between "galaxy_planet" and "system_planet". (This will break some mods, for which I am a bit sorry, but not very :D It was worth it, and the patch notes will give details on what changed. In most cases, a batch-replace will suffice. Also, because of script lists, a fair few count_x triggers have changed names to lose an "s" at the end, which is slightly regrettable from a grammatical point of view). Some have also had some functionalities expanded, e.g. owned_pop, owned_planet and system_within_border now all work in sector scope.

A further area singled out for improvement was references to scopes in effects and triggers, e.g. create_pop = { species = }. It turned out that there were quite significant variations as to what in that example could be, depending on the effect or trigger. In some cases, only the species was allowed; in others, perhaps species or leader or country or pop; in others, the same but not pops… In some cases, we even used something called “owner_main_species”, which worked in just those places (unlike “owner_species”, which was the same but worked everywhere…). Our solution was to go through each and every trigger and effect and enforce standardisation - with the same code functions used in each case - for any script call to a species, country, planet, leader, or solar system location. No more shall we be confused that something works in one place but not in another!

This also lets us make sure that errors are correctly (and usefully) logged each time a scripter gets one of these wrong. (N.B. for modders not in the know: the error log can be found in Documents/Paradox Interactive/Stellaris/logs/error.log). In a similar vein, error logging has generally been improved across the whole scripting language. A large number of error messages lacking essential information (e.g. file location) have been updated to include that - as guardian of our overnight testing error logs, I have gone on a personal crusade against useless error log messages. Furthermore, we have fixed a disturbing number of cases where something didn't work but didn't warn you - e.g. doing something wrong in a trigger so it is always false, or messing up an effect so it did nothing. I'm not going to promise that this will never happen anymore, but a concerted effort has been made to eliminate such cases. Modders should expect the error log to warn them of a lot more issues both during startup and during the campaign. This has also made us somewhat more effective in fixing script bugs, since many more are now caught in the aforementioned overnight tests.

[h3]Variables[/h3]

Onto something a bit different. On Stellaris, inhouse scripters and modders alike have long looked with envy upon the capabilities of the newer PDS game engines, compared to our own ability to do maths in script. We did have variables, but their functionality has been a bit more limited than we may have desired. In fact, I’ve seen some of the ways that modders get around their limitations, which have been incredibly motivating to make such horrible scripts no longer be necessary!

In 2.8, the following was possible with variables:
  • You can check, set, add, subtract, divide or multiply variables against values, other variables on the same scope, or the same variable on other scopes
  • You can export various galaxy generation settings as variables
  • You can refer to variables in localisations, but if the variable’s value is 0, it will show as blank because the variable is cleared
  • Variables can be used as a parameter in a handful of places, such as the count in a “while” effect


Quite a lot of improvements have been made since then, and further ones are planned for the near future. In the upcoming patch:
  • You can also check, set, add, subtract, divide or multiply variables against different variables on other scopes
  • There are new effects to modulo (% operator), round up, round down and round to the closest full number
  • A new trigger check_variable_arithmetic checks the value of a variable if you’d perform some arithmetic to it in a certain way, e.g. multiply it by another value or variable (add, subtract, multiply, divide and modulo all work)
  • New effects to export various game values to variables have been added. These are: export_modifier_to_variable (check_modifier_value trigger also exists now), export_resource_stockpile_to_variable, export_resource_income_to_variable
  • add_modifier, add_resource, resource_stockpile_compare now have “mult” parameters where a variable is accepted. So you can scale resource costs and bonuses in effects by a variable now.
  • Variables are no longer cleared when they are 0, but instead when you use the clear_variable effect, so they can be reliably used in localisations.
  • Certain usages of variables now have error logging, in case you try and use one that hasn’t been set.


Additionally, we have started making it possible to use variables way more widely. The idea is that we want to change how simple numerical effects and triggers (i.e. ones which accept a number as the right hand side parameter and do not have any “{ }”) work:
  • Effects should allow you to use a variable, and should grab the number from that variable
  • Triggers should also let you use a variable, and should check themselves against the value of that variable
  • Triggers should by default also let you check them against another scope for which that trigger would work. So “num_pops > from” should check if the current object has more pops than “from” does
  • It should be possible to export the current value of a trigger to a variable via an effect, i.e. “export_trigger_value_to_variable = { trigger = num_pops variable = my_var }” => sets the my_var variable to the number of pops the current scope has.


Unfortunately, it only recently became possible for us to pursue these changes, and while the groundwork has been set for them, they are not yet fully implemented - finishing the Nemesis expansion and accompanying patch has rightly taken priority (the changes are not without danger: it’s a lot of lines of code that have to be modified for it). So consider this a preview for how it will look in the hopefully near future, and in the meantime, the fleet_power trigger already works in the way specified, and export_trigger_value_to_variable is in the patch, albeit working with only that trigger.

[h3]Button Effects[/h3]

Inhouse, we made the UI by assigning a function to buttons in the source code. But there’s also support for interface buttons that you mod into the game. In previous versions, these did not take the scope of the object that they were attached to, so if you added a button to a planet, it would still execute the effect on your country rather than that planet. We have fixed that for a bunch of cases: they will now be able to deduce their interface's planet, fleet, ship, system, ambient object, megastructure, federation, archaeology site, first contact site, spy network or espionage operation. (Incidentally, debug console commands like “effect …” and “trigger …” now work in those same scopes)

Disclaimer: The way it works is a tad hacky and it may be possible to confuse it by opening multiple interfaces at once. I recommend checking “is_scope_type = planet/whatever” in the allow and/or effect sections of the button effect. But the signs are that it should work with no problem in most cases, which is better than none!

[h3]More nice things[/h3]
  • In most places where you could previously use logical operators such as >, >=, =
  • Message types now have their own folder, so mods can add to them without overwriting the file (great for intermod compatibility, and also for modders being able to add QoL without overwriting each other)
  • Messages spawned by the create_message effect now support using loc commands such as [This.GetName] (where “This” is the specified target of the message).
  • Also, since we had to fix a large number of cases where there were references to the “Galactic Community” rather than the “Galactic Imperium”, [ ] locs now work in quite a variety of extra places.
  • The effects “add_victory_score = ” and “win = yes” now exist. I’m sure no one will misuse them.
  • Added new event types: leader_event, system_event, starbase_event, first_contact_event, and espionage_operation_event. Though mean time to happen does not work for any of them at the moment - fixing that wasn’t a priority, as it is generally better to avoid mean time to happen anyway.
  • Hardcoded juggernaut behaviour is now tied to a ship size being a starbase that is mobile, rather than the “juggernaut” key. I.e. mod-made juggernauts are now possible without crippling bugs
  • It’s now possible to hide a static modifier from the list of country modifiers
  • You can check the distance of objects within the same solar system now by adding “same_system = yes” to the distance trigger
  • There’s quite a lot of new on_actions, and you can make your own ones with fire_on_action effect
  • And a lot more.


Finally, I'll leave you with the new trigger docs (as of today), which are now found in their own file down in the forum post here called trigger_docs.log, and which really speak for themselves. Also, don't forget Paradox Insider will premier this Saturday at 8 PM CET (7 PM UK, 2 PM ET, 11 AM PT) on http://twitch.tv/twitchgaming

Get Stellaris and a bunch of DLC in the latest Humble Bundle

Love your strategy games with a bit of spicy space flavouring? Stellaris from Paradox Development Studios and Paradox Interactive has a whole bundle dedicated to it.

Read the full article here: https://www.gamingonlinux.com/2021/03/get-stellaris-and-a-bunch-of-dlc-in-the-latest-humble-bundle