1. Stellaris
  2. News

Stellaris News

Federations and 2.6.0 Verne Update are now live!

Hi everyone!

Today marks the release of Stellaris - Federations and the free 2.6.0 "Verne" update! We hope you are as excited as we are and that you'll enjoy the new content as much as we do.



Like we mentioned in last week's dev diary, we will also be putting 2.6.1 as a beta version. If you want to read the full patch notes for 2.6.0 as well as 2.6.1 it can be found in the dev diary above.

[h3]
2.6.1 Beta Information[/h3]
Please note that 2.6.1 is an optional beta patch. You have to manually opt in to access it. Go to your Steam library, right click on Stellaris -> Properties -> betas tab -> select "stellaris_test" branch. The beta should have checksum [65d2].


Save games shouldn't be adversely affected by the switch from 2.6.0 to 2.6.1, but just in case you do encounter issues, you can roll back to a prior version via right click on Stellaris in library -> Properties -> Betas -> choose the desired version.

We hope you will be having fun with this one! We will be eagerly awaiting your feedback and reactions!


Get your copy of Federations and watch the release trailer down below!

https://store.steampowered.com/app/1140001/Stellaris_Federations/?utm_source=fb-owned&utm_medium=social-owned&utm_content=post&utm_campaign=fede_stpc_20200317_ste_rel&fbclid=IwAR3MOENe9EuZRaDGDeM3tTzbkVtBSLZBLN7FcWgsTnlwUtdP8I2PblevxZY



Stellaris Dev Diary #173: Federations is soon upon us! (and patch notes)




Hello everyone!

In a couple of days we will finally bring you Federations, an expansion that we’ve worked incredibly hard on for quite a while now. We’re extremely excited to get it into your hands and see what you all think of it!

I’m posting today to bring you the Patch Notes for 2.6.0 (Verne). But before I do that, I want to talk a bit about something we’re doing a bit differently this time around. In game development there are several milestones and key dates that you need to hit to make sure that a game is made. That’s where the Producer (that’s me!) comes in to oversee that things are done in a prioritized manner (within the time/resource constraints we have) and as we get closer to what is called a “Release Candidate” (RC), we have to be as certain we can that we don’t add things that could risk the stability of the version we will put out into the public.

So what did we do differently this time around? The RC we created was ‘frozen’ earlier to ensure an as stable build as possible. Because once an RC is frozen, it is sent to QA for rigorous testing with not only our in-house testers, but also our outsourced partners. Scheduling this requires weeks (sometimes months) of advanced notice, so it’s not something we take lightly. So during this time of testing, we need to limit the amount of times we send them a new RC. Because, a new RC means the testing needs to start over and all the previous testing would have been wasted!

But as everyone knows, especially you guys, a build is never bug-free. We could work on Stellaris on now until forever to fix every bug imaginable, and there would still be a typo in a tooltip somewhere. That is the nature of our industry and software development in general. Which means that after the RC was frozen, we found some issues that we wanted to fix but didn’t want to risk the overall integrity of the RC and put in.

Which brings me to “branching”. Since there were still bugs to be fixed and features to be balanced, we “branched off” from the RC and started working on the first patch we plan to release. That patch is something we would love to get into your hands as early as possible, but as I mentioned before, stability and integrity of a build something that’s extremely important to us. So instead of putting the patch live immediately, we will be putting 2.6.1 as an opt-in beta! Which means that those of you who want to check it out early, will be able to do it on release day.

I hope this has given you some more insight into the inner workings of game development, and if you want to know more feel free to ask questions about our processes (or request another Dev Diary ;) ) !

Please note that 2.6.1 is an optional beta patch. You have to manually opt in to access it. Go to your Steam library, right click on Stellaris -> Properties -> betas tab -> select "stellaris_test" branch.

Also note that save file compatibility between versions is not guaranteed. If you have an important 2.5.0 game going, don't try to load the save in 2.6.0 or 2.6.1.

But without any further ado, if you wanna read the full patch notes as well as added features, have a read here!
And last, but not least, here’s the feature breakdown video for Federations!

https://www.youtube.com/watch?v=0hI9jUsW4gs&feature=emb_title

Stellaris Dev Diary #172 - Reworking the AI

Bonjour everyone, it’s the French Paradox speaking! For those who don’t know me, I’ve joined the Stellaris team this December after a year and a half as a programmer on Europa Universalis IV.

Today, we are gonna talk about AI.


A good introduction for those new to the field

[h3]Fifty Shades of AI[/h3]
There are several AI modules in Stellaris. For historical reasons we call them “ministers” as each one is supposed to handle a specific role in an AI empire.

There are 3 broad kinds:
  • The AI foreign minister handles diplomacy, federations, galactic community, peace deals and the like
  • The AI interior minister is in charge of the economy. He keeps budgets and order constructions, both civil and military.
  • The AI military minister is in command of all troops and military fleets, and also responsible for laying out strategic plans when at war.

For each of those ministries there are different “ministers” there are several options that can be selected for every empire in the game. All of those have generic one which behaves more or less like we’d expect a player to and is used for most AI empires. Then we have a bunch of specialized ones for special tags such as space monsters, fallen empires, crisis, marauders and the like.

As almost everything in our games, AI is configurable in script for our modders, although I’m not exactly sure what would happen if you assigned a space monster military AI to the caravaneers ;)

In guise of a welcoming gift when I joined the team, I was tasked with reworking the military one...

[h3]The Military AI[/h3]
To give you a little bit of background, there were several generations of military AIs in Stellaris. The generic one (used by most “classic” empires) was redone by the great @sidestep last year, while the more specialized ones (crisis, space monsters) have kept close to what they were on release. In the midst of the sad and dark swedish winter, I managed to bring some improvements that I’ll showcase today.

First of all, I worked on visualization to help us debug how the AI “thinks”. Funny thing is, it already made it look “better” to audiences even if it didn’t actually change any behaviour. It’s actually something that’s been observed in video games: a good AI tells you what it does, which makes it look smarter. One of my favourite examples of that would be the enemies in FEAR.

So by typing 'debug_ai' in the console and observing an AI empire, you can see what it has in mind:


“I don't even see the code. All I see is blonde, brunette, redhead. Hey uh, you want a drink?”

As a simple analogy, imagine that the AI has a war minister that looks at the big picture and rates every potential target, a general staff who assign fleets to some of those objectives, and then admirals who try to lead those fleets on a tactical level to achieve those objectives...

Wanna read more about the AI rework? Check out the full post in our forum
here!


Stellaris Dev Diary #171 - Federations Stream

Hello everyone!

This week we’re back with another dev diary! We apologize in advance for it being a shorter one, but don’t worry, we aim to make up for it with a stream!

Later today at 17:00 CET we will be hosting a stream over at Twitch where we will be talking about Federations and showing off all the features in more detail (such as all the federation perks). We will also be announcing the release date for the Federations expansion and showing off a cool new trailer!

If you have things you want us to show on stream, please don’t be afraid to mention them here!

See you on the stream!

(This post will be updated with more information during the day)

Stellaris Dev Diary #170 - Performance and other technical issues

Hello, my friends! This is Moah, Tech Lead of Stellaris typing. I can finally talk about what you’ve all been waiting for: How many new platypi will there be in Federations? After weeks of…

Well, apparently, I should be "more technical." But before we jump into the mysteries of the Stellaris code, I want to take the time to talk a little about the balance between adding new features, improving performance and stability – especially in terms of multiplayer and the dreaded out-of-syncs (dreaded at least by me).

The Delicate Balance

Stellaris, like most decently sized code bases, is like a complex game of Mikado or Jenga: every part is connected in some way to every other part. When you add a feature, you add more connections. If you’re careful, you add only a few, if you’re in a rush you add a bit too many. This generally leads to Unplanned Features (aka bugs). In addition, once we see them perform in the actual game, we tend to expand features in new, unexpected ways, leading to more Unplanned Features(tm).

Once we realize what is happening, we start being more careful. Maybe too careful. Checking too many things, too often, ensuring that this interaction that is supposed to never actually happen is actually not happening. Not now, not later. Not ever.

So you have removed the unplanned features, but the game is a bit, ah… too careful. Some would say slow.

So you remove some of these checks. You realize that you don’t need to loop around the galaxy, you can just loop around this one tiny planet. Then you go one step further, and think “well I can maybe do that check only every three weeks, and this calculation needed by all these checks, I could store it in here and reuse it until the next time it changes.”

So now the game isn’t so careful anymore, we’re back in unplanned feature territory. But if the caching (storing/reusing calculations) happens at different times on different machines, you get slightly different results (like asking a developer for something before and after they had coffee).

Slightly different results are what OOS thrives on! Clients and servers have 0.0001 cost difference, compounded over time, that corvette is bought on the server but not on the client.

So you remove your “smart” algorithm. You replace it with the correct algorithm. You lose half of what you gained in step 2 and reintroduce some bugs. Probably.
Rinse and repeat.

But enough about my morning routine! Let’s talk about…

Performance

Stellaris fans are like C++ programmers: performance is always on their mind. To be fair, it has also been on ours a lot lately. We know that it’s not all that it could be, especially in late game and with the bigger galaxies. With that in mind, we’ve taken time to improve performance in a bit more depth than we usually can. We looked at what was taking the most time, and as everyone knows that is…




[h2]Pops.[/h2]
There are many reasons why pops consume a lot of time in Stellaris, but the main one is that by endgame we have SO MANY of them. SO So so so so many. And they do so much! Pops have to calculate how good they’d be at every job (they do so every 7 days). Then they have to fight every other pop on the planet to get the job they’re best at. They also have to check if they could have a specific ethic. If they could join a specific faction. How happy they are. How happy they could be. How happy they would be on that planet over there.
All these things trigger modifiers calculations. If you remember my last dev diary, you know that modifiers are the only thing more numerous than Pops in Stellaris. And they all depend on each other. Calculating them is like pulling on a thread and getting the whole sweater.


[h2]OK, but what did we actually do about it?[/h2]
Well first, I’ll admit I may have been a bit pigheaded on the whole “we need to do the jobs distribution every day because we don’t know when new jobs are added.” We reexamined this assumption, and jobs distribution is now only done on demand. It was also rewritten to iterate over a lot fewer things.

We also noticed a few triggers going through every pop of an empire to check if one or more are enslaved, decadent, or other things that can be tested at the species level. So we made new triggers to test these things at the species levels. In the same spirit, we had events going through every ship to find a fleet, so we added triggers at the fleet level.

Second, We’ve also reworked the approach to checking if pops can change ethics (and also made it work again), or if they can join factions.

Finally, we’ve looked for (and found) opportunities to use more multi threading.

But enough talk! What’s the result? Well, if a picture is worth a thousand words, here’s the answer at 30000 words a second:

https://www.youtube.com/watch?v=9SFE89Wj8go&feature=emb_title

The video compares the performance of 2.5.1 “Shelley” to 2.6 “Verne'' when running a save game from the community, which can be found attached to this post, with over 20000 pops. It was recorded on my work computer (Intel Core7-7900X @ 3.30Ghz, 10 cores and 20 threads, and AMD R9 Fury). You won’t necessarily get the same results, the exact difference in performance will vary with your computer, and the exact situation in your own save games, of course. On average, we’ve found something between 15% and 30% improvement in late game situations. This save is just ideal to showcase the impact of the pops improvement.

You wanna find out more about the performance improvements? Have a read here !