• We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.

Victoria 3 - Dev Diary #68 - Patch 1.1 Changelog (part 4)

16_9.jpg

Hello and welcome to the final dev diary on the subject of patch 1.1! The release date for this patch is Monday December 5th, at 10:00 Central European Time. Your existing save games should be compatible* with 1.1, but as usual we will backup the old 1.0.6 version as a Steam beta branch you can rollback to if needed (e.g. for mod compatibility).

This is a chonky update so I'm not going to go over the entries in detail, but to get a more in-depth look at a few of the major things that have been added or changed to 1.1, you can take a look at our previous dev diaries.

Let's dig into it!

features.jpg

- Reworked Morale to inflict a base loss for every round of battle, modified by the difference in casualties inflicted between the sides as well as various other modifiers
- Reworked Legitimacy to provide bonuses and penalties to countries at different Legitimacy levels
- Added a new Legitimacy modifier based on Votes in Government
- Replaced Legitimacy Penalty from Government Size with a Legitimacy Penalty from Ideological incoherence
- Treaty Ports will no longer function if the owner's Power Rank isn't greater than the market owner's, ensuring Great Powers cannot use them to get access to the markets of other Great Powers

balance.jpg


- Rebalanced Legitimacy across all Laws
- Added Authority bonus to High and Very High Government Wages
- Added Morale Recovery and Power Projection bonus to High and Very High Military Wages
- Added Power Projection penalty to Low and Very Low Military Wages
- Lowered Training Rate penalty for Very Low Military Wages
- Lowered the positive and negative approval from Government/Military Wages
- Buildings will now only raise wages if they are either competing for wages or are below their minimum wage target; the target is based on employees' Expected Standard of Living to prevent too much active radicalization
- Building wage targets are lowered in unincorporated states (e.g. colonies) and for discriminated pops
- Laws that restrict cultural / religious tolerance now give a decrease to radicals and increase to loyalists from accepted cultures / religions - the more restrictive the law, the higher the effect
- Pops in Unincorporated States now have their voting power reduced according to current Incorporation level
- Mass migration now only targets incorporated states, to avoid colonies being the main target of mass migration rather than e.g. the New World
- Unincorporated states now have a lower expected standard of living than incorporated states
- Rebalanced potential Oil and Rubber deposits around the world
- Rebalanced Power Plant production method
- Reduced the impact of Artillery Commander traits
- Rebalanced Port production methods to (generally) increase Convoy production
- Rebalanced technology unlocks for potential Port levels to increase sizes over time
- Replaced Cape Colony with Persia as a recommendation for the Learn the Game objective
- USA no longer immediately starts losing its Interest in the Great Plains on game start

ai.jpg


- AI will not begin unifying Canada or Australia until Pan-Nationalism is researched
- Australian and Canadian confederation no longer forces the annexation of a player
- AI acceptance for white peace now increases over time the longer a war goes on
- AI is now less inclined to pursue annexation of subjects with whom they have good relations
- AI is now more willing to settle wars that are going nowhere with a white peace
- AI now also takes into account bankruptcy when considering peace desire, neutrality and confidence, not just debt level
- AI will now properly stop enacting a law to avoid revolution if it calculates this to be in its best interest
- AI will now properly use its investment pool when it can cover the entire construction cost, despite being in deficit
- Fixed native uprisings not mobilizing due to not being able to calculate their conscripts' power projection
- Improve the AI's understanding of when it should produce more military goods of a certain type
- Make the AI more interested in switching to more productive PMs, and less interested in switching to less productive ones unless there is a very good reason to do so
- Great Powers are much more likely to declare an interest in Arabia while the Ottomans are trying to reclaim Syria
- Liberia now begins independent, to discourage US colonization of Africa and to better reflect Liberia's de facto situation
- Changed incorrect check in Powerful Protectors that compared army size to country rank instead of army size
- Fixed some cases where the AI would use the wrong define for computing heuristics

interface.jpg


- Improves the Pop Details Panel with tabs and Consumed Goods
- Added a Good's current Trade Routes to the Goods Panel's Market tab
- Added a delay to opening map tooltips. The amount of delay is controlled by a new setting.
- Added pop consumption goods needs display to Economy and Consumption pop tabs
- Added "show more" button to the Population panel to display all categories, inspired by the "Complete Pop List" mod by Ron Swanson
- Make the Construction Queue building list items say their State as well as making the list items smaller, inspired by the "Construction Queue with States" mod by Seppiya
- Multiple changes to which notification types display as Toasts (middle of the screen) versus Feed (bottom right)
- Show usable manpower involved on each side of a battle in addition to the number of battalions
- The volume for Music Stingers and Background Music can now be adjusted independently in the Audio Settings screen
- Inactive Treaty Ports are now displayed as such, with a tooltip explaining why
- Active Production Methods are now non-clickable and more distinguishable from the rest
- Game rules are now visible even before you select a Player Objective in the New Game Interface
- Moved the Timed Modifiers higher up in the change Production Method tooltip
- The amount of unrealized taxes are now displayed in the country budget tooltip
- Transfer of Power information is now displayed better
- The outliner now shows the number of currently active unpinned Player Objective challenges and Journal Entries
- Update to the construction queue’s page buttons visuals
- Establish Trade Route Map List Panel can now sort markets alphabetically by name
- Updated text for convoy raiding order to better represent information to the player
- Right-align the Consumption tax cost in the add Consumption tax menu for better readability
- Removes decimals from Legitimacy modifier types

content.jpg


- Added decision to cancel surveys of Panama/Suez
- Added event greatly weakening the Shogunate if Japan is forced to open its market
- Skyscraper now has a Trade Nexus base PM as an option for Bureaucratic Nexus
- Changed the requirement for completing the Reading Campaign to only require 95% literacy.
- Made several repeating events fire less often
- Fixed various issues in 1848 content
- Expanded the name lists for North German, South German, North Italian, South Italian, and Thai cultures
- Added some variant unifier flags for Germany and Italy
- Germany's default flag is now the Black-Red-Gold tricolor
- Italy's default flag is now the Green-White-Red tricolor without the House of Savoy's coat of arms
- Conservative IGs such as the Landowners, Devout and Rural Folk now tend to be significantly stronger at the start of the game in most countries
- Fixed the large starting unemployment in several Decentralized Countries
- Reduced Hokkaido's population to historical levels
- Made events that strengthen abolitionism rarer in the USA
- Manifest Destiny decision now requires an Interest in the Pacific Coast
- Manifest Destiny now provide claims on the colonized split states of Mexico
- Alaska Purchase decision now has significantly easier requirements
- American West Expedition is now significantly easier to complete
- "The Dream" event for gold rushes no longer has one unequivocally better option
- Sub-Saharan African states now have more cultural homelands assigned to them
- Amended Great Qing flavor text to better fit its historical situation
- Reduced the urban center requirements for the Underground Railway Journal Entry from 30 to 20, and made the completion goal valid for cases where the country's capital and the country's market capital are in different states
- People's Springtime is now correctly triggered by a powerful Radical IG, not only through insurrection
- tanzimat_events.10 now requires Napoleonic Warfare
- migration_laws.6 now displays pop names correctly
- "A Tale of Hope" event no longer targets a null state
- "An Economic Prison" event no longer applies trade route effects to isolationist countries
- "Devout Scandal" no longer has a sentence starting with a lowercase letter
- "Elevating Our Situation" journal entry has been made less convoluted
- "Expand the East Indies Administration" is now visible whenever the Dutch East Indies exists
- "Mutually Beneficial" event now applies the correct popularity modifiers.
- "The Rogue Imperialist" event can no longer cause a diplomatic incident with yourself
- Austrian-formed Germany no longer has the Matter of Hungary Journal Entry
- Fixed many issues in cultural_homelands_events
- China now re-incorporates the states of the Heavenly Kingdom upon defeating the rebellion.
- Commanders can no longer cheat with their own spouses
- Defeat in the Opium Wars will now remove opium bans and opium ban Authority cost
- Countries with the Free Trade law can now remove trade bans but not add them
- Doctrine of Lapse decision for the British East India Company now has a proper cooldown of two years
- Elitist ideology now has a stance on theocracy
- Ethiopia now requires at least two fully controlled states to form
- Poland now requires only 5 Polish states to form rather than 7
- Event "Campaign Financing" now requires active parties to fire
- Expand Productive Building tutorial challenge now tests if the player can actually expand the target building an additional level before selecting it as a target building
- Italian nations classified as minor powers may now participate in Risoregimento
- Efficient Home Affairs modifier is now actually efficient
- Made the "Good Word of the Revolution" event less spammy
- Mustard Gas no longer permanently applies modifiers to states
- North German Federation, South German Federation, and Italy are now formable if all completion requirements are achieved before Nationalism is researched
- Numerous law enaction events will now fire properly, and not auto-cancel
- Paying for school supplies now costs bureaucracy instead of benefiting it
- Philip Sheridan's birth date is now correct
- Presidents in Republics now die less frequently
- Railway research bonus in the Atmospheric Engine tech event now requires all railway prereqs to be unlocked
- Resolved edge case where native_resettlement.4 has no options
- Resolved issue with error spam when China was annexed
- The Free States of America's name now shows up in its secession event
- The Ripper can no longer be a child or toddler
- Tooltip for "How to Reform your Government" tutorial will no longer flood the error log
- West America expedition now removes event tracking variables properly
- Bureaucracy tech no longer uses the same localization key as bureaucracy concept

modding.jpg


- Cleaned up defines to remove unused ones
- Renamed some defines to be more precise about what they do
- Exposed several parameters of character life expectancy calculation as defines

majorbugfixes.jpg


- Fixed font atlas not notifying the map system when textures where recycled, leading to garbled map names especially frequent in Chinese, Japanese, and Korean languages
- Enabled new logging system that prevents log files from growing too large
- Fixed overflows in politics related math that could lead to weird values for political strength of pops, or amount of votes in elections, and other such things
- Fixed an issue that led to most characters having a natural lifespan in excess of 90 years
- Fixed computation error that made it possible to have two highly profitable routes trading the same good back and forth between two markets
- Fixed an issue that made the "force open market" and "ban slavery" wargoals forbid the affected country from changing policy for 60 years instead of 60 months
- Fixed an overflow in gold reserves limit
- Fixed a bug that would cause garrison units to not recover morale
- Ensures that angry IGs always leave the government if able to do so, even when in a party
- Fixed an issue where tariffs would incorrectly be paid out to market owner from tariff-exempt trade routes
- Revolutionary and seceding countries can no longer engage in colonization until the civil war is over
- Discriminated Pops now have their Political Strength reduced by 90% as intended
- Pops in Unincorporated States now get a 50% penalty to Political Strength as intended
- Battalions are now assigned to battles in order of descending usable manpower (including Morale)
- Countries can no longer make progress on colonies in regions without maintaining an active Interest there
- Subjects no longer have to ratify a peace deal if their overlord does, even if they have diplomatic autonomy
- Expedition leaders are now always properly returned to service upon expedition conclusion
- Expeditions no longer automatically fail after turning back on the Niger River
- Expedition modifier for expedition taxes now removed upon expedition end
- Fixed general travel exploit that would allow to teleport generals by alternating orders towards the same destination
- Fixed a general travel duration exploit that was possible when giving several orders targeting different destinations, causing GENERAL_TRAVEL_OVERSEAS_SCALE to sometimes not be applied
- Fixed a bug where making a general return to a previous location during travel would sometimes apply GENERAL_TRAVEL_OVERSEAS_SCALE
- Military buildings are now unable to provide more Battalions or Flotillas than their level can support
- Fixed the bug when Cut Down To Size wargoal would liberate conquered states regardless of when they were acquired
- Fixed a bug that would cause only one admiral to be able to defend against naval invasions
- Fixed a bug that allowed an admiral to be able to naval invade a state that has no passable coastal provinces controlled by the enemy
- Fixed an issue that caused secessionist countries to not being able to be targeted by diplomatic plays even after they win the secession war
- Fixed a bug where Treaty Ports could give you access to markets in states outside the same state region
- Fixed bug where market access was not updated in states split due to ceding a Treaty Port or gaining independence
- Fixed the bug when status of convoy raiding wasn't displayed on the map nodes
- Combat unit allocation between commanders is now recomputed if a commander loses their role
- Failed or timed out Journal Entries won't be triggered by an Objective again unless marked as repeatable
- Fixed an error that caused the building tooltip to display incorrectly and produce error log spam when the building was built in a state with an apostrophe in its name
- Fixed commonly occuring crash caused by offscreen GUI VFX not being cleaned up properly
- Fixed crash when running out of cloud storage space for save files
- Fixed OOS for Elections when hot-joining
- Fixed a crash that would happen when the same peace deal is accepted at the same time in multiple wars
- Fixed crash when listing saves
- Fixed crash arising from cultural_homeland_events.1
- Fixed crash during commander generation

minorbugfixes.jpg


- Fixed issue with displaying country names for civil war countries
- Ensures the correct number of Battalions are reported for both Regulars and Conscripts on various panels and tooltips
- Death notifications no longer fire upon the retirement of a politician
- Fixed an issue in prediction tooltips where Peasant goods consumption was incorrectly calculated, causing price predictions to be wrong for certain goods
- Fixed an issue where price predictions for pop-consumed goods would get increasingly inaccurate the longer the game went on due to old data not being properly cleared
- Fixed flickering map mode in the culture panel
- Fixed front map markers not showing up correctly in Observer Mode
- Fixed overlapping text of the options in the Sway Country Panel
- Fixed overlapping text on the Nation Formation panel to not overlap
- Fixed text overlapping and alignment issues on the War Panel
- Fixed the Diplomatic Play title text to not overlap the flags when very long
- Fixed 'You' label being visible for other players in the War Panel in a Multiplayer game
- Fixed invalid diplomatic relations expandable tooltip
- Fixed wrong scope provided to on_sway_offer_rejected
- Added missing localization for is_direct_subject_of
- Fixed a missing texture that would appear in the war tooltip when the initiator of a diplomatic play had obtained all of their declared war goals
- Fixed an issue that made it possible to change government or military wage rates when the country wasn't actually paying any government / military wages
- Fixed incorrect text that would appear in the war tooltip when either side of a diplomatic play had obtained all of their declared wargoals
- Fixed notifications accidentally appearing twice when closed
- Fixed typo in Pop Properties tutorial lesson
- Fixed missing text for Annex Subject Diplomatic Play Tooltip
- Korean officers now wear clothes
- Male Academics and Capitalist pops no longer carry parasols
- Dinka slave pops are now properly naked
- The final fallback for character clothing is now peasant's clothes instead of a birthday suit
- The Confederate States of America should now always be called such during the American Civil War
- Taiping Rebellion war name is now properly localized
- Corrected spelling issues with Australian hubs and Theodore Roosevelt
- Commanders-in-Chief now use the correct Character background on their Character Panel
- Fixed unlocalized string in the load game button in the multiplayer game over screen
- Resolved several typos in the country flavor text for Parma, Modena, and Krakow
- Fixed spelling of "Van Diemen's Land", "Concepción", and "Legazpi"

* A known issue with loading 1.0.6 save games into 1.1 is that the Bureaucracy tech will be "forgotten" and has to be re-researched. If you don't want to do this in-game, you can fix it by running your game with the debug console enabled in the launcher, loading up your save game, opening the console, and typing 'research tech_bureaucracy'.

We hope you enjoy this update! Please continue to provide your feedback and make sure to let us know if you run into any other bugs so we can continue to improve the game for the next free patch 1.2. We will return to discuss our next plans for the future next Thursday!
 
Last edited by a moderator:
  • 167Like
  • 75Love
  • 14
  • 2
Reactions:
How about countries not being able to trade with nearby markets which are separated from them just by thin strips of land (i.e. Paraguay and Uruguay can't trade because of Missiones salient)? There's got to be overland trade routes and overland trade agreements between countries along the routes.
 
If the wiki is correct, the pricing function is the following:

price = Base_price*(1+0,75((buy-sell)/min(Buy,Sell)))

Now lets says you have a market E with Buy_E=200 and Sell_E=300 and a market I with Buy_I=200 and Sell_I=100, a base price of 1 and a trade route exporting t goods from from E to I. Then the price difference is:

PD = price_I-price_E = 0,75((200-100-t)/(min(100+t,200)-(100-300+t)/min(200+t,300))=0,75((100-t)/(100+t)-(-100+t)/(200+t)) if 0=<t=<100.
This is definitely not linear in t!
In fact even in a single market the price is not linear in the traded volume for example in I we have
P_I(t) = 1+0,75((100-t)/(100+t))=1+0.75(-1+200/(100+t)) for 0=<t=<100. This is a constant plus a convex function in t, as 1/t is clearly a strictly convex function (on the positive half-axis).

So either the wiki is wrong or the price function is strictly convex in the trade volume for at least some volumes. In the above example the function gets linear for t>100. The min in the function is responsible for it being non-linear.


Regarding the second paragraph. If the function was really linear then averaging post-and pre-trade prices would give you exactly the area underneath the price difference function. I.e. the profit function as in Profit = (PD_PostTrade+PD_PreTrade)/2*Volume would be the antiderivative of the price difference function. This implies via the fundamental theorem of calculus that the price difference function is the derivative of the profit function. In particular the profit function can only be maximal, if the price difference is equal to zero. Therefore, you would not have a price inversion problem. Granted you do not differentiate continuously, but in a discrete way and currently do not search exactly for the optimum. Therefore, the volume would probably slightly overshoot the zero price difference mark. But this is not related to the function being strictly convex or linear.

Edit: Fixed a typo in the formula.

I think the wiki is wrong. I'll just copy/paste pseudocode here:

MaxPriceVariability = BasePrice * PRICE_RANGE
MaximumDifferenceFactor = BUY_SELL_DIFF_AT_MAX_FACTOR - 1
BuySellDifferenceRatio = Min( ( Max( Buy, Sell ) / Min( Buy, Sell ) ) - 1, MaximumDifferenceFactor )
PriceAdjustment = MaxPriceVariability * ( BuySellDifferenceRatio / MaximumDifferenceFactor )
FinalPrice = ( Buy > Sell ) ? BasePrice + PriceAdjustment : BasePrice - PriceAdjustment

It is true this makes it a piecewise linear function, and when the price in one market crosses the base price threshold that might make it the curve appear concave? It is likely also true that this means doing a straight average between pre- and post-trade prices could result in the wrong average based on volume traded no matter what, and doing some calculus might be necessary to find the true value. As a first pass we're going to attempt to use post-trade only prices for trade, since this is most likely to be correct anyhow.
 
Last edited:
  • 18
  • 3Like
  • 2Love
Reactions:
I think the wiki is wrong. I'll just copy/paste pseudocode here:
chris-pratt.jpg


EDIT: Wait! Pseudocode?! That's like 10 times better than real code, right?
 
Last edited:
  • 2Like
  • 1Haha
Reactions:
Should they though? Significant tuition payments seem to be a post-WW2 development, and then mostly in the Anglosphere. German universities, for example, still remain almost free, with only administrative and public transit fees paid.
Thanks for the explanation, this is new knowledge for me, I thought universities had tuition all the time
 
  • 1Like
Reactions:
I am trying to say, as you observed now as well, that the wiki formula might not be correct an you can fit a piecewise linear function that solve for the conditions talked about in this thread

I dont know why @lachek would say its linear if its clearly not, and since the formula originally comes from a reddit thread afaik, it might not be taken from the code but someone might have fitted it to observed prices.

cant access the wiki right now, but if the example is sourced by ingame data and not just putting in the respective numbers, then it just is not linear at all, yes.
Ah, alright. Now I understand the confusion.

You should remember that the price is a function of 2 variables, Buy and Sell orders, i.e. P(B,S). Now it is clear that there is a function which is pl in one of these variables that fulfills the following properties:
(i) P(x,x/2)=1,75
(ii)P(x,x)=1
(iii)P(x,2x)=0,25
for any given x.

If we constrain ourselves to functions with only 2 linear pieces as desired, then the resulting functions are unique, as two linear segments connected in one point are uniquely defined by three distinct points.

The (affine) pl function in S must be: 1+0,75(B-S)/B for S>B, as for B=S this is 1 and for S=2B this is 0,25. For B>S we also have 1+1,5(B-S)/B, as for S=B/2 we have 1+0,75B/2/B=1,75.

The (affine) pl function in B must be in the same way 1+1,5(B-S)/S for S>B, as this is 1 for B=S and 0,25 for B=S/2 and 1+0,75(B-S)/S for B>S, as for B=2S we have 1,75.

The problem now is the following: If you have a trade route from E to I, the buy orders in E and the sell orders in I increase with the volume of the route. Therefore, in order for the price difference function (i.e. the price in I minus the price in E) to be pl, one needs to either have a price function which is (affine) pl in both B and S or two different price functions, one (affine) pl in S and one (affine) pl in B for the markets I and E.

But a function satisfying (i) to (iii) can not be pl in B and S, as then the unique functions above would need to coincide and this is not the case, if one allows values other than B=S.

And if one uses two different functions one definitely runs into problems when a market has imports and exports at the same time and afaik all markets use the same price function.

Note that this argument does not exclude functions which are pl with more than 2 linear pieces between S/2=<B=<2S. But I am unsure whether such functions could be used, as it is not even clear where to cut. And I am positive that the argument can be extended to a far larger class of affine pl functions.


I think the wiki is wrong. I'll just copy/paste pseudocode here:

MaxPriceVariability = BasePrice * PRICE_RANGE
MaximumDifferenceFactor = BUY_SELL_DIFF_AT_MAX_FACTOR - 1
BuySellDifferenceRatio = Min( ( Max( Buy, Sell ) / Min( Buy, Sell ) ) - 1, MaximumDifferenceFactor )
PriceAdjustment = MaxPriceVariability * ( BuySellDifferenceRatio / MaximumDifferenceFactor )
FinalPrice = ( Buy > Sell ) ? BasePrice + PriceAdjustment : BasePrice - PriceAdjustment

It is true this makes it a piecewise linear function, and when the price in one market crosses the base price threshold that might make it the curve appear concave. It is likely also true that this means doing a straight average between pre- and post-trade prices could result in the wrong average based on volume traded no matter what, and doing some calculus might be necessary to find the true value. As a first pass we're going to attempt to use post-trade only prices for trade, since this is most likely to be correct anyhow.
I think this is the same formula as in the wiki:

Assume that the MaximumDifferenceFactor does not play a role in the min of BuySellDifferenceRatio, this is not the part I quoted from the wiki, this is just the cutting function and that BUY_SELL_DIFF_AT_MAX_FACTOR=2 .

First if B>S we have ( Max( Buy, Sell ) / Min( Buy, Sell ) ) - 1=B/S-1=(B-S)/S and PriceAdjustment =BP*PRICE_RANGE*(B-S)/S.
Therefore, FinalPrice =BP(1+PRICE_RANGE*(B-S)/S)=BP(1+PRICE_RANGE*(B-S)/min(B,S)).

And if S>B we have ( Max( Buy, Sell ) / Min( Buy, Sell ) ) - 1=S/B-1=(S-B)/B and PriceAdjustment =BP*PRICE_RANGE*(S-B)/S.
Therefore, FinalPrice =BP(1-PRICE_RANGE*(S-B)/S)=BP(1+PRICE_RANGE*(B-S)/min(B,S)).

Here B=Buy, S=Sell, BP=BasePrice. This seems exactly as in the wiki.

I think the real problem is that the price function can not be affine pl in both buy and sell orders, if it fulfills the desired properties (see above) and for the price difference to be affine pl one needs affine pl in both, as sell and buy orders grow in the respective markets. Therefore, the price difference would be non-pl even when the price is affine pl in one variable.
 
Last edited:
  • 2Love
  • 2
  • 1Like
Reactions:
Could you introduce a game rule to disable the Ripper, "they shall not have dyed in vain" and other silly events? Abraham Lincoln turning out to be Jack the Ripper may be funny to some, but for a lot of players it's incredibly immersion-breaking.
The dye event was jarring to me, but maybe it's my age. Both my wife and I are huge CK fans because of all the horrible jokes you can make, so it wasn't an issue of "oh they went too far", it was a "holy crap, did a 14 year old write this event? This is a game about the Victorian age from Paradox, not Tropico.". Tropico is ALL satire, that's the big difference. Some of them are fart jokes, others are puns, but the entire wonderful tone of that game is silly satire.

I assume that event was intentionally added to do a little market research about the player base...but the quality of the writing in this game is all over the place, and in general, it's leaning towards modern syntax more and more, which, to be fair, is an honestly debatable decision. There's a reason this game is drawing more new fans, and there's a reason why the second drew such rabid fans. It SOUNDED Victorian, to anyone who knows 19th cent lit.
 
Last edited:
  • 1
  • 1Haha
Reactions:

- Fixed font atlas not notifying the map system when textures where recycled, leading to garbled map names especially frequent in Chinese, Japanese, and Korean languages
Acutually, such issue also exists in CK3 and Imperator:Rome.
 
/edit: And for something on topic: No comment on the teleporting generals issue from the dev team (fixing the workaround without fixing the bug)? Or did I accidently skip it?
It’s been asked at least five times (including my question on the first page of this thread) and there have been no dev responses yet. I’m pretty concerned about this one; if the teleport workaround is patched out but the situations where it was needed to fix bugs or flawed mechanics remain, I’ll probably be skipping this patch as losing wars due to bugs or arbitrary restrictions is very frustrating.

(By ‘arbitrary restrictions’ I mean things like only being able to assign a single general to a naval invasion, even if it’s somewhere like Panama where you *know* it’ll create two fronts, and needing fifty days to send a second general after the invasion)
 
  • 4
  • 2Like
  • 1
Reactions:
Ah, alright. Now I understand the confusion.

You should remember that the price is a function of 2 variables, Buy and Sell orders, i.e. P(B,S). Now it is clear that there is a function which is pl in one of these variables that fulfills the following properties:
(i) P(x,x/2)=1,75
(ii)P(x,x)=1
(iii)P(x,2x)=0,25
for any given x.

If we constrain ourselves to functions with only 2 linear pieces as desired, then the resulting functions are unique, as two linear segments connected in one point are uniquely defined by three distinct points.

The (affine) pl function in S must be: 1+0,75(B-S)/B for S>B, as for B=S this is 1 and for S=2B this is 0,25. For B>S we also have 1+1,5(B-S)/B, as for S=B/2 we have 1+0,75B/2/B=1,75.

The (affine) pl function in B must be in the same way 1+1,5(B-S)/S for S>B, as this is 1 for B=S and 0,25 for B=S/2 and 1+0,75(B-S)/S for B>A, as for B=2S we have 1,75.

The problem now is the following: If you have a trade route from E to I, the buy orders in E and the sell orders in I increase with the volume of the route. Therefore, in order for the price difference function (i.e. the price in I minus the price in E) to be pl, one needs to either have a price function which is (affine) pl in both B and S or two different price functions, one (affine) pl in S and one (affine) pl in B for the markets I and E.

But a function satisfying (i) to (iii) can not be pl in B and S, as then the unique functions above would need to coincide and this is not the case, if one allows values other than B=S.

And if one uses two different functions one definitely runs into problems when a market has imports and exports at the same time and afaik all markets use the same price function.

Note that this argument does not exclude functions which are pl with more than 2 linear pieces between S/2=<B=<2S. But I am unsure whether such functions could be used, as it is not even clear where to cut. And I am positive that the argument can be extended to a far larger class of affine pl functions.



I think this is the same formula as in the wiki:

Assume that the MaximumDifferenceFactor does not play a role in the min of BuySellDifferenceRatio, this is not the part I quoted from the wiki, this is just the cutting function and that BUY_SELL_DIFF_AT_MAX_FACTOR=2 .

First if B>S we have ( Max( Buy, Sell ) / Min( Buy, Sell ) ) - 1=B/S-1=(B-S)/S and PriceAdjustment =BP*PRICE_RANGE*(B-S)/S.
Therefore, FinalPrice =BP(1+PRICE_RANGE*(B-S)/S)=BP(1+PRICE_RANGE*(B-S)/min(B,S)).

And if S>B we have ( Max( Buy, Sell ) / Min( Buy, Sell ) ) - 1=S/B-1=(S-B)/B and PriceAdjustment =BP*PRICE_RANGE*(S-B)/S.
Therefore, FinalPrice =BP(1-PRICE_RANGE*(S-B)/S)=BP(1+PRICE_RANGE*(B-S)/min(B,S)).

Here B=Buy, S=Sell, BP=BasePrice. This seems exactly as in the wiki.

I think the real problem is that the price function can not be affine pl in both buy and sell orders, if it fulfills the desired properties (see above) and for the price difference to be affine pl one needs affine pl in both, as sell and buy orders grow in the respective markets. Therefore, the price difference would be non-pl even when the price is affine pl in one variable.
And the outcome of all of this and potential options to have trade not only be more profitable than simply using post-trade prices but also fix the price inversion problem are detailed again by @Tempscire here:


Basically, you can have the best of both worlds: no price inversions and traders maximizing profit by using a mean value rather than simply post-trade prices. The problem is that the mean value you're using right now (arithmetic mean) is the wrong mean since the price function isn't linear.

All in all, I like the decision to use a mean value since it represents traders buying some goods at a low price and importing them to a market with a higher price piecemeal until eventually they reach the maximum to remain profitable rather than assuming the goods are all bought at the same price (more or less) as the final one -- we'd just need to use the correct mean though.
 
  • 2
Reactions:
The dye event was jarring to me, but maybe it's my age. Both my wife and I are huge CK fans because of all the horrible jokes you can make, so it wasn't an issue of "oh they went too far", it was a "holy crap, did a 14 year old write this event? This is a game about the Victorian age from Paradox, not Tropico.". Tropico is ALL satire, that's the big difference. Some of them are fart jokes, others are puns, but the entire wonderful tone of that game is silly satire.

I assume that event was intentionally added to do a little market research about the player base...but the quality of the writing in this game is all over the place, and in general, it's leaning towards modern syntax more and more, which, to be fair, is an honestly debatable decision. There's a reason this game is drawing more new fans, and there's a reason why the second drew such rabid fans. It SOUNDED Victorian, to anyone who knows 19th cent lit.
I think the dye event was copied from Victoria 2.
 
  • 2
  • 1Like
  • 1Haha
Reactions:
I think the dye event was copied from Victoria 2.
That's even an weirder decision on their part if that's the case, because they should've also copied the good events.....

I haven't played that one enough to get it, but it would be a little less lonely there, cause "oh great" when the chartist rallies show up isn't exactly mature either...but it's not a bad pun...

If it's in 2, shame on them still, but 2 also has a totally different overall tone. There are no other events in 3 where both choices ridicule the subject matter of the event to the point of having a different tone, imo....

_____________

PS: yea, wild. Just fired it up, event 12710 or something like that. A thoroughly weird choice to spend the time copypasting that one, instead of literally any of the actual historical popups, with less like....slapstick humor. Same conceptual criticism applies for 2 then, but that's about as useful as cussing out a grave.

Thanks a bunch for pointing that out though!
 
Last edited:
  • 1
Reactions:
- Fixed a bug where making a general return to a previous location during travel would sometimes apply
If the front management AI isn't very significantly improves then this will probably kill all interest in the game for me. It's THAT bad. If teleporting generals is too gamey then at least knock general travel time down by -75%, or give some kind of grace period to re-assign generals within a week after any instance where the fronts change, or something.
 
  • 6
  • 1
Reactions:
It SOUNDED Victorian, to anyone who knows 19th cent lit.
The grammar of Victoria 2's narrative events was not nearly so floridly, nay, voluptuously verbose as one might expect of material referencing that strange and fearsome period when – lest we forget, dear reader – the likes of Bulwer-Lytton pushed the very limits of sentence construction far beyond what any person might reasonably expect the English language, flexible and versatile though it assuredly is, to endure without some manner of protest.

(The sentence I have written above should be taken out and shot.)

(Also, whenever people complain about Vicky 3 content, I remind myself that Howard Philips Lovecraft's "At The Mountains of Madness" has a finite chance of being a fictionalized account of historical events on the counter-Earth of your Vicky 2 campaign.)
 
  • 10Haha
  • 2Like
Reactions:
Love most of the patch notes except the "fix" for the general movement glitch. Normally I'd be fine with this fix, but this bug has inadvertently become one of the only ways we can effectively play with the broken war/fronts system. Lol we're probably going to need someone to make a mod to bring back a bug until 1.2.
 
  • 3Like
Reactions:
Yeah, they pay for good and services just like everyone else, not through the university. Public transit (at a discount) is often handled through the university though (or more precisely, through the student associations, but the university takes in the money along with admin fees), but not everywhere, and only for travel locally near the university. Some Länder don't do this and students have to buy normal, non-discounted public transit ticket if they need them.
Good thing the 49 Euro ticket is coming - soon - possible - or not - federalism sometimes is not that funny...
Which leads us back to V3 -> more federalist mechanics would be intersting for politics.
 
It would be lovely to have the state that produce raw material having an edge on producing industrial good, e.g. states with coal and iron should produce cheaper steel since the shipping cost is minimised.
The current system didnt simulate the comparative advantage of different states, the productivity is the same among all states as long as you have 100% market access. It does not make sense that two steel mills produce goods at the same price when a steel mill can get raw material next door and the other one needs to transport coal and iron from far away. And for miltary as well, the further your army had been sent from its HQ, more costly it should be. After all logistic and distance should have a bigger impact in game. I wont expect this to be fixed soon but would love to see this feature implemented.
 
  • 1
Reactions:
The grammar of Victoria 2's narrative events was not nearly so floridly, nay, voluptuously verbose as one might expect of material referencing that strange and fearsome period....
_____________

(The sentence I have written above should be taken out and shot.)
Both of those can be true at the same time rofl, but like, I dunno, something something fearful symmetry....(+50 years, I don't like Romantic poetry and I THINK the Tyger was about factories maybe lol)

although hat's off to that sentence, I had a beef with a prof 10 years ago who told me I wasn't allowed to use stream of consciousness in his class because I wasn't famous enough, so I made grading every one of my papers a living hell for that man

Still, clinically (imo) modern syntax and verbiage in history games aren't a great thing. Vic 2 wasn't blameless either.
 
Last edited:
I dunno, something something fearful symmetry....
"The Tyger" is (a) poetry, not prose (b) while certainly not laconic, still quite economical with its use of words (c) from the 18th century :)
 
  • 1
  • 1
  • 1
Reactions: