Victoria 3 cover
Victoria 3 screenshot
Linux PC Mac Steam
Genre: Simulator, Strategy

Victoria 3

Dev Diary #78 - Update 1.2 changelog Part 2



Part 2 of Dev Diary 78




  • Complete overhaul of the Trade Routes panel, adding several different views and options to filter, sort, and manage them
  • Message Settings control panel can now be used to customize the behavior of notification types, including pausing the game in single player
  • Rebindable hotkeys
  • Individual notification types can now be toggled to automatically pause the game in singleplayer
  • The Population panel now breaks down Pop Consumption and Taxes by strata
  • Loyalists and Radicals tooltips now reports which Professions and Interest Groups they can be found in
  • Convoy balance is now prominently displayed in the top bar (for countries with a coastline)
  • Certain mapmodes now switch with a (configurable) fading animation rather than instantly
  • New layout for map interaction panel with minimal buttonification, permitted easier tooltipping and navigation in each entry
  • New, better performing construction UI element below the time controls to distinguish private from government construction
  • Journal Entry panel can now display its progress as a progress bar, and display all conditional triggers (success/fail/timeout) as well as the effects that would happen
  • There is now an Important Action for when a Decision is available for you to take
  • Map Interaction List layout has been changed to improve tooltip usability
  • Literacy map mode
  • Infamy map mode
  • Global population map mode
  • Goods in specific markets can now be pinned and tracked in the Outliner
  • Lens bar icons will now take up the entire width of the screen depending on resolution, rather than always 15 per row
  • All characters, not just Generals and Admirals, can now be pinned to the Outliner
  • Production Methods now display a short summary of what they do without having to read the tooltip (inspired by the Visual Methods mod by FUN)
  • Morale for each side is now displayed on the Battle list item in the Front panel
  • A more compact variant of the Front map marker is now shown if a side doesn't have any troops there
  • Diplomatic Action map interaction list now shows a column for "Will Accept" / "Will Accept with Obligation". Inspired by "Deal or No Deal? Diplomatic UI Expanded" mod by Luk_Zloty
  • Numerous improvements to notifications such as price reports, mobilization, and declared interests to reduce notification spam
  • Shortcut Ctrl+B now pauses/unpauses the construction queue
  • It is now possible to see a tooltip breakdown of a side in a battle ended up with the number of initial units they did
  • C is now a shortcut for the "Confirm" action, such as default event options
  • Notification Feed items now animate properly and remember their states
  • Heatmap colors and values have been updated to make them easier to read, especially in states with low concentrations of something (Inspired by "Practical Heatmaps" mod by Ronin Szaky)
  • State images now include animated visual effects
  • Control buttons for Main Menu, Vickypedia, Message Settings, and Music Player in the top right corner now have tooltips
  • Diplomatic Action tooltips now list correct values for any potential income transfers involved in the pact
  • Institution tooltips now display their actual, scaled effect due to the investment level, not just the per-level values
  • Buildings under construction are now excluded from Productivity comparisons
  • The Expand Building map interaction list now display the amount of available Peasants and Unemployed in the state
  • The 4 most consumed goods are now displayed in Pop Lists (Inspired by "Visible Pop Needs" mod by Apprehensive-Tank213)
  • Interest Group panel and tooltip now displays their number of Loyalists and Radicals
  • The Pop's number of Loyalists and Radicals are now displayed in Pop Lists
  • Details on the Investment Pool is now displayed in the Buildings / Construction tab
  • The "Map List" is now referred to as "Ledger", and includes a mapmode dropdown
  • Expand Building map list panel now includes information on state Infrastructure and Labor
  • Total Pop Size is now displayed on the Overview tab as well as the Economy tab in the Pop panel
  • Ongoing Naval Battles are now accessible through the War panel
  • Conscript troops are now illustrated by an image suitable for their Production Methods
  • When starting a Naval Invasion, the number of Battalions and current Mobilization level is now displayed for each General
  • The meter on the Battle panel will now more reliably track the progression and predict the outcome of a battle
  • Currently unavailable Diplomatic Plays are now shown on the country panel in a special section, making it easier to determine why they're unavailable
  • Expand Building map list panel now display Taxation Capacity instead of Productivity when building Government Administrations
  • Convoys tooltip now turns into a paged list after 10 items instead of potentially expanding to fill the whole screen
  • Interest Groups will now show their Approval when pinned to the Outliner
  • The names of Battle Conditions are now displayed alongside their icons
  • Clicking the High Tensions alert will now open the Diplomacy interface instead of doing nothing
  • Total population per strata is now shown on the Population panel and Standard of Living tooltip
  • Literacy is now tracked over time and can be displayed in a chart
  • The effects of Turmoil on Construction Efficiency is now more clearly signaled in the Construction Queue
  • Front panel header now provides a navigational link to its Diplomatic Play even if it has not yet become a War
  • Attempting to form a low Legitimacy government now produces a warning confirmation box
  • Demoralized Manpower is now displayed on the Battle panel
  • Standard of Living Factors tooltip now includes impact from Pop Consumption
  • Added the Show More button to see the full breakdown of chart legends on the State Population tab as well
  • Improved explanation for why a state's Market Access is suffering
  • Improved Bureaucracy Usage tooltip on State and Pop levels
  • Notification rebalancing to decrease the frequency of the worst offenders
  • Tooltipping the "Tariffs Paid" value now produces a proper nested tooltip rather than an unlocalized string
  • The endgame screen is now clearer about the fact that it's possible to continue playing past the end-date
  • Goods Consumption factors are now added to the reasons for Radicals/Loyalists tooltip
  • "Involved in conflict" map mode is now switched to be the default only once you have taken a side in a Diplomatic Play
  • Pop Needs tooltip is now more readable
  • Generals and Admirals are now more open about which HQ they belong to
  • Battle tooltips now include Manpower metrics as well as Battalion/Flotilla numbers
  • The Journal Entry and Player Objectives outliner widgets are now more compact
  • The Convoy Cost tooltip on the Trade Route item now produces explanatory information when it is zero
  • Very long player names will now elide properly with a trailing ellipsis in the outliner
  • Goods tooltip "Go To Details" button will now navigate to the relevant detail panel depending on if a state/market context exist or not
  • New game concepts for the terms "Popup", "Feed", and "Toast"
  • Stray newlines are now omitted from Production Method tooltips





  • Overhaul of Construction Queue related code to optimize performance and improve Autonomous Investments
  • Optimized country trends to reduce memory usage
  • Optimized Pop Need caches to reduce memory usage
  • Optimization of Trade Route map interaction code to eliminate lag spikes
  • Reworked the Outliner Construction Queue to be considerably faster when many buildings construct at once
  • Optimized building map markers when constructing buildings in a state with a lot of Turmoil
  • Optimizations to pollution VFX particle counts
  • Improved performance when adding new buildings to the bottom of a very large construction queue
  • Increased the cutoff for what qualifies as a very small pop that should be merged into larger pops for performance reasons





  • Building Power Plants now cause a representative building model to appear in city hubs
  • Whaling Stations now have unique Production Method icons
  • Smoke plumes produced during and after battles have been visually enhanced
  • The presence of a Mass Migration Target in a state will now increase the number of Horse & Carriages on the roads
  • Revised table shader for improved lighting, tweaked transition between table and background
  • Flamethrower VFX is now improved when observing from different camera angles





  • Korean: Fixed placeholder text in Downsize Building tooltip
  • Chinese: Ensures tooltip for Interest Group Pop Attraction works even when a different delimiter than colon is used
  • Polish: typo that caused an unlocalized string to appear is now fixed in REVOLUTIONS_PROGRESS_TOOLTIP
  • Polish: concept_budget_construction_goods no longer generates errors
  • Fixed a reference to unlocalized key concept_promoting in the Interest Group tutorial
  • Fixed a reference to unlocalized key sepoy_mutiny for the war between East India Company and Hindustan
  • English: fixed a typo in DIPLOMATIC_ACCEPTANCE_NO_CUSTOMS_UNION
  • Polish: Fixed a missing space in the date string between the weekday and the month





  • New UI function MakeScope available for all UI types with a corresponding scope type, letting modders add scripted GUIs, access saved variables and modifiers in UI script, etc
  • Journal Entries can now define scripted buttons with custom triggers and effects
  • Diplomatic Plays can now be scripted with unique Relations requirements rather than being contingent on the same define
  • New effect set_ruling_party added
  • AI Strategies now have improved script comment documentation
  • References to unlocalized text in GUI script will now throw errors
  • Building group inheritance has been reworked to ensure overridden settings will always supercede default ones across the hierarchy
  • There is now a "governments" history step after Interest Group/Party setup but before elections that can be used to more precise political setups
  • New on-actions: on_secession_start and on_secession_end
  • Console command "investment_pool" will add money to investment pool
  • was_formed_from = TAG trigger added to check which country definition a new country was originally
  • New flag definition for a potential USA formed by Michigan
  • New script effect set_available_for_autonomous_investment to allow/disallow autonomous investment for certain building types in particular states
  • Diplomatic Plays can now be scripted with settings on whether starting wargoals should generate Infamy
  • Added new defines for fine-tuning of casualties caused by manpower vs casualties caused by Offense/Defense
  • remove_war_goal effect is now allowed to remove the last wargoal from a diplomatic play or war





  • Tariffs are no longer collected for routes between countries with Trade Agreement pacts
  • Fixed an issue where re-mobilization of battalions involved in a naval invasion could cause multiple simultaneous landing battles
  • Countries that cease to exist for unrelated reasons will now be properly removed from wars, ensuring the war will conclude eventually
  • Characters now perish from natural causes at a more natural pace
  • Fixed crash that occasionally happened while removing manpower from combat units (CCombatUnit::RemoveManpower)
  • Countries can now start Diplomatic Plays to Transfer Subject even if their Relations with the subject (rather than the overlord) is too good
  • Fixed an Out-Of-Sync error in multiplayer related to elections
  • Fixes an issue where Britain taking a Treaty Port in Great Qing would not properly end the Opium War
  • States which border each other only by provinces considered Impassable will no longer be treated as adjacent
  • It is no longer possible to queue up multiple levels of a Canal, Skyscraper, or other single-level building while there is a level already in the queue
  • Fixed a bug that caused generals to stand by in some cases rather than assign themselves to the new front after having won a naval invasion landing battle
  • Fixed an Out-Of-Sync error in multiplayer related to Diplomatic Plays
  • Sway interface will no longer pretend the AI will accept an offer they wouldn't when there is another offer they would
  • Winning a battle on an ally's front should no longer result in only capturing a single province
  • Fixed a bug that allowed players to start a Unification Play for a country that had already been formed
  • Fixed a bug that caused wargoals to not invalidate despite their holder or target no longer existing, resulting in wars continuing with no wargoals
  • Fixed a bug where if slavery had already been abolished/expanded before the revolution meter hits 100%, the American Civil War would fail to trigger or revolt with the wrong configuration of states
  • Fixed a bug that caused Generals to go home and Stand By when a front is destroyed but a new one created in the exact same place
  • Become Protectorate proposals will now work even when one party is a junior in a Customs Union, and will supersede that pact
  • The game now pauses correctly on the end date even in multiplayer
  • Fix out-of-bounds charts after switching countries
  • Fix out-of-bounds charts when viewing other countries
  • Fix map graphics and name flickering when the Culture map mode is activated
  • Countries with Slave Trade will now stop importing slaves if there are no available jobs for them to fill
  • The last Interest Group in government will now never spontaneously leave it under any circumstances
  • Enacting an Opium Ban as Great Qing no longer removes buildings other than Opium Plantation from the build queue
  • Highly developed states no longer display GDP incorrectly or with negative values
  • Overseas battalions with reduced Supply can no longer regain Morale in excess of that Supply score
  • Countries currently involved in an Independence War will no longer be annexed due to a (minor) Unification
  • The American Civil War will no longer end with the Union in a never-ending revolutionary state in case of a CSA win
  • Fixed several hundred land provinces incorrectly marked with Ocean terrain
  • Mobilized troops now properly demobilize when abandoning a side in a Diplomatic Play by setting your stance back to Neutral
  • A new ruler assigned via Election will now apply their Traits' country modifiers immediately upon taking office
  • Fixed a crash related to CPdxDynamicTypeArray
  • Fixed a crash that could happen when establishing a new trade route immediately after game start
  • Secessionist radical pops will now properly deradicalize once they have seceded
  • Fixed a bug that caused GUI elements in a certain part of the screen to become unclickable / unresponsive after one party had backed down from a Play
  • It is no longer possible to sway members of Customs Unions with the promise of "independence" from it
  • Fixed a crash related to CPdxRobinHoodTable
  • The East India Company is now annexed upon its formation of India rather than continuing to exist on the map
  • Fixed an Out-Of-Sync error in multiplayer related to queueing a new building as a client hotjoins
  • It should now be possible to gain Achievements available only to particular countries even after having won as a revolution in that country
  • China now causes Diplomatic Incidents in the home regions of all Christian Great Powers as part of the Heavenly Kingdom event chain, rather than the other way around (all Christian Great Powers causing Diplomatic Incidents in China)
  • Annexing a country through unification (e.g. the Hudson Bay Company or Columbia District) will now inherit their claims
  • Overlords that form new nations will now always take any Homelands of the new nation from their Subjects in the process
  • Make Puppet Diplomatic Play can no longer be used on an independent Major Power or higher
  • Fixed a bug where the Discrimination modifier to Political Strength was not properly applied in some cases
  • Buildings panel interface should no longer be a source of crashes





  • It is no longer possible to Humiliate a country twice in the same war
  • A subject gained through the Transfer Subject war goal should no longer come with some of their land permanently occupied
  • Fixed rare crash when validating Production Methods (CBuildingManager::ValidateBuildingProductionMethodsIfNeeded)
  • Fix an issue with land trade routes being invalidated due to shipping lane effectiveness not taking land trade capacity into account
  • Fixed the confusing tooltip and excessive script error spamming for decisions to purchase the Suez or Panama Canal rights
  • A country that has been called into a Diplomatic Play by using an Obligation can no longer decide to abandon the country that called in the Obligation
  • Production Methods validated by Laws will now be set according to the new Laws if the building changes countries
  • Peace Treaty notification should now always contain information about the peace deal
  • Fixed a crash related to country information panels
  • Fixed a crash related to the battle information panel
  • Players rejoining a multiplayer game should no longer experience an Out-Of-Sync error related to trade routes
  • Fixed a bug where war reparations could under some circumstances be applied twice to the same country in the same war
  • Liberating a Subject that is also inside a Customs Union no longer removes them from the Customs Union rather than release them from their overlord
  • Transfer Subject Diplomatic Play can no longer be used on Personal Unions
  • Nation Above Self Journal Entry will now complete if the relevant Interest Groups are either Marginalized or Suppressed, instead of (impossibly) requiring both to be true
  • Tutorial windows triggered from Journal Entries will now close if their associated Journal Entry is invalidated
  • Generals can no longer be selected as both advancer and defenders in two separate battles at the same time due to them breaking out on the same tick
  • Invalid war goals no longer cause war support to freeze at 0
  • Liberating a Subject of a Subject now makes them independent rather than a Subject of their former Overlord's Overlord
  • Should Turkey puppet Egypt, they will not get the Veiled Protectorate Journal Entry as this would cause them to worsen Relations with themselves
  • Fixed a bug that caused Interest Group Approval to go sky-high when close to 0% Clout
  • It is now possible to mobilize a General despite their HQ being partially occupied
  • Fixed a crash that could happen when opening the building tab while the Expand Building map interaction was open
  • Grand Principalities are no longer unfairly excluded from German Unification Journal Entries
  • It is no longer possible to start to incorporate a colonizing state whose colony growth has been temporarily blocked, e.g. due to a Claim
  • Fixed a crash when changing Production Methods or constructing new Urban buildings (CRightClickMenuManager::HandleInput)
  • Fixed crash when rendering some text (NPdxStringUtils::CompareSIMD)
  • Colonize State Journal Entry in Learn the Game objective has been reworked to be less bug-prone
  • Colonization interface should no longer be a source of crashes on Mac/Linux
  • Linux clients should now be able to connect successfully to a multiplayer game hosted on Mac
  • Fixed a bug that prevented completion of the Pops panel tutorial due to layout changes
  • Fixed a crash related to spline network graphics rendering
  • Trigger breakdowns that include an any_scope_state list will no longer assume the scope is always a country
  • Proposals to become a subject will no longer be denied due to the prospective overlord already having subjects
  • The "No Effect" Production Method choice is no longer visible for Vatican City unless monument effects are disabled by a game rule
  • Regaining a sufficient amount of Prestige should now halt the devolution into a lower Power Rank
  • It is no longer possible to change another market's goods' tariff policies through the context menu
  • Several nations with pre-existing colonies at game start now have Interests declared to support the growth of those colonies, where they previously did not
  • Expand the East Indies Administration no longer allows for transferring a State to another Customs Union member's Colony
  • Average annual wage breakdown in building panel now takes impact of discrimination on wages into account
  • Hooked in orphaned event to shatter the East India Company if it breaks free from Great Britain (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • Impassable provinces can now never be captured in battles, and are excluded from occupation percentage calculations
  • Several Diplomatic Actions now have proper localized strings rather than unlocalized keys
  • Mass Migration Target tooltips no longer lies about how long they will remain in effect
  • Crash Reporter tool should now work correctly on Linux
  • It is no longer possible to use 'Conquer State' or 'Return State' wargoals on decentralized nations
  • The Confederate States' Interest Groups now correctly lose their "Supporting an Ongoing Revolution" modifiers after the war is over
  • Fixed a bug that caused one country to have multiple entries for Release Subject war goal
  • Requests to join a country's Customs Union are now always passed up the chain to the leader of the Customs Union
  • Fixed a bug where secessions would not increase the Journal Entry counter towards shattering Qing
  • If something happens that causes the country targeted for the Improve Relations tutorial challenge to no longer exist, the challenge will now invalidate and restart with a new country
  • Only slave states will join the CSA in the American Civil War and vice versa (note that unincorporated states such as Florida cannot join a revolution)
  • Interest Group leaders retiring from political life will no longer be accompanied by a notification claiming they've died
  • Japanese heirs created via event will no longer spawn with negative age
  • Taiping Rebellion Diplomatic Play no longer generates Infamy for either side
  • The Goods navigation link in the notification for Significant Trade Route is no longer broken
  • "Improve Market Access by Decree" tutorial challenge now requires you to issue the decree in the specified state in order to complete
  • Legitimacy prediction when forming a new government should now be accurate even when the change involves changing to a new Head of State
  • It is no longer possible to abuse the "Expand the East Indies Administration" Journal Entry to instantly colonize all of Indonesia
  • Fixed an issue where historical tariff settings were cleared during initialization
  • You can no longer become a Protectorate of a country you are opposing in a Diplomatic Play or war
  • The scroll bar no longer overlaps the text in the Diplomatic Play confirmation window
  • Poppydock achievement is now triggered by having a level 8 port instead of 8 different ports as intended
  • Production Methods invalidated by Law changes will now reset immediately upon law enactment
  • Fix an instance of territory remaining painted with occupation flags after the war has ended
  • Fixed a crash related to using hotkeys to open lenses
  • The tooltip for expanding Barracks or Naval Bases will no longer display empty troop allocation change sections
  • Switching government type should no longer cause Market Access to mysteriously drop to zero
  • Front Health prediction no longer displays nonsense information if no Generals are present on the Front at all
  • Land Battle markers should no longer get mixed up for Naval Battle markers and vice versa
  • Metropolitan Police no longer (falsely) claims it needs Turmoil to be exactly 20% to complete
  • Reading Campaign achievement now requires 95% literacy or higher, rather than exactly 95% literacy
  • Power of the Purse naval theory Production Method no longer feature doubled Morale Loss modifiers
  • A garrisoned battalion can no longer be made to defend in two battles on different fronts simultaneously
  • Fixed crash when starting a new game related to AccessPlayableCountry UI function
  • Revolutionary country in the American Civil War will no longer get a generic revolt name instead of their historical name
  • Fixed an instance of endless recursion in the modifier_building_subsistence_output_mult_desc localization key
  • Characters already leading expeditions are now excluded from being chosen to lead another expedition
  • "Manifest Mexico" Achievement is now only possible for Mexico
  • The Treaty Port in Ceylon is no longer scripted to be on impassable terrain
  • Government Type concept tooltip trigger breakdown no longer spews error strings when explaining why the player's current government type is active
  • Recruiting a new commander will no longer display a notification about them moving to the NULL_OBJ HQ
  • Take on Debt Diplomatic Action will no longer erroneously show a country will accept if you offer an Obligation, as this is not a valid option for this action
  • Fixed an error in text of "Slavery and Colonial Labor" that was causing error log spam
  • Issue Decree map list now lists the predicted Authority cost rather than the current cost (which is usually 0)
  • State regions that are homelands for more than one of your country's primary cultures will no longer be listed repeatedly on the Unification panel
  • Fixed a bug where the 'Revoke All Claims' wargoal would immediately invalidate in secessions
  • Oscar Wilde no longer vanishes with the dawning of a new day, as he has now been relegated to the Void for sufficient time for his event to conclude
  • Market map icon and its tooltip no longer flicker when hovering them
  • Goods price tooltip should now show up correctly even in isolated markets (fixes GOODS_PRICE_DESC_IN_ISOLATED_MARKET)
  • Typing space in the console will no longer pause or unpause the game
  • Added missing heir titles for Zaidi Imamate (fixes HEIR_TITLE_DEFAULT)
  • Command Economy no longer has itself as a disallowing law (cosmetic bug only)
  • Momentum now has a proper tooltip
  • Diplomatic Play scope is now passed to on_sway_offer_rejected on-action rather than country scope
  • Investment Pool tutorial Journal Entry is now disabled while using the Autonomous Investment game rule
  • Fixed an issue where the number of battalions on a Front may have an outdated cached value
  • Fixed a UI caching issue where a character's traits may be shown on a different character
  • add_religion_standard_of_living_modifier effect now has a proper effect description rather than an unlocalized string
  • Fixed a cosmetic bug that caused Initial War Support to be listed as 0 instead of 100 in tooltips
  • Expiring Obligations pop-up no longer references yourself instead of the country with the Obligation
  • Total Amount of Flotillas tooltip will no longer show unlocalized DIPLO_PLAY_COUNTRY_WARSHIPS_BREAKDOWN key
  • It should no longer be possible to put Fishing Wharves into a state where no Ownership Production Method is valid
  • Law Enactment checkpoint toasts no longer claims the law has "advanced" if it has made no progress or regressed
  • Treaty Port in Chiapas moved to a province that's actually inside state borders
  • Haitian Independent Payments to France now cease if Haiti no longer exists
  • Total Weekly (Bureaucracy) Cost tooltip will no longer show unlocalized TOTAL_INSTITUTION_INVESTMENT_LEVELS key
  • Event "Do You Hear That Too" can no longer occur in NULL_STATE
  • Fixed a script bug that made it impossible to get the Death from Below Battle Condition
  • Hudson Bay Company no longer loses its Claim on Alberta after a month
  • The Decision to "Cancel the Suez Canal Survey" now becomes unavailable after the survey concludes
  • Hawai'is Ali'i Nui and government type no longer generates error text in tooltips
  • Unlocalized string "ECONOMIC_SYSTEM_LAW_GROUP" across several game concept tooltips has now been corrected
  • Fixed typo in Change to Our Customs Union tooltip
  • Unlocalized string "WARSHIPS_TOTAL" in building tooltips has now been corrected
  • Fixed a few typos in "Expand the Military" tutorial challenge text
  • Fixed naming for FSA to match naming for CSA in triggers, and ensures it is set immediately instead of only after the player has clicked the event


Phew!

We're very happy with how Update 1.2 turned out and hope you will be too! We have our amazing beta testers and passionate community mod creators to thank for a lot of it, this update wouldn't have been nearly as balanced and stable as it is if it weren't for all of you. As always we'd love to continue to hear your feedback and make sure to let us know if you run into any other bugs so we can continue to bang the pipes and tune the gears of the game!

After the release of Update 1.2 dev diaries are going to go dark for a couple of weeks or so, but we will be back soon enough with more on what is coming up for Victoria 3 in the near future! Until then!

Dev Diary #78 - Update 1.2 changelog Part 1



Hello and welcome! Today I will be going through, or perhaps more accurately infodumping, everything that has happened for Update 1.2. Many of you will have already experienced 1.2 in our Open Beta and will recognize many of these new features, improvements, and bug fixes, but there's a substantial number of things in here that were not in any of the three beta releases (or which were too niche for most to notice), so I expect that even beta players will find a few gems in here!

The planned release date for the update is Monday March 13th, at 10:00 Central European Time. Our testing shows a promising amount of compatibility with savegames created on 1.1.2, but as usual we cannot guarantee flawless compatibility between versions, so for safety we recommend you start a new campaign on the new build. We will of course backup the old 1.1.2 version as a Steam beta branch which you can rollback to if needed (e.g. for mod compatibility).

It is worth noting that this changelog reflects only the changes between 1.1.2 and 1.2.3 (which will be the release version of 1.2), and interim changes between beta releases are omitted to avoid confusion. In practice this means that if you experienced a bug or balance problem in a feature new to the beta build, this document won't explain whether it's been fixed or not.

If you're looking for more detail on the biggest changes coming to 1.2, take a look at our previous dev diaries.

Now, without further ado…




  • Autonomous Investment: when the game rule is enabled, Pops will automatically start new private construction projects based on available funds in Investment Pool
  • Buildings can now have Government Shares, which will pay money (or subtract losses) directly into the treasury relative to building profits and government ownership share
  • The investment pool is now disabled under Command Economy. When Command Economy is enacted, all funds in the investment pool are seized for the treasury and all private construction projects are turned into government construction projects.
  • Added new economic law Cooperative Ownership, which requires Council Republic and now unlocks Workers' Co-ops production methods instead of Council Republic doing so directly
  • Strategic Objectives that can be designated by the player, encouraging Generals to capture specific states
  • Command Economy now makes it so all private sector buildings have only government shares, and only pay out government dividends
  • In-Game Music Player
  • Defeating a Native Uprising no longer instantly annexes them, but instead creates a Colonization Rights pact which speeds up colonization of that country for 5 years
  • New Lens interaction and context menu options to reset the Production Methods of a state, building, or building type to national standards
  • New Journal Entry, Decisions, and events pertaining to Russo-Chinese Border conflicts, the Beijing Treaty, and the Chuguchak Protocol
  • Complete overhaul of the Taiping Rebellion / Heavenly Kingdom event chain, including a new Journal Entry and event, a custom government form, historical characters, unique Interest Groups, new law setup, and plenty of fixes and balance changes
  • Markets now have a Land Trade Capacity, which allows trade routes between adjacent markets to trade a limited number of goods without needing to use convoys





  • Trade Routes now trade using market price, rather than a computed difference between pre- and post-trade prices. Trade routes now cannot be profitable unless the price is lower in the exporting market than in the importing market.
  • Secondary war goals added in a Diplomatic Play can now be locked in at the cost of Infamy and Maneuvers, causing them to be yielded if the target backs down
  • Numerous improvements to battle initiation, including picking which units should be involved and how many units each side can bring
  • It is no longer possible to colonize a state where another country both has a claim and maintains an interest, unless you also have a claim there
  • Several claims have been added to colonizable regions where other powers should not be able to start colonies, such as Hokkaido for Japan
  • Worldwide rebalancing of Arable Land, with land generally reduced in Europe/Asia and generally increased in the Americas
  • When a Native Uprising starts, they now only get conquer wargoals on states in state regions where the Native country owns land, instead of all adjacent states
  • We now print a list of any missing DLC or mods when attempting to load a game, but let you try to load the game anyway
  • Low Legitimacy is now communicated through an Alert (or an Important Action, depending on the severity)
  • Added a Game Rule for whether Investment Pool is autonomously used by pops or directly controlled by the country
  • Interest Groups are now much more likely to spread out across multiple available parties, reducing the risk of ideological incoherence within parties
  • Maintaining additional Convoys in excess of what is needed now provides a bonus to Trade Route Competitiveness
  • Unrecognized Powers now get a special Journal Entry for becoming Recognized during the Hegemon objective
  • Colonial Clash event now triggers considerably less aggressively
  • Notifications can now be dismissed in Observer mode
  • Naval Invasions are no longer limited to using Admirals and Generals from the same HQ, but can use Generals from any HQ with coastal access
  • If a front is resolved, any Generals at that front will now only automatically reassign themselves to a nearby front if it will take at most 30 days to reach it. In case of travel durations longer than that, the General will instead Stand By in their current location
  • Battles currently in progress no longer get manpower reinforcements from newly trained servicemen. Reinforcements will arrive once the battalions leave their current battle.
  • Battle Conditions now have a chance to update after having been active for several days, ensuring the tides can turn during battles
  • The Offense/Defense bonus enjoyed by Colonial Uprisings has been halved
  • You now get to choose to recruit one of 3 (instead of 2) Generals and Admirals
  • Certain Diplomatic Plays such as Annex Subject are no longer blocked by having too good Relations with the target
  • Interest Groups will no longer forget all about slavery as soon as it's abolished, but will retain their former ideals for some time
  • New Alert for when a country does not produce enough construction to fully utilize the money coming into its investment pool
  • Farmers and Shopkeepers now reinvest a small portion of their earned dividends into the Investment Pool
  • Only slave states can now revolt with the Confederate States of America, and only free states with the Free States of America
  • When the American Civil War breaks out, USA now gets claims on all states of the seceding country, and the seceding country gets a Revoke All Claims wargoal
  • Unincorporated states now cost less Infamy and Maneuvers to claim than incorporated ones
  • Reduced Fertilizer production from Intensive Grazing Ranches
  • The most powerful Interest Group in a party is now considered the Party Whip, letting them moderate the impact of ideological incoherence among groups that do not agree with them
  • GDP is now measured by subtracting the cost of input goods used in manufacturing, which is more true to life and doesn't unfairly rewards manufacturing economies over resource economies
  • Buildings will now raise wages only if they have considerable profits and they have employees below minimum expected Standard of Living, or if they have reasonable profits, are trying to compete for labor, and have <50% employment
  • Buildings will now lower wages or lay off employees if they are running a deficit and have <50% cash reserves, or if they have minimal profits and employees have a Standard of Living >33% above the minimum expected standard
  • Generals will now be more aggressive and consistent about pursuing war goals, even when those war goals are far away
  • Improved national dissolution events for China and India
  • Revolutionary or Seceding countries are no longer able to engage in Colonization, as this would cause orphaned colonies upon their destruction
  • Auto-Expand trigger conditions have been altered to ensure very expensive buildings don't block new buildings from being added
  • First Aid Production Method now requires Liquor and Fabric rather than Opium, while Opium is only required by Field Hospitals PM
  • When a country splits due to a revolution, any gold reserves or debt it has will be split between them in accordance with GDP. When one country annexes another in a revolution, gold reserves / debt will be recombined.
  • It is now possible to use the Take Treaty Port wargoal on a treaty port where you already own part of the state even if the holder is of higher or equal power rank
  • Earnings prediction when expanding buildings has been made less confusing by only displaying the earnings of the prospective level and ensuring Economy of Scale is factored in
  • Serfdom now reduces the amount of Infrastructure states get from their population
  • Junior countries in a Customs Union will now get Trade Centers for their own trade routes
  • Investment Pool contribution balance revisions to ensure the pool can be relevant for all countries and to not radicalize investors when they increase their investments
  • Command Economy now requires Autocracy or Oligarchy to enact
  • Postal Savings technology now increases the efficiency of Shopkeeper and Farmer investment
  • Council Republic now increases the Clout of the Trade Unions instead of the Political Strength of Farmers and Machinists
  • If the outcome of a battle would result in a tiny pocket with its own irrelevant front, it will be handed over to the winner instead, reducing the number of fronts created in wars overall
  • Rebalanced employment numbers, trade volume and economy of scale for Trade Routes to work better with market price trading
  • Added a warning for negative productivity trade routes
  • Improved overall profitability of Vineyards
  • Laissez-Faire now disallows any downsizing of private sector buildings
  • Unacceptable legitimacy level now slow down the enactment of laws
  • Righteous legitimacy level now impact enactment speed a bit less
  • Mass migration targets are now selected in two steps, first country then state, increasing the reliability of migration waves to the new world
  • Mass migration targets are now established by culture + country rather than culture only
  • Mass migration should now only occur from states considered homelands for that culture
  • Mass migration target limits based on cultural turmoil removed, replaced by a cooldown per culture + country pair from a specific country
  • Limited emigration to a percentage of the state's population + a percentage of unemployed Pops in the state each week
  • Adjusted some countries' cultural tolerance setup to encourage more new world migration
  • The Competitiveness of a trade route now increases the longer it's been established, making it harder for new routes to compete on limited supply
  • Rebalanced pop growth, including secondary factors like dangerous working conditions, to achieve stronger and more historically accurate compound pop growth
  • War Exhaustion from occupation now scales in a non-linear fashion against the amount of territory occupied, so that occupying just a small portion of a country now does not have much impact but fully occupying them still has a huge impact
  • Provinces are now selected for new battles according to more relevant parameters (e.g. distance to war goal)
  • Particularly severe goods shortages are now signaled to the player as Alerts rather than Important Actions
  • Italian and German flags now look different depending on which country formed them
  • Slower tech progression but with tech boosts from Journal Entries and events (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • It is now possible to take Treaty Ports from Isolationist countries and trade with their market if you hold such a port
  • War Exhaustion from casualties is now scaled off military size rather than population size and increases by the relative amount of battles lost by a country's side of the wa
  • Colonizable Pacific Islands now have the Severe Malaria trait to discourage early colonization
  • Western Australia, New South Wales and Japan now start with Colonial Resettlement
  • Anarchism now requires the Cooperative Ownership economic law to be enacted, and disables all other economic laws
  • Interest Groups with a Slaver leader are now virtually guaranteed to join the Democrat Party while the 'Great Slavery Debate' journal entry is active
  • Interest Groups with an Abolitionist leader are now virtually guaranteed to join the Republican Party while the 'Great Slavery Debate' journal entry is active
  • Missouri Compromise now also gives additional voting power to Aristocrats and Farmers
  • Each level of Trade Route now generates a base number of Trade Center levels, and then one additional Trade Center per level, in order to better balance against sharper decline in per-unit profit from market price trading
  • "Protect Domestic Industry" tariff focus now gives a greater increase in export tariffs
  • "Encourage Exports" tariff focus now gives a greater increase in import tariffs
  • Very unhealthy characters may now die young
  • Industrial Barriers event has been rewritten to be more balanced and engaging
  • Music track now resets when exiting the game to the Main Menu
  • Command Economy no longer enforces mandatory subsidies, since deficits are covered by the treasury due to government shares anyway
  • Buildings will no longer raise wages to attract new employees if no qualifying employees exist
  • Increased radicals from being below minimum Standard of Living (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • Poor pops are now more politically engaged at high literacy (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • It is now possible to use "Revoke Claim" war goal to revoke claims that are not on your own states, e.g. colonial claims
  • Workers in unincorporated states are now generally paid lower wages, especially if they are discriminated and/or you have the 'Colonial Exploitation' law
  • Decentralized Nations no longer have Serfdom law active by default
  • "Independence" war goal now only requires you to hold your own capital in order to contest the war goal, rather than having to occupy your former overlord's capital
  • Console command "tweak debugworldpopulation" can now be used to log many interesting annual global statistics as .csv and Elasticsearch data
  • Agrarianism now allows whaling, fishing, logging and rubber plantations to be funded by the investment pool when using Directly Controlled Investment game rule
  • All workforce pops in Worker Co-ops now have an equal ownership share
  • Defeating the Shogunate in a Civil War will now complete the Meiji Restoration
  • Trade Routes will now always increase their size so long as they can maintain at least £10 productivity, and always decrease their size if they are unable to maintain at least £3 productivity
  • Markets are now considered adjacent if they have any land adjacency, not just if their capital areas are adjacent
  • Improved balance for Political Movement start chances
  • High and Very High taxation levels now slightly reduce the Pop attraction of the Interest Groups in power
  • Revolutionary uprisings now select their participating states with more precision
  • Changed completion conditions for the Declare Interest tutorial to lower the barrier for low-Prestige countries
  • Conscript troops and standing armies now have the same statistics when the same Production Methods are active
  • Whaling Stations now have a Simple Whaling Production Method that produces mostly Meat
  • Whaling Stations and Fishing Wharves now have Ownership Production Methods that are better aligned with other Resource industries
  • Arms Industries and Munition Plants now have Automation Production Methods
  • Indus Valley and Good Soil state traits now also include bonuses for Plantations
  • USA gets a claim on Texas from Manifest Destiny (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • Construction Industries now have increased Laborer mortality (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • Arc Welded Construction is now less efficient (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • Rebalanced Radical gain in Subsistence buildings due to Expected Standard of Living
  • It is now much rarer to get an Obligation from Bankrolling a country
  • Russia now starts with Propertied Women law instead of Legal Guardianship
  • Party leader Popularity now has a much lower impact on Election Momentum
  • Decision to convert Japan to Shintoism now requires a less restrictive Church & State Law, and when taken, will instantly convert 40% of pops in the capital + 20% of all Japanese pops nationwide
  • Road Maintenance Decree now provides a boost to "Infrastructure from Population" instead of flat Infrastructure
  • Pops will no longer mass migrate away from a state to such an extent that it completely empties out all non-slave pops
  • Increased casualties generated by Offense/Defense compared to manpower
  • Reduced the throughput penalty Decentralized Nations are subjected to from 30% to 10%
  • If slavery is abolished and a civil war is then launched to restore it, the pro-slavery rebels will now re-enslave discriminated laborers working in agricultural buildings in former slave states instead of just accepting de facto abolition
  • Rebalanced start conditions to ensure several countries no longer start with negative weekly income
  • Subsistence buildings can now have the Government Run Production Method
  • Andrew Jackson now starts the game with Slaver ideology
  • Britain now starts the game with more agriculture and textile industries
  • Russia now starts the game with even more agriculture in Ukraine
  • Calling in a country to a Play by using an Obligation now costs 10 Maneuvers instead of 20
  • Rebalanced number of provinces conquered in battles
  • USA event option that annexes the Indian Territory will no longer be selected by the AI if the Indian Territory is controlled by a human player
  • The Suez and Panama Canal surveys now take less time to complete
  • All releaseable countries (e.g. Sudan, Inca) are now centralized
  • Transcaucasia is now a recognized rather than unrecognized nation
  • Ottomans now start with Line Infantry tech and some barracks with it active (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • Ottomans now start with a longer truce with Egypt (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • Tanzimat: Army Reform no longer requires expanding the army to 250 units, only 150 (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • Germany & Italy now get a bunch of claims on unowned states when formed (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • Heavenly Kingdom event will now trigger at Standard of Living <10 instead of <7 (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • Bolivian event option that annexes Peru will no longer be selected by the AI if Peru is controlled by a human player
  • Improve Rank tutorial is now adapted to not auto-complete for Unrecognized countries
  • Tanzimat: Literacy requirement reduced from 35% to 20%
  • Very small pops that would otherwise be merged into larger pops will now remain intact if they are likely to have recently arrived to their state via migration
  • Western Australia now has a Claim on New Zealand instead of on New South Wales
  • Clicking on either the Unhealthy Economy or Stockpiling Gold Important Actions will now open the Budget panel
  • FMOD audio middleware updated to 2.02.03
  • Lower effect of Standard of Living on Qing for opium obsession, and higher for having lost opium wars (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • Reformed Mughal is now Muslim (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • India doesn't get any Iranian cultures as primary (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • Britain now starts with additional Declared Interests
  • "Visitors from Colonies" event now has a longer cooldown before it can reoccur
  • Colonization of a claimed state will not be blocked if the country with the claim can't reach the state
  • English: fixed a broken reference to concept_subsidizing in Trade Route tooltip
  • No more Scottish people in India at game start (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • British Gambia now starts with a Port, ensuring it's not isolated from the British market





  • AI will now never remove the last level of port in a state
  • AI will now refrain from constructing more ports than it could support financially
  • AI "Bravery" is now renamed to "Recklessness"
  • AI will now better balance its forces between defending home HQs and sending troops to overseas fronts
  • Technologies now have scripted AI weights to fine-tune the AI's decision making when selecting new research
  • High Recklessness will now cause the AI to overestimate its military strength in Diplomatic Plays, thereby increasing Confidence
  • AI is better at responding to political movements (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • AI is now less likely to back down in diplomatic plays where there are numerous primary demands arrayed against them, especially if they will be annexed on backing down
  • Tweaked unification AI strategies to make the AI better at using the journal entry systems to absorb minor countries
  • AI will no longer downsize government buildings while in a civil war
  • AI will now hire enough Generals to effectively garrison their HQs (e.g. to repel naval invasions)
  • Ensured wars between AI countries do not stall due to neither side ordering their generals to advance
  • AI is more keen to do reforms to avoid civil war, especially if a subject (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • AI now values institution spending higher and in accordance with its Strategies
  • Improved AI's ability to manage Infrastructure levels across their market
  • Improved AI's ability to reform its government to maintain reasonable Legitimacy levels
  • AI will now handle their Generals better, ensuring they are assigned to advance or defend fronts as is appropriate
  • Adding more primary demands now increases sympathy for opposing side
  • AI now sets tariff policies on goods according to their interests
  • AI should no longer offer or accept a white peace when the odds are overwhelmingly in their favor
  • AI now values the war goal of revoking Treaty Ports more consistently in Diplomatic Plays
  • AI no longer gets stuck in a spiral of low infrastructure due to underemployed railways
  • AI is now better at prioritizing construction and usage of Logging Camps
  • AI will not try to form Germany/Italy until they have nationalism (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • AI, including the Autonomous Investment AI, now correctly assesses the effects of Economy of Scale when determining where to expand a building
  • Countries will now tend to maintain Generals on stand-by in important coastal HQs to protect from naval invasions
  • A revolutionary country that has already won the revolution will now be willing to make a white peace with remaining countries in the war
  • AI is now less likely to take sides in diplomatic plays without a good reason to do so
  • Fixed a bug that was causing DIPLO_PLAY_BOLDNESS_WEAK_ARMY_FACTOR not to be included in the calculations, AI should now be more likely to back down and less likely to intervene in plays if their own army is very weak
  • Reduced the overall aggression levels of the AI, as it was overtuned to compensate for (now fixed) bugs listed below
  • AI is now more aggressive against ideological enemies, and a bit less aggressive against ideological allies
  • AI is now generally better at constructing peace deals that might end up ceding wargoals to both sides
  • AI now has an improved understanding of which wargoals are more important than others to press and not have pressed on themselves
  • AI is now less random about who it has sympathy for in a Diplomatic Play, and more inclined to support allies and subjects
  • Fixes a bug where AI was miscalculating countries that are likely to declare neutrality as potential enemies, causing it to be far too passive with starting plays in regions with a lot of interests
  • AI is now less inclined to overbuild railroads in states that have free infrastructure
  • Fixed a bug where AI Generals were getting stuck on fronts
  • AI should no longer get into a state where it constantly moves generals back and forth between fronts
  • AI is now better at understanding how lucrative Gold Mines are
  • The AI must now wait for a cooldown period before resending an offer the player rejected
  • Fixed a bug that caused AI peace desire from military strength to be reversed
  • Fixed reversed check in achievable wargoals that was causing a country that was winning to peace out too early
  • Fixed a bug where the AI did not understand that potential allies may not be able to join them due to truces and launched potentially suicidal plays as a result
  • Fixed a bug where allies of the initiator could sometimes ignore truces with the target
  • AI now looks at the relative power of the two sides' militaries when deciding how much it wants to make peace
  • AI will now never abandon allies and subjects in diplomatic plays where they're not actually at risk due to very weak enemies, etc
  • AI should now understand Construction Efficiency maluses better and use this knowledge while queueing new constructions
  • AI is now much more interested in using Automation methods, particularly when the cost of the needed goods is low
  • AI should now be unwilling to invest in ports if it already has a lot of free convoys and the port wouldn't connect any new states to its market
  • Fixed an inconsistency in AI memories where sometimes it was tracking time by days and other times months
  • Fixed an issue where Generals standing by in non-home HQs were considered to be garrisoning their home HQ
  • AI now completes expeditions more regularly
  • AI now places higher importance on conquering land-adjacent states
  • AI is now more aggressive against Council Republics if they are themselves not a Council Republic
  • AI is now more aggressive against countries with radical economic laws (Worker’s Co-ops and Command Economy) if they themselves do not have a radical economic law
  • AI values obligations from irrelevant countries less (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • Russia is better at expanding in Central Asia (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • AI should now be better at establishing Electrics Industries in the mid-game
  • AI may now choose event option with AI weight 0 as a fallback if all other options are disabled due to failed trigger
  • AI is now less willing to agree to peace if there are wargoals their side is likely to achieve through capitulation that aren't part of the peace
  • Increase AI's tendency to be neutral in native uprisings
  • "Powerful Protectors" diplomatic approval malus is no longer applied when the powerful protector is the country making the offer
  • USA is now much more keen to map the western frontier (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • Italian minors are more aggressive about pursuing unification (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • AI will no longer demand Treaty Ports or Open Market war goals from countries in their own market
  • AI will no longer demand an Open Market if they already have or are demanding a Treaty Port of the country in the same Play
  • AI now considers plentiful gold reserves to be less important for deciding when to peace out
  • Fixed a bug that made the AI reluctant to side against secessions due to risk of spreading when they should actually be reluctant to side with them
  • European Powers will not take full states in China while Fragile Unity is active unless another European Power has already done so (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • British India will not rebel, to avoid being shattered (from "Open Beta Tweaks" mod by One Proud Bavarian and Doodlez)
  • Increased Britain's recklessness in the Opium Wars a bit


Continued in Part 2!

Dev Diary #76 - Performance



Hello and welcome to this week's Victoria 3 dev diary. This time we will be talking a bit about performance and how the game works under the hood. It will get somewhat detailed along the way and if you are mostly interested in what has improved in 1.2 then you can find that towards the end.

For those of you who don’t know me, my name is Emil and I’ve been at Paradox since 2018. I joined the Victoria 3 team as Tech Lead back in 2020 having previously been working in the same role on other projects.

What is performance


It’s hard to talk about performance without first having some understanding of what we mean by it. For many games it is mostly about how high fps you can get without having to turn the graphics settings down too far. But with simulation heavy games like the ones we make at PDS another aspect comes into play. Namely tick speed. This metric is not as consistently named across the games industry as fps is, but you might be familiar with the names Ticks Per Second or Updates Per Second from some other games. Here I will instead be using the inverse metric, or how long a tick takes on average to complete in either seconds or milliseconds. Some graphs will be from debug builds and some from release builds, so numbers might not always be directly comparable.

What exactly a tick means in terms of in game time varies a bit. In CK3 and EU4 a tick is a single day, while on HOI4 it's just one hour. For Victoria 3 a tick is six hours, or a quarter of a day. Not all ticks are equal though. Some work might not need to happen as often as others, so we divide the ticks into categories. On Victoria 3 we have yearly, monthly, weekly, daily, and (regular) ticks.

If you thought 1.1 was slow you should have seen the game a year before release…


Content of a tick


Victoria 3 is very simulation driven and as such there is a lot of work that needs to happen in the tick. To keep the code organized we have our tick broken down into what we call tick tasks. A tick task is a distinct set of operations to perform on the gamestate along with information on how often it should happen and what other tick tasks it depends on before it is allowed to run.

An overview of some of the tick tasks in the game. Available with the console command TickTask.Graph.


Many of the tick tasks are small things just updating one or a few values. On the other hand some of them are quite massive. Depending on how often they run and what game objects they operate on their impact on the game speed will vary. One of the most expensive things in the game is the employment update, followed by the pop need cache update and the modifier update.

Top ten most expensive tick tasks in our nightly tests as of Feb 15. Numbers in seconds averaged from multiple runs using a debug build.


As you can see from the graph above many of our most expensive tick tasks are run on a weekly basis. This combined with the fact that a weekly tick also includes all daily and tickly tick tasks means it usually ends up taking quite long. So let’s dive a bit deeper into what’s going on during a weekly tick. To do this we can use a profiler. One of the profilers we use here at PDS is Optick which is an open source profiler targeted mainly at game development.

Optick capture of a weekly tick around 1890 in a release build.


There’s a lot going on in the screenshot above so let’s break it down a bit. On the left you see the name of the threads we are looking at. First you have the Network/Session thread which is the main thread for the game logic. It’s responsible for running the simulation and acting on player commands. Then we have the primary task threads. The number will vary from machine to machine as the engine will create a different number of task threads depending on how many cores your cpu has. Here I have artificially limited it to eight to make things more readable. Task threads are responsible for doing work that can be parallelized. Then we have the Main Thread. This is the initial thread created by the operating system when the game starts and it is responsible for handling the interface and graphics updates. Then we have the Render Thread which does the actual rendering, and finally we have the secondary task threads. These are similar to the primary ones, but are generally responsible for non game logic things like helping out with the graphics update or with saving the game.

All the colored boxes with text in them are different parts of the code that we’ve deemed interesting enough to have it show up in the profiler. If we want an even more in depth we could instead use a different profiler like Superluminal or VTune which would allow us to look directly at function level or even assembly.

The pink bars indicate a thread is waiting for something. For the task threads this usually means they are waiting for more work, while for the session thread it usually means it is blocked from modifying the game state because the interface or graphics updates need to read from it.

When looking at tick speed we are mostly interested in the session thread and the primary task threads. I’ve expanded the session thread here so we can see what is going on in the weekly tick. There are some things that stand out here.

First we have the commonly occurring red CScopedGameStateRelease blocks. These are when we need to take a break from updating to let the interface and graphics read the data it needs in order to keep rendering at as close to 60 fps as possible. This can’t happen anywhere though, it’s limited to in between tick tasks or between certain steps inside the tick tasks. This is in order to guarantee data consistency so the interface doesn’t fetch data when say just half the country budget has been updated.

The next thing that stands out is again the UpdateEmployment tick task just as seen in the graph above. Here we get a bit more information though. Just at a glance we can see it’s split into (at least) two parts. One parallel and one serial. Ideally we want all work to be done in parallel because that allows us to better utilize modern cpus. Unfortunately not all of the things going on during employment can be done in parallel because it needs to do global operations like creating and destroying pop objects and executing script. So we’ve broken out as much as possible into a parallel pre-step to reduce the serial part as much as possible. There is actually a third step in between here that can’t be seen because it’s too quick, but in order to avoid issues with parallel execution order causing out of syncs between game clients in multiplayer games we have a sorting step in between.

Closer look at the UpdateEmployment tick task.


Modifiers are slow


One concept that’s common throughout PDS games is modifiers and Victoria 3 is no exception. Quite the opposite. Compared to CK3 our modifier setup is about an order of magnitude more complex. In order to manage this we use a system similar to Stellaris which we call modifier nodes. In essence it’s a dependency management system that allows us to flag modifiers as dirty and only recalculate it and the other modifiers that depend on it. This is quite beneficial as recalculating a modifier is somewhat expensive.

However, this system used to be very single threaded which meant a large part of our tick was still spent updating modifiers. If you look at the graph at the top of this dev diary you can see that performance improved quite rapidly during early 2022. One of the main contributors to this was the parallelization of the modifier node calculations. Since we know which nodes depend on which we can make sure to divide the nodes into batches where each batch only depends on previous batches.

Closer look at the RecalculateModifierNodes tick task.


Countries come in all sizes


A lot of the work going on in a tick needs to be done for every country in the world. But with the massive difference in scale between a small country like Luxembourg and a large one like Russia some operations are going to sometimes take more than a hundred times as long for one country compared to another. When you do things serially this doesn’t really matter because all the work needs to happen and it doesn’t really matter which one you do first. But when we start parallelizing things we can run into an issue where too many of the larger countries end up on the same thread. This means that after all the threads are done with their work we still have to wait for this last thread to finish. In order to get around this we came up with a system where tick tasks can specify a heuristic cost for each part of the update. This then allows us to identify parts that stand out by checking the standard deviation of the expected computation time and schedule them separately.

One place where this makes a large difference is the country budget update. Not having say China, Russia, and Great Britain all update on the same thread significantly reduces the time needed for the budget update.

(And this is also why the game runs slower during your world conquest playthroughs!)

Closer look at the WeeklyCountryBudgetUpdateParallel tick task. Note the Expensive vs Affordable jobs.


Improvements in 1.2


I’m going to guess that this is the part most of you are interested in. There have been many improvements both large and small.

If you’ve paid attention to the open beta so far you might have noticed some interface changes relating to the construction queue. With how many people play the game the queue can end up quite large. Unfortunately the old interface here was using a widget type that needs to compute the size of all its elements to properly layout them. Including the elements not visible on screen.

New construction queue interface.


To compound this issue even further the queued constructions had a lot of dependencies on each other in order to compute things like time until completion and similar. This too has been addressed and should be available in today’s beta build.

Side by side comparison of old vs new construction queue.



One big improvement to tick speed is a consequence of changes we’ve done to our graphics update. Later in the game updating the map could sometimes end up taking a lot of time which then in turn led to the game logic having to wait a lot for the graphics update. There’s been both engine improvements and changes to our game side code here to reduce the time needed for the graphics update. Some things here include improving the threading of the map name update, optimizing the air entity update, and reducing the work needed to find out where buildings should show up in the city graphics.

Graphics update before/after optimization.


As we talked about above, the employment update has a significant impact on performance. This is very strongly correlated with the number of pops in the game. As in the number of objects, not the total population. Especially in late game you could end up with large amounts of tiny pops which would make the employment update extremely slow. To alleviate this design has tweaked how aggressively the game merges small pops which should improve late game performance. For modders this can be changed with the POP_MERGE_MAX_WORKFORCE and POP_MERGE_MIN_NUM_POPS_SAME_PROFESSION defines.

Another improvement we’ve done for 1.2 is replacing how we do memory allocation in Clausewitz. While we’ve always had dedicated allocators for special cases (pool allocators, game object “databases”, etc) there were still a lot of allocations ending up with the default allocator which just deferred to the operating system. And especially on Windows this can be slow. To solve this we now make use of a library called mimalloc. It’s a very performant memory allocator library and basically a drop in replacement for the functionality provided by the operating system. It’s already being used by other large engines such as Unreal Engine. While not as significant as the two things above, it did make the game run around 4% faster when measured over a year about two thirds into the timeline. And since it’s an engine improvement you can likely see it in CK3 as well some time in the future.

In addition to these larger changes there’s also been many small improvements that together add up to a lot. All in all the game should be noticeably faster in 1.2 compared to 1.1 as you can see in the graph below. Unfortunately the 1.1 overnight tests weren’t as stable as 1.2 so for the sake of clarity I cut the graph off at 1871, but in general the performance improvements in 1.2 are even more noticeable in the late game.

Year by year comparison of tick times between 1.1 and 1.2 with 1.2 being much faster. Numbers are yearly averages from multiple nightly tests over several weeks using debug builds.


That’s all from me for this week. Next week Nik will present the various improvements done to warfare mechanics in 1.2, including the new Strategic Objectives feature.

Victoria 3's Update 1.2 "Hot Cinnamon Spice" OPEN BETA is now available!

Hello everyone!

We have opened up an open beta for Victoria 3 Update 1.2, which after careful consideration by the entire team has been named “Hot Cinnamon Spice”!
We’ve been working on this update for a while now and we hope that it will provide a significant improvement to your experience with Victoria 3. Before we unleash it fully we’d like for you all to give it a go and provide us with feedback so that it can be the best it can be. The final release date of the full update will be revealed later.

How to opt-in to the Open Beta:
First of all we'd like to recommend everyone to start a fresh game and not use existing 1.1 save files. To opt-in you right click Victoria 3 in Steam, go to properties, click on the tab that says BETAS and in the dropdown list there you should be able to select the “1.2-beta”. Let the game update and you should be ready to go. If you wish to opt-out from the beta you repeat the above process but pick “none” in the dropdown list.

Step by Step Guide
1. Right click Victoria 3 in your Steam library
2. Go to Properties
3. Click "BETAS" on the menu to the left
4. Pick 1.2-beta in the dropdown list
5. Allow for your game to update
6. Start Victoria 3 as you normally would

How to report bugs and give feedback:
Our primary channel for communications will be the Victoria 3 Discord Server in the OPEN BETA section where you can post feedback and report bugs!
You can also file bug reports in the bug report forum (make sure you specify the bug is found in the 1.2 Beta build).
PLEASE NOTE THAT WE WILL NOT BE COLLECTING BUG REPORTS ON STEAM - ONLY ON DISCORD AND OUR OFFICIAL FORUM

Updates to the build:
We’ll be updating the open beta build on a regular basis and any updates will be communicated on Discord. Please note that updates may render your save file incompatible.

THREAD ABOUT KNOWN ISSUES CAN BE FOUND HERE!

Dev Diary #75 - Diplomatic Improvements in 1.2



Hello and welcome to another Victoria 3 Dev Diary about Update 1.2! By now the Open Beta is of course in full swing, and everything in this post will either already be available to try out or be part of one of the upcoming updates to the Open Beta in the following weeks. However, we still want to take the time to properly outline the changes we’re making to the game in 1.2 for those who either don’t want to opt into the Open Beta or are just interested in more detail and context. Today’s Dev Diary will be focusing on changes on the Diplomatic side of the game, both in terms of new functionality and AI.

The first improvement we’re going to go over today is Colonial Claims, which is a change to Colonization that is intended to prevent some of the more ahistorical nonsense we have going on in colonization at the moment, such as countries rushing for Hokkaido before Japan can get it or the United States setting up shop in Tierra del Fuego. Quite simply, what it means is that some countries now start with claims on states owned by Decentralized Nations, and any country which *doesn’t* have a claim on that state is blocked from colonizing it so long as the claiming state maintains an Interest there.

As an example, the Hudson Bay Company starts with a claim on Alberta in 1.2, while the United States of America does not, which means that the USA cannot start just colonizing into Canada without first forcing the HBC to revoke their claim through the use of a ‘Revoke Claim’ war goal. Similarly, Chile and Argentina have overlapping claims on some parts of Patagonia and thus are able to race each other for it, but won’t have it sniped away from them by a Belgium with grandiose Latin American ambitions.

While we’re on the topic of colonization, I should also mention that something else we’ve changed to improve how it plays 1.2 is how the Native Uprising diplomatic play works. In 1.1.2, a colonizer that defeats a Native Uprising would annex the entire native Decentralized Nation, which led to some weird pacing and balance issues. This has been changed to instead give the colonizer a special ‘Colonial Rights’ diplomatic pact with the defeated natives, which lasts for the duration of the truce. During this period, colonization speed is doubled and no further uprisings can occur from that particular Decentralized Nation.

It is no longer possible to simply snipe Hokkaido away from the Japanese Shogunate, as they start with a claim on the Ainu-controlled parts of the island


Next up is a change to Diplomatic Plays that allows countries to expand their Primary Demands in a play. An issue that has been repeatedly identified by players since release is that once they grow strong enough, the AI has a tendency to back down against them in plays, ceding one war goal at a time and setting in place a five-year truce before the next demand can be made. While this does fit with the design principle that there should be a reason to want to back down, the end result could end up unduly frustrating and wasn’t just an issue for the player, either, as the AI of the USA struggled to reach the West Coast when it could only take one state off Mexico at a time.

To address this in a way that directly tackles the problem while still ensuring that it still isn’t simply best to always take your chances with a war, we’ve changed the concept of Primary Demand (ie the first war goal added, which gets enforced when backing down) to Primary Demands, which will all be enforced when the enemy backs down, and Secondary Demands, which will only be relevant if the play escalates to war. Just as it works right now, the first war goal added on each side is always a Primary Demand, but there are now ways to add more Primary Demands beyond the first.

Firstly, any war goal targeting the main opponent (or any of their subjects) that is added by Swaying another country to your side will now automatically be a Primary Demand. In other words, if you’re launching a play against France and they’re being supported by Spain, any country you sway to your side with a war goal targeting France will have that war goal added as a Primary Demand, while war goals targeting Spain are Secondary Demands. The AI understands this and will place higher value on Primary Demands, since they are much more likely to actually receive what’s promised by the war goal in the end.

Secondly, any war goals you yourself add can be made into Primary Demands if they target the main opponent (or any of their subjects). However, doing so is considered less ‘justified’ than adding Primary war goals through swaying, and so will cost an amount of maneuvers and generate an amount of infamy proportional to the cost of adding the war goal in the first place. This means that while adding more Primary Demands for yourself ensures that you receive them if you end up making them back down, it isn’t free, and is done at the expense of adding additional war goals or swaying more countries to your side. The AI is also going to receive some tweaks here to make them less likely to back down if you keep piling on Primary Demands, as at a certain point the unreasonableness of the demands just becomes too much to take without making a fight of it.

The cost of expanding your Primary Demands is entirely relative to the cost of the wargoal, so in the case of taking the small and depopulated state of Utah, it’s quite low


On the topic of AI, we move on to the final topic for today’s dev diary: Peace AI and War Exhaustion mechanics. Both of these have received a bunch of improvements in 1.2, though most of these improvements have not yet made it into the Open Beta. War Exhaustion, of course, is the rate at which a country’s War Support drops towards -100, at which point they are forced to capitulate. In the 1.1.2 version of the game, the main driver of War Exhaustion is occupation of territory, particularly wargoals and the capital, leading to the much-maligned ‘just naval invade Berlin’ meta.

In 1.2, you still get War Exhaustion from occupation, but the amount gained from occupied wargoals/capital is less, and War Exhaustion from occupation of other territory now scales non-linearly, with severity increasing rapidly as the country approaches full occupation: a fully enemy-controlled Modena will still capitulate quickly, while a Russia that has lost control of a few states in the Caucasus is barely going to be affected. Instead, the primary driver of War Exhaustion is now casualties and battles lost. War Exhaustion from Casualties now scale against the total available manpower for the country instead of its Population, so a country with an army of 10,000 is going to be much more affected by 5000 casualties than a country with an army of 100,000, even if the two countries have the same overall population. For available manpower, all regular battalions are counted (whether mobilized or not), but conscripts are only counted once they’re actually called in - so calling up more conscripts can be a way to directly affect your War Exhaustion rate.

Furthermore, War Exhaustion from Casualties now scales against the % of battles (proportional to battle size, so a battle of 100 battalions vs 100 battalions counts more than one of 5 vs 1) that your side of the war has lost. What this means is that a country which keeps winning battles can absorb far more losses than one which keeps losing them, and allows for battlefield victory to play much more directly into achieving overall victory in the war.

Even though the amount of casualties relative to army size are fairly similar owing to the massive Qing army, the British are losing war support at a much slower rate due to their string of battlefield victories




The AI for making peace has also received some upgrades. In addition to now just being better at constructing equitable peace deals through a rewrite of the core logic behind AI-made peace deals, the AI has also been made to consider more angles when deciding whether or not a peace deal is acceptable. Firstly, a new factor has been added called ‘achievable wargoal’, where the AI looks at whether a war goal is likely to be gained by the side that holds it through the capitulation of the target if a peace deal is not signed. Such wargoals, if held by the AI, will make them far more reluctant to sign peace unless those wargoals are part of the peace, while they are simultaneously more likely to accept the enemy pressing wargoals against them that they’d just lose anyway if the war continued. Secondly, the AI now looks at more additional factors for peace (such as the relative military strength of the two sides) and other factors have been tweaked, for example the size of AI Gold Reserves now has less importance than it used to.

Even though the Qing are offering considerable concessions, the British AI will refuse this peace deal because they believe they can get everything they want anyway once Qing is forced to capitulate


That’s it for today! This is of course not an exhaustive list of everything that’s been improved diplomacy-wise in 1.2, and there are a number of improvements still planned for future Open Beta updates, particularly on making the diplomatic AI behave in a more plausible way and be better at sticking by important allies, but details on that will have to wait for another day. Next week, we continue talking about the 1.2 Update as our tech lead Emil will tell you all about the improvements we’ve made to Performance. See you then!

Dev Diary #74 - UX Improvements



Hello, my name is Henrik, and I am one of the UX Designers on Victoria 3. For 1.2 I have been fully focused on improving the user experience of the game. Before we go into the details of what has been worked on for this update, I want to give a special thanks to the community, all the modders, and anyone who posted feedback here on the forum, Discord, Reddit, Youtube, or any of our other communication channels. Your feedback, ideas, and discussions have all been instrumental in helping the team prioritize our time and efforts for this update.

Trade Routes


One of the first things we started with immediately after 1.1.2 was improving the usability of the Trade Routes panel. In addition to the current view of grouping Trade Routes by Goods, you can now get a sortable list of all Trade Routes in the Market, or get a view where they are grouped by Country. All of these lists can also be filtered to exclude any Routes not owned by you. The Country grouping is especially useful when setting up Embargos or Trade Agreements.





Message Settings


Our new Message Settings window lets you decide how you want a specific Notification to be displayed, and if you want the game to automatically pause when it gets triggered. In future updates, we are planning on expanding this to cover more functionality, like the Current Situation panel, Alerts etc.



Parallel to adding Message Settings, we also made a pass on making sure that the Notifications we post to the player are informative and have a reasonable default setting for how to present them. Among the tweaks we have done are:


  • Make the “Interest Activated/Deactivated” Notification into a “You can now conduct Diplomacy with X” Notification that only triggers if the activated/deactivated Interest is the first/last one that overlaps with any of your Interests
  • Moving the Price Report to the Market Panel (turned off by default, can be turned on in the Message Settings panel)
  • Splitting up Trade Routes Notifications into significant and less significant versions (Significant is turned on by default, less significant is not)
  • Only show “Mobilization” and “Declare Neutrality” Notifications if you are committed to the Diplomatic Play in question
  • Only show resource related Notifications if they happen in your Market (previously Strategic Regions in which you have an Interest in)


All of these changes should, according to our benchmarks, reduce the number of Notifications by roughly 50% for most Countries. In addition to this, we have also tweaked the animations for the Notification feed, so the overall user experience of the entire system should be much improved.

Rebindable Keys


Our shortcut system has been replaced by a new system that can leverage rebindable keys. When adding this new system also made a pass and added a few more shortcuts, as well as hooked in a few existing ones in more places.



Pop Needs


Another fully reworked panel is the Population overview, which now gives you more information about who your Pops are, how many they are, how much money they make, what they spend it on, and how much that goes to increasing/decreasing their Standard of Living (the last one not included in the screenshot, but visible without scrolling when the Taxes and Needs sections are collapsed).



In addition to creating this new panel, we have exposed more information in the Pop Lists used throughout the game, and improved a few of the Pop Need tooltips. They should now surface more of the relevant information higher up in the information hierarchy.



Economy


Martin has already discussed some of the changes regarding Construction in DD #71, and in addition to these changes we have improved the user experience of the gameplay loop by providing better contextual information in several places. For example, we have added Infrastructure, Available Labor, and Qualifications to the Map List that is shown when expanding Buildings. In the screenshot below you can also see that we have restructured the layout of the Map Interaction panel to make it possible to navigate directly to another panel, which in the case of the Construction Interaction is the Building details panel for the specific Building. This layout also allows for more reasonable tooltip positioning, making it easier to navigate into a nested tooltip without accidentally opening another tooltip when moving the cursor towards the tooltip you wanted to dig into the details of.



The most recent improvement that made it into the game is the Reset Production Methods Map Interaction, a PDT project by our Lead Designer Mikael and myself. It should make it much more efficient to streamline the production in your Country, which is especially useful if you have just acquired a few new States. This is currently somewhat of a work in progress, and we are hoping to expand this to work on Buildings and Building Types in the future.



One of the most popular mods for the game is currently Visual Methods by FUN, a mod that we liked so much that we decided to make our own, slightly tweaked, version of.



The Investment Pool is now being more prominently displayed in the Buildings panel.



The tooltips for Market Access have also been improved to give more detail as to why a State is not fully connected to the National Market.



Radicals and Loyalists


We have improved the presentation of why your Pops turn Radical or Loyal, who they are and which Interest Groups they belong to. Information regarding this has been exposed in several tooltips and panels, like the Interest Group panel.





Convoys


Your current Convoy balance has been added to the Top Bar, making it much easier to keep track of and access when needed. This item will be hidden for landlocked Countries and unlocked as soon as you gain access to a coastline.



Map Modes


We have added three new Map Modes (Literacy, Population and Infamy), and given the transition between two Map Modes a configurable fade in/out to make it smoother. One of the first mods I personally subscribed to at release was Practical Heatmaps by Ronin Szaky, and an ever-so-slightly tweaked version made its way into the base game in 1.2.



Diplomacy


For Diplomacy, we have improved how we show AI Acceptance and signal more clearly if offering or using an Obligation would convince them to accept.



We have also exposed all types of Diplomatic Plays on the Country details panel, not only the ones you can currently start, making it easier to figure out what is blocking you from starting a particular Play.



Military


When it comes to the Military system, the focus for the UX improvements in 1.2 has revolved around making it clearer how the Battle systems work. We approached this by exposing more data related to Battles, as well as, improving some of the tooltips presenting breakdowns of the calculations involved. Some effort has also been made to decrease the amount of visual noise from multiple Front Markers.



Work in Progress tooltip for the breakdown of the initial number of troops each General was able to bring to the Battle.



We have also surfaced the information regarding which HQ a Commander considers their Home HQ and made some improvements to the information presented in the Naval Invasion user flow.





Outliner


The Outliner has gotten some polish, with pinnable Goods and non-Military Characters being the biggest additions. Interest Groups are now showing their Approval value, and States show their Available Labor and Qualifications.







Tech Tree improvements


The Tech Tree Improvements discussed in DD #70 also made it for 1.2.

Closing words


In addition to all of these changes listed above, we have also made over 100 smaller UX tweaks and bug fixes, which you will either have to wait for the full patch notes to explore, or experience for yourself during the Open Beta. Once again, thanks for all the feedback, it really helps us make the game as great as it deserves to be!

Next week, Martin will be showing us diplomacy improvements coming in 1.2!

Dev Diary #73 - Open Beta and Update 1.2 overview

Hello and welcome! Today we'll be covering several topics relating to Update 1.2:


  • Open 1.2 Beta
  • Feature Overview
  • Anticipated 1.2 Release Date


As mentioned in our last dev diary, 1.2 is a big update with some far-reaching changes, and we don't want to push it out before we feel it's ready for primetime. We're happy overall with the reception of Update 1.1, but those of you who were with us during its initial release will remember - perhaps fondly, perhaps not - how the Legitimacy mechanics seemed to change from day to day for a while there. While we finally managed to iron out most of the kinks in 1.1.2 (more on that later) this is the kind of scenario we'd like to avoid going forward. With a game as highly interconnected and complex as Victoria 3, the only way to do that is to give the patch enough time in the oven, letting our playtesters really give everything a solid rundown.

At the same time, Update 1.2 brings some substantial improvements in several areas that we know are important to you, and we don't want to keep those away from you longer than we absolutely have to. Disentangling specific improvements and bug fixes from the rest of the changes that have already been done to the branch is itself laborious and error-prone. Our assessment is that releasing those in hotfixes would be risky.

So how do we marry these two things together - giving you access to upcoming content as soon as possible, while ensuring high quality of the upcoming update? By launching our first Open Beta, of course! In this way you will have a chance to experience all the juicy parts of Update 1.2, but also share your feedback with us in advance, allowing us to improve what we are currently working on.

Our planned beta launch date is February 8th at 10:00 CET. At that point a new Steam beta branch 1.2-beta will become available to anyone who owns Victoria 3. A new forum post will be made with step-by-step instructions for how to enable it. Once you've started playing the beta, you can always switch back to the live branch in the same way. As always, your existing save games might not be fully compatible with this new version, and you should definitely not expect saves made in 1.2 to be backwards compatible with 1.1.2.

We will also launch a new beta section on our Victoria 3 Discord server where you can discuss the update with other players and report any bugs or balance issues you find. Our moderators will be active on this channel, and so will developers and QA team members as time permits. If you prefer not to use Discord you can also file bugs using our forum bug report tool, even for the beta version.

After the initial beta release, we plan on releasing two additional updates on the beta branch on a weekly basis, containing additional bug fixes, performance improvements, etc and also adjustments we've made according to your feedback. The exact release dates and times of these updates are to be confirmed, but we will keep you posted on the Discord channel.

To set expectations at the right level, playing the beta build will not be a buttery-smooth experience! Some aspects of the game will be greatly improved, but other things will be in a rougher state, and there will be bugs (if not, we'd just launch it without a beta phase!)

Also, some features will be in a less mature state at the beginning of beta than they will be at release. For example, Strategic Objectives will be limited to one per country during the beta, but the intent is to expand this to allow for designating multiple Strategic Objectives. This slimmed-down version is included in the beta to allow you to try it out and feedback on how it feels in general while we continue to work on the full implementation.

So do keep in mind that while you'll get a sneak peek at the latest features and will see many improvements, you should expect some speed bumps along the way. And when you do, we want to hear about it!

Below you can find a short list of some of the new features and improvements made in 1.2. As always, just because something is not on this list doesn't mean we're not aware of it, and may even have addressed it already! The full changelog will be published closer to the release date.



New Features

  • Autonomous Investment system
  • Strategic Objectives for planning military campaigns
  • Customizable notification settings
  • In-game music player
  • Key rebinding


Improvements and bug fixes

  • Performance optimization
  • Improved AI handling of economy and military, including port management
  • Greater differences in economic systems
  • More realistic modeling of trade route profits and GDP
  • Worldwide Arable Land revision and migration balancing
  • Mega-parties limited by tweaks to party formation logic and ideology


Interface

  • Trade panel overhaul for easier route management
  • More clarity on Pop Needs, Convoys, Radicals and Loyalists
  • Visual upgrades to mapmodes and lenses, such as showing Infrastructure and employable Pops when expanding buildings
  • Outliner enhanced with pinnable market goods and characters
  • Reduced notification spam


We are going to cover most of these things in dev diaries leading up to the release of 1.2, so details on what exactly these entail may be sparse until then. However, all of these will be in the beta build when we release it (although to reiterate, perhaps not in their final form) so come February 8th you can explore them for yourself!

After the third and final beta release, but before the live release of Update 1.2, you can expect the beta build and the beta section on Discord to become unavailable, as we will be channeling all our resources into the release. We will keep you updated on the expected beta shutdown date on Discord as well, of course.

Our preliminary release date for Update 1.2, assuming all goes according to plan, is March 13th. For those of you who opt to continue playing 1.1.2 until then you can follow the new features in upcoming dev diaries. For the rest of you, I'll see you on Discord on Feb 8!

Victoria 3 Discord QnA! February 7th!

Dev Diary #72 - Economic Law Changes in 1.2



Hello and welcome to the second Victoria 3 dev diary for 2023! Today we’re going to continue talking about patch 1.2 for Victoria 3 (release date to be announced), on a topic that is closely related to last week’s dev diary, namely Economic Laws and how they have changed in 1.2. As we mentioned in Dev Diary #64, one of our post-release ambitions is to increase the differences in gameplay between different economic systems. What I mean by that is that there should be deeper mechanical differences between for example Laissez-Faire and Command Economy in terms of how they impact your country and the economic decisions you make. All of the existing Economic Laws have received changes in 1.2 and we’ve also added a new one, so I’m simply going to go through them one by one and explain how they work now.

Before I start however, I should mention a change that has happened since last week based on feedback we received on the Autonomous Investment dev diary. Several people pointed out that with a weighting system in place, there wasn’t really a need for hard restrictions on what the Investment Pool could fund under Autonomous Investment, and we agree! Thus, Autonomous Investment no longer has any restrictions on what profit-generating buildings can be built, just weighting based on who is investing and what they would want to invest in (as mentioned last week, if you’re running Agrarianism, expect a lot of farms). The restrictions still apply under Directly Controlled Investment however (and the tooltips will reflect this based on which setting you are using).

Traditionalism: Traditionalism in 1.2 is largely the same as before: A very backwards system that you should generally be trying to get out of. The main difference from 1.1 is that the Investment Pool isn’t disabled for Traditionalism, though you take a hefty penalty to investment efficiency (further reduced if you also have Serfdom) and the building types you can construct with the Investment Pool are highly curtailed if you are playing with Directly Controlled Investment.



Interventionism: The ‘golden middle way’ of economic laws, Interventionism also isn’t extensively changed in 1.2: It provides no particular bonuses or penalties, but gives you the freedom to subsidize any and all building types as well as extensive options for the Investment Pool under Directly Controlled Investment, while providing a balanced allocation between Private and Government Construction Allocation under Autonomous Investment.



Agrarianism: Agrarianism has received a fairly substantial boost in 1.2, with both the addition of Farmers as an investing Pop Type and a hefty bonus to the efficiency of all rural investments. Capitalists are now also not locked out of investing under Agrarianism, though they do so at a penalty and their building selection is quite limited if you’re playing with Directly Controlled Investment.



Laissez-Faire: The invisible hand of the Free Market made manifest, Laissez-Faire in 1.2 is meant to be the go-to law for the player that wants to get the absolute most out of their Investment Pool when it comes to industrializing. It does come with some significant drawbacks though, as it is no longer possible to downsize non-government buildings under Laissez-Faire.



Cooperative Ownership: A new Economic Law introduced in 1.2, Cooperative Ownership is now a fully fledged economic system instead of just being unlocked by becoming a Council Republic. Under Cooperative Ownership, all Pops working in a building receive an equal number of shares and Aristocrat/Capitalist jobs are eliminated. While this should lead to higher Standard of Living among the workforce, it also means far less money in the Investment Pool, as Farmers and Shopkeepers invest far less than their wealthier counterparts under other systems.



Command Economy: Command Economy is the law that has received the largest (and most needed) overhaul under 1.2. Instead of being a frankly weird system where the Bureaucrats own the profits but you are required to subsidize them, Command Economy now makes use of a new system called Government Shares, which is used by the Government Run ownership production method. Just like how Pop Shares entitle Pops to a portion of a building’s dividends, Government Shares ensure that buildings pay some or all of their profits directly into the treasury - though in large economies this is subject to an efficiency modifier, with some of the money being wasted due to the inefficiencies inherent to large, heavily centralized systems. While this is not something we currently have a setup for in the base game, Government Shares can also freely be mixed with Pop Shares, so we’re looking forward to seeing what modders make with this!



Another change you might have noticed when looking at the screenshots in this dev diary is that we have tied some economic laws more closely to a country’s Distribution of Power and Government Principles. For one, seizing the means of production is no longer a one-step reform into Council Republic, but rather a multi-step reform that involves first implementing a Council Republic, then Cooperative Ownership, and finally allows you to branch off into Anarchism if you so desire. Command Economy now also requires Autocracy or Oligarchy, as it’s difficult to pull off a fully centralized economy without the corresponding amount of centralized powers (and with the new Government Shares mechanic should provide more reasons to want to keep a grip on power in the late game).

So the question on everyone's mind is, when will you be able to play with these changes and all the other updates and fixes coming in 1.2? Some of these changes are pretty big and we don't want to rush this patch out too early, but at the same time we know you're anxious to get your hands on it. To find the right balance between these we've decided to launch patch 1.2 in open beta, which we will talk more about in next week's dev diary! In there we will also focus a bit more generally on patch 1.2, giving you more of a birds-eye view of what the patch will look like, along with giving you an expected release date.

Dev Diary #71 - Autonomous Investment in 1.2

Hello and welcome to another Victoria 3 dev diary! Today’s diary marks the start of dev diaries about Patch 1.2, which is the next major upcoming patch for Victoria 3 (release date to be announced). As with 1.1, 1.2 will contain a slate of bug fixes, UX improvements, AI improvements and so on, but also some more significant changes to game mechanics, which we’re going to go over in these dev diaries.

The particular changes we’ll be talking about today, as alluded to by the title, is Autonomous Investment, which is something we said we were going to look into for our post-release plans back in Dev Diary #64. What we said back then is that while we are never going to take construction out of the hands of the player entirely, we were open to the idea of non-government entities constructing buildings in a way not directly controlled by the country, and what we came up with is a system where the Investment Pool will be used by private entities to construct different types of buildings depending on your economic laws.

Before going over how all this works, I first want to mention that we recognize that the community is somewhat split on the issue of autonomous construction, and as such, we’ve opted to create a new Game Rule for Autonomous Investment. By default, Autonomous Investment is enabled, which puts the Investment Pool out of the hands of the player, but you can choose to disable it, which puts the Investment Pool back in the player’s hands and makes it work exactly as it does in the current 1.1.2 version of the game.

The Investment Pool Game Rule allows you to enable or disable autonomous construction with Investment Pool funds, depending on your personal preference



Regardless of whether Autonomous Investment is enabled, the Investment Pool works pretty much the same as it did before: Certain Pop Types with ownership shares in buildings pay part of their dividends into the Investment Pool, the funds in which can then be drawn on for construction. There are, however, a few key differences in 1.2 compared to 1.1.

Firstly, the types of Pops that invest have been expanded from just Aristocrats and Capitalists to also include Farmers and Shopkeepers. Capitalists invest the highest percentage of their dividends (20%), followed by Aristocrats at 10%, with Farmers and Shopkeepers investing only 5% each. The rationale here is that it wasn’t only the wealthiest in society who invested in new businesses, and this also allows a small degree of investment under laws which strip ownership away from the Capitalists and Aristocrats (but more on that next week).

Secondly, the proportion of dividends that are paid into the Investment Pool varies in 1.1 based on your laws, which can have some pretty bizarre effects, such as switching to Laissez-Faire suddenly creating a bunch of Capitalist Radicals because they are now investing more money and thus end with a drop in their Wealth. The proportion of funds that are invested is now a fixed percentage based on pop type, which is then subjected to an efficiency bonus: Capitalists always invest 20% of their dividends, for example, but under Laissez-Faire, this investment is more efficient and ends up contributing more money to the Investment Pool.

There is also a general investment efficiency bonus for payments into the Investment Pool in small and mid-sized economies, and a penalty in very large ones, to ensure the Investment Pool is also relevant for mid-sized countries while not growing to such absurd proportions that it cannot possibly be spent in a 10 billion GDP country. These efficiency bonuses are meant to abstract a system of foreign investment, which is something we’ve also mentioned is on our radar in Dev Diary #64 but is a bigger rework that we are not tackling yet in patch 1.2.

Agrarianism gives a hefty bonus to the investments of your Farmers and Aristocrats, but reduces investments from Capitalists and greatly limits the types of buildings they can put their money into.


So how then, does the Investment Pool funds get turned into buildings when Autonomous Investment is enabled? Well, autonomously, of course! With Autonomous Investment, the Construction Queue is split into Private and Government Constructions, with Government Constructions being anything (regardless of whether it’s a Government building or not) ordered to be built or auto-expanded by the player or country-level AI, while a Private Construction is anything the Pops themselves are building. The Construction capacity of the country will be split between the Private and Government queues in a proportion based on your economic law, though if there isn’t enough constructions queued of one type to use its full allocation, the excess can be used by the other queue instead.

In the construction screen, you’ll be able to see what the next planned Private Construction will be, along with its current funding level. The funding level is a calculated value based on both the total funds available in the Investment Pool as well as the weekly funds coming into it, and can fluctuate based on the Market price of Goods used in construction. Once a project is funded and ready, it’ll be added to the private Construction Queue the next tick. Private Constructions, unlike Government ones, cannot be reprioritized or canceled - they will always be built in the order they are queued up by the Pops.

Though the Government is currently building nothing in France, there are several private constructions in progress, and plans for the expansion of the Alsace-Lorraine iron mines. Note that this UI is highly WIP!


Pop-ordered constructions use a variant of the standard construction AI which doesn’t take into account the country-level AI’s strategic objectives and prioritizes the creation of profitable buildings which will create lucrative jobs for the investing Pop types, but they will also take some more ‘strategic’ factors into account, such as building railroads in low-infrastructure states. Just as with the country-level AI, they also have access to the system of Spending Variables described in Dev Diary #59, which means that they do not operate on a snapshot of the current Market but understand factors such as the impact that already queued buildings (private and government-ordered both) will have on prices once completed and staffed.

Since Autonomous Investment does not only affect player countries, you might be wondering how well this system works together with the AI? The answer is that it actually works quite well! Together with a bunch of AI improvements and fixes in 1.2, this has resulted in more stable economic growth for AI countries and especially seems to have given Great Britain a boost, as the private sector doing its own thing means that the economy is usually growing even if the country’s treasury is having issues, at least as long as the Pops investing into private-sector growth are making healthy profits. There’s still some issues, particularly when AI runs out of available workforce late game, that we are hoping to tackle before 1.2 releases to further improve the AI’s economic growth.

Screenshot from a hands-off game taken in 1908. While there’s certainly still room for improvement and some countries like France and Prussia have underperformed due to wars and turmoil (and Austria continues to overperform compared to history), it’s definitely looking better than in 1.1.2.


That’s it for today! Join us again next week as we go over more changes to the economy in 1.2, with a particular focus on Economic Laws and the introduction of Government Shares in buildings.