1. Victoria 3
  2. News

Victoria 3 News

Dev Diary #105 - Migration in 1.6



Hello! I’m Alex, one of the system designers on Victoria 3 and I’m here to tell you a bit about what changes we have been planning for Migration in 1.6. I have also conscripted volunteered one of our programmers, Konrad, down from the code mines to give us some of the nitty gritty details about what’s going on.

[h2]Goals for the changes[/h2]
To begin with I’d like to clarify what the goals for these changes are, and (importantly) what they aren't. Unlike say the military rework, the goal here isn’t to completely change the gameplay surrounding migration. In fact, gameplay should feel somewhat similar, particularly if you don’t know the exact details of how it used to work.

So what is the purpose of this? Primarily, it’s about performance. We hear your concerns about mid- to late-game pacing and we’re constantly looking for opportunities to improve how well the game runs. Part of that is making small optimizations here and there, caching this or that value, pushing how much we can run in parallel and so on. Another aspect of it is looking at what design decisions we have made and considering if we can change them so gameplay still works but the mechanics are more performance-friendly.

These changes fall into the second category. In the current version of the game, migration works by regularly splitting Pops up and moving the pieces all over the place, which of course results in a higher number of Pops and worsened performance as the game goes on. In 1.6 we avoid splitting Pops for migration as much as possible so we can keep the number of Pops down.

On top of performance, another reason we are doing these changes is to make the system more maintainable and easier to work with in the future. The new implementation is simpler to understand when you are working with it which is a big plus for us, and incidentally should also make life easier for modders!

Finally, we also wanted to take the opportunity to sneak in some QoL and UX improvements while we were at it, which you’ll find towards the end of this dev diary.

[h2]General Concepts[/h2]
Before I go into details below, it’s important we are on the same page for what different terms mean and how they work. Migration in Victoria 3, as you might know, comes in two main forms: Market Migrations and Mass Migrations.

We also took the opportunity to fine tune the wording on a few of our concepts!

Market Migrations happen exclusively within your market and are largely due to economical factors in a Pop’s life. Mass Migrations on the other hand are the mechanism for Pops to migrate between different markets and have a stronger cultural focus.

How we select where people go and how many people move is highly dependent on the Migration Attraction a state has. This is a metric which indicates how much people want to move there due to factors like available employment, arable land, trade and so on. When migration attraction is used, what matters is the difference in migration attraction between two states and not the absolute value in a vacuum. It is also worth noting that migration attraction can change fairly quickly and in particular if a state receives a lot of migration, its migration attraction is likely to go down which then leaves room for other states to receive migrants.

Finally, you will often see mentions of terms like “Pops”, “number of Pops”, “Population” and so on and it is good to understand the difference between them. A Pop (also known as a Part Of Population) is a segment of a population with a specific job, culture, religion, living in a particular state and working in a specific building, e.g. Swedish Protestant engineers working at a Tooling Workshop in Stockholm. The number of Pops is how many different unique Pops we have in a building, state or even the whole game. This means that if the Tooling Workshop above employs both Swedish and Norwegian engineers, then the number of engineer pops in that building is two. Lastly, population is how many individuals we model through the use of Pops. The Swedish engineers above might be 5000 people large for instance.

These general concepts remain unchanged between 1.5 and 1.6.

You might notice the mention of a new concept: Mass Migration Attraction. We’ll go into what that means further down in the dev diary.

So, what has changed?


[h2]Pop Selection[/h2]
On a very basic level what you need to know about how the system used to work is that we’d pick small portions from a lot of Pops all over the place and then move them around between states. In other words, migration as a system was taking consolidated larger pops and turning them into a larger number of smaller pops, which is bad for performance.

What we instead are doing now is that when we pick people to migrate, we try to pick as many “whole” pops as possible, sort them from smallest to largest and start sending them to new states. When they arrive we attempt to merge them into existing local Pops. Sometimes we still need to fragment pops, for instance if they’re too large, but we try to do so with more restraint.

[h2]Migration Destinations[/h2]
Previously, pops would migrate to essentially any state that seemed attractive enough and that would allow them based on your Migration and Citizenship laws. This led to a very spread out many-to-many migration system, which again, coupled with the Pop Selection system resulted in more pop fragmentation.

In the new system, we only allow pops to migrate to states with a so-called Cultural Community for the culture that pop belongs to. If there are multiple available cultural communities, we send migrants to all states within a certain margin of the highest migration attraction state, distributing them according to their migration attraction and if they’re actually able to take in that many migrants.

I’ve heard that Michigan is lovely this time of year. Maybe we should create a Swedish cultural community there?

[h2]Cultural Communities[/h2]
If you played the 1.5 open beta, you might recall when we tried introducing some of these changes (and how it accompanied some… interesting bugs with pops ignoring migration laws and all that). One of the changes was this notion of Cultural Communities. The idea is for them to model that you are more likely to migrate somewhere you know people of your culture already live in. You can of course move somewhere completely new, but that is not as common.

Do you tend to look through the in-game concepts like this one often? Did they help you when learning the game? We’d love to hear your thoughts!


Cultural communities exist everywhere there is at least one pop of a given culture. Additionally, every month there is a chance for a new cultural community belonging to a culture in your market to spawn in one of your states. If no one of that culture moves to that state, the cultural community disappears after a few weeks.

It is important to note that the relevant factor for performance is not the size of the population, but rather the number of Pops. This means that if the migration mechanics produce more homogenous results, we end up with a better performing game without having to compromise on the fidelity of the other aspects of the simulation (employment, pop consumption, population growth, qualifications, etc) at all. Since the concern we've heard from players previously is not at all that the simulation produces too homogenous results but rather a sometimes immersion-breaking mix of pop cultures in any given state, this system lets us scale down the average number of cultures present in each state.

If you are into modding, the weights and conditions for cultural communities to spawn are completely customizable through a script value that runs every month for every combination of state and culture in a market. I’m looking forward to seeing what you come up with!

[h2]Mass Migrations[/h2]
Mass migrations used to be more tightly coupled to market migration in 1.5. For 1.6 they work more in parallel having their own limits and conditions. Essentially, when evaluating if we should spawn a mass migration we go through the following steps:
  1. For every culture, go through the countries where that culture has homelands and calculate the chance for a mass migration to spawn from there. This includes filtering out countries or cultures that don’t fulfill the requirements for mass migrations, like having enough cultural turmoil or actually allowing migration to happen
  2. Pick one of the eligible countries above as the origin for the mass migration
  3. Calculate the Mass Migration Attraction for that culture to migrate to all different countries. This is the average migration attraction of the eligible states in the target countries.
  4. After adding a small random factor so we don’t send all mass migrations to the same place, pick the country with the highest Mass Migration Attraction
  5. Go through the eligible states in that country and pick the one with the highest migration attraction (after adding a small random factor)


After all this we spawn the mass migration for the selected culture and country we picked in step 2 to the state we picked in step 5.

You might also have noticed that we now mostly display migration as a weekly value, instead of an annual one. The reason is that migration can change pretty quickly between weeks which used to make it confusing or even misleading when we focused on the annual value.

At this point, similarly to market migration, we select pops we want to move, trying to prioritize smaller whole pops and send them on their way to their new home. We do keep track so we don’t send too many people from any one state or to any one state so we neither depopulate nor overwhelm states during mass migrations.

Results

So how did all these changes turn out? For now our own tests have given us positive results with a reduction of around 15-20% in the number of pops towards the end game. This comes both from a reduction in fragmented pops, but also in pops getting more concentrated in which states they are sent to, which also leads to somewhat fewer buildings overall.

For all you gamers economists out there, in this case line go down is good!

New shiny UX improvements

I bet you’re thinking “What about the UX improvements you mentioned though? Give them to me!”. Also hello to all of you impatient readers who skipped through the details right to the shiny screenshots and UX changes. As mentioned, with the migration changes we wanted to also make the system a bit more accessible from a UX perspective as development itself showed there was a lot of information that felt way too hard to access and understand given how important it is.

One change I personally am quite a fan of is that we now clearly display if a state can actually receive a mass migration now:

Who’d ever want to go to Rhode Island of all places?



If you are wondering about what the requirements for this are, they are now displayed in the updated concept for Mass Migration targets:



These requirements are not new, we just haven’t properly exposed them before.
It can of course be tedious to check states one by one if they are eligible for mass migration, so we also added a map mode that shows you this:

Remember to integrate your states if you want them to get any mass migrations! Also, it’s probably a good idea to make sure they are properly connected to your market..

While we are on the topic of map modes, we have also added a map mode that tells you roughly what country is most likely to receive a mass migration:

The New World displaying its promise for greatness in bright green!

This map mode also includes a new concept for Mass Migration Attraction:

Can’t get a mass migration if you’re so small people can’t even spot you on a map

Something I’ve felt has been missing from the game for a long time is a map mode that shows you where people are actually moving, rather than where there’s high migration attraction. We have that now!

What’s up with Idaho, though?

Finally, we also reworked the old migration attraction map mode so it only shows states in your market, rather than the whole world. This should better communicate the difference between market and mass migrations as well as show you where in your market people are likely to move to and from:

Now you should be able to more clearly understand the migration flow in your market even in other countries.

For the modders out there, you’ll find we also restructured, renamed and removed a bunch of defines (this is your reminder to update your mods when 1.6 drops):


Next Time

That’s it for today! Hope you enjoyed reading about how we’re working with migration and that you are looking forward to playing with these new map modes and other improvements when free update 1.6 releases on March 6! If you can’t wait until then, the next dev diary (two weeks from now) will have the full changelog for 1.6, which will include all the other things we've done outside of migration and UX improvements. See you then!

Dev Diary #104 - Quality of Life improvements in 1.6



Hello and welcome to this Dev Diary that will mainly focus on the Quality of Life improvements we will add to the game with 1.6. The improvements for this update are mainly focused on three areas: Diplomacy, the Outliner and the Census Data panel, with some additional bug fixes and improvements sprinkled on top.

[h2]Diplomacy[/h2]
The “Start Diplomatic Play” popup has gotten an overhaul that should make it much easier to get an idea of how likely any Country is to side for or against you. The “Relative Preference for Country” tooltip has also been polished up. It now gives you more information on the first level of the tooltip, which in turn should make it clearer which factors go into the AI’s decision making process.



The tooltip for a Country has gotten completely reworked to include better contextual information, more data and clearer information hierarchy.



The Country details panel has gotten a slight tweak to the layout, which makes it possible to see both the Country’s Attitude towards you, and their current Strategies at a glance. Since these factors are important in the AI’s decision making process, having them more easily accessible should help make a Country’s behavior more comprehensible.



The Diplomacy Map Mode has gotten a new Map Marker that shows any ongoing Pacts you have with that Country, their Attitude towards you and Relations (+ any eventual rate of change)



Diplomatic Pacts have been reworked to more clearly state what could cause them to break. This change is also reflected in the “Pact has broken” Notifications, making them easier to understand.



[h2]Outliner rework[/h2]
The Outliner now has tabs (Pinned / Economy / Politics / Diplomacy / Military / All). Most Outliner items also had a design pass, and most of them now show some additional information. We have also added a new Outliner item for Countries, showing their Rank, Attitude towards you and Relations.

In addition to these changes, you are now able to unpin Political Movements, Diplomatic Plays etc, giving you more control over what is shown in the Outliner. We have also added an option to move the Notification feed to the left of the Outliner, similar to what Nugget’s mod “Notifications not over Outliner” does.



Notifications are now color-coded to give you more information at a glance.



[h2]The Census Data panel, formerly known as The Pop Browser[/h2]
In the previous Dev Diary we introduced the Pop Browser (which has been renamed to the “Census Data” panel, based on a suggestion by forum user Buladelu). Since then we have also added Literacy, Job Satisfaction and Needs as columns in a second “page” in the spreadsheet. The common suggestion of visualization of Interest Group membership sadly had to be postponed to a later date due to implementation difficulties and performance concerns. You can of course still see which pops are part of an Interest Group through the Population tab and on the relevant Interest Group details panels, like before. For upcoming updates we are looking at the feasibility of implementing similar screens for other central types of data, with Buildings, States, Countries, and Goods currently being in the very earliest stages of planning.

Showing columns for Radicals, Loyalists, Standard of Living, Political Strength and Interest Groups

Showing columns for Literacy, Job Satisfaction and Needs

[h2]Misc improvements[/h2]
Scroll positions within the left-side panels are now saved and restored when opening/closing or navigating between panels, which results in less unnecessary scrolling.



Input Goods Shortage Map Markers are now collected per State on mid zoom level, similar to Construction, reducing the overall map clutter



An “Upgrade All” button has been added, both for Upgrading all Formations in your Country, and for Upgrading all Units within a particular Unit Group in a Formation



The Employment Indicator has gotten a reworked tooltip that more clearly explains why a Building is able to hire or not.



The way we display Qualifications has also received some significant changes. Previously, we would display all Qualifications for a particular profession in the State Panel, regardless of whether the Pops that held those Qualifications actually had any real chance of becoming that Profession. For example, your Capitalists might very well have tons of Machinist qualifications, but it’s not too likely that they are going to quit their jobs and make the switch from factory owner to factory worker. Adding to this confusion, the ‘Insufficient Qualifications’ warning when constructing a building or changing a PM would only look at Qualifications among Peasants and the Unemployed, meaning its predictions would often not play out that way in practice.

In 1.6, we now always show something we call ‘Employable Qualifications’, which is Qualifications held by Pops that are reasonably able to take a job, defined by meeting the following criteria:
  • Isn't already the relevant pop type
  • Is unemployed or a jobseeker
  • Is not enslaved
  • Isn't working in a government building or subsidized building
  • If employed, wouldn't consider the change in pop type to be a downgrade (ie, Aristocrat qualifications for Farmers aren't likely to be considered - based on wage weight and how well their current workplace is paying)


What this means is that when you get a warning for a building that’s to be constructed not having enough Qualifications to fill, that warning can actually be trusted, and you’ll have a much easier time determining which Professions are a bottleneck for your industrialization efforts.



The tooltip for changing Production Methods now has much more accurate predictions as it now takes more factors into account than before (Employment changes, Throughput, State Traits among others), plus had a few bugs fixed.



The Construction Interaction now has two modes for the list items: “Condensed” (which is what is currently in game in 1.5) and the new “Full” mode, which has additional information like State Traits, Employment, Production Methods and Local Prices for Input and Output Goods.



The Transfer Units panel has gotten some extra functionality compared to what is currently available in 1.5 based on many requests from our players. First and foremost, you can now with one quick button press move all or half of the Units and Commanders over to the other side. You may of course want to be more detailed when setting up your transfers, something we now provide additional tools for, namely:
  • Text input box (write the number you want immediately)
  • Slider + Arrow buttons (slide the number to whatever you need it to be)
  • A list of all individual Units (if you want to be really nitty gritty and select/deselect individual units)






We want to have most lists sortable and/or filterable by suitable factors in our game, which is becoming more and more of a standard for us to help you find the exact thing you want especially in lists with more than 10 entries. In the Transfer Unit window we have included a filter for you to get the Units from a specific State in the selected Formation.



During one of our Personal Development Time days we finally made a working prototype for what has internally been referred to as the Holy Grail of Tooltips UX: Tables in Tooltips. This implementation is only used in two places as of 1.6, but we’ll most likely start using these more often in the future, as they make it much easier to present certain types of information with greater clarity.





[h2]Closing thoughts[/h2]
Working on the Quality of Life improvements for 1.6 has been both really fun and rewarding, as it includes some improvements with a high positive impact on the overall UX of the game. The high point for me was either finally seeing the Census Data panel take shape (after having been one of those features that we have had scheduled for “the next patch” for a very long time) or solving how to move the Start Diplomatic Play predictions out from the tooltips into the popup panel.

That’s it for this week! In two weeks Alex will discuss the upcoming changes to the migration mechanics and their impact on game performance.

Hotfix 1.5.13 is now LIVE!

Hello Victorians!

Today we have released a hotfix targeted at a few key crashes in the game, whilst we previously had said in the last Dev diary that we were unlikely to have more hotfixes. It was deemed important to fix these key crashes in a separate hotfix prior to update 1.6 releasing. Not for problem reports, but rather file any bug reports in the bug reporting forum, thank you!

[h2]Patchnotes:[/h2]


[h3]Bugfixes[/h3]
  • Fixed a crash caused by peace deals allowing to-be-annexed countries to press conquer state wargoals.
  • Fixed an out-of-bounds access crash related to Military Path Arrows
  • Fixed a crash related to Military Path Arrow length

Dev Diary #103 - 1.6 Teaser



Hello everyone, happy new year and welcome back to another Victoria 3 development diary, the first of many for 2024. Today is just going to be a very short dev diary with a first look at free update 1.6, which as we mentioned in Dev Diary #102, will be a standalone update (meaning not accompanied by a paid DLC) that is next up on our release schedule.

1.6 is going to be a smaller update that focuses almost entirely on game polish (meaning bug fixes, performance work, UX and AI improvements) and not on adding features to the game, since after the massive slew of changes to the game that was 1.5 we now want to instead focus on smoothing out some of the rougher edges of the game. While we could of course just continue to release hotfixes for 1.5, focusing our efforts into a proper update instead is going to allow us to tackle some things (particularly on the performance and military pathfinding side) that would be too risky to include in a hotfix.

While all this means that you shouldn’t expect much to change on the post-release plans roadmap from 1.6 alone, you can expect some nice new QoL changes, such as the Pop Browser, a new interface inspired by Victoria 2’s Pop Interface, which gives you a comprehensive overview of your country’s population that allows you to more easily identify problems or opportunities, such as pinpointing where exactly those 1 million radicals that keep stirring up trouble are coming from.

The Pop Browser comes with an extensive list of filters to make the selection of Pops you want to look at as broad or narrow as suits your needs

The Pop Browser is one of a few other UX improvements coming in the update, but we will elaborate more on the other changes in our next dev diary (in two weeks) - going through the specifics of UI/UX changes in 1.6. See you then!

Victoria 3 and Paradox Interactive Winter Sale!

Victorians, wintery tidings bring news of a sale starting in the snowy lands of Steam! Explore the grand tomorrow, from the comfort of your room*!
*Coal fire and smoking jacket, optional.

50% off Victoria 3 for the Winter Sale!

New players can find information, our wiki, links to guides and more here!

https://store.steampowered.com/app/529340/Victoria_3/

As well as the rest of the Paradox Interactive portfolio being up to 75% off!