The Game Mechanics section of the manual details the internal formula used in the game's calculations. This section of the manual uses pseudo-code and may not be 100% the same as the code in the game.
The Game Mechanics part of the manual is mainly designed to be a reference for the frequently asked question, “Why do I get this rating when I do X, Y, Z?!” Usually, this answer involves many different variables, which this section of the manual demonstrates.
The game mechanics section of the manual shows how the sausage gets made. So you really may want to avoid this portion of the manual if you enjoy the game.
This is a table of variables and their descriptions used in the formulas.
Variable | Description | Variable | Description | |
---|---|---|---|---|
Factory_Map_Adjustment | This is the factory adjustment value found in the map's MapFileForGame.xml file | Lobbying_Maximum | The maximum amount of money you can spend on lobbying. | |
Manufacturing_Skills | Parent company's Manufacturing skills divided by 100 | Equipment_Wear | For new factories, this value is set to 1. | |
City_Resources | Resource Rating for the selected city | Max_City_Resources | Highest resource rating for all cities in the game. | |
City_Infrastructure | Infrastructure Rating for the selected city | City_Manufacturing | Manufacturing Rating for the selected city | |
Difficulty | Difficulty level the player selected at the start of the game | Lobbying_Funds | Player's current spending effect on lobbying. (Spending effect slowly trails monthly lobbying spending amount until it catches up to the spending amount.) | |
Car_Manufacturing_Requirements | Selected Vehicle's Manufacturing Requirements Rating | Car_Chassis_Outsourced | True if the select car uses an outsourced chassis. | |
Car_Engine_Outsourced | True if the select car uses an outsourced engine. | Car_Gearbox_Outsourced | True if the select car uses an outsourced gearbox. | |
Factory_Tooling_Year | The last year that the factory was retooled, recondition, built, or redesigned | Factory_Built_Year | The year that the factory was built or redesigned. | |
Lines_Used | The number of factory lines being used. | Current_Production_Lines | The number of factory lines being used. | |
Upgrade_Amount | Values are 0 for “Minor”, 1 for “Medium”, and 2 for “Max.” | Upgrade_Attempt | The number of times you have upgraded this factory since you built or redesigned it. | |
Employee_Difficulty | Value is based on the player's difficulty level. Easy: 30, Normal: 20, Hard/Nightmare: 10 | Wear | Factory wear value between 0 and 1. | |
year | Current game year | |||
ex_1d002p_year99 | 1.002^(year-1899) | ex_1d005p_year99 | 1.005^(year-1899) | |
ex_1d012p_year99 | 1.012^(year-1899) | ex_1d015p_year99 | 1.015^(year-1899) | |
ex_1d01p_year99 | 1.01^(year-1899) | ex_1d018p_year99 | 1.018^(year-1899) | |
ex_1d03p_year99 | 1.03^(year-1899) | ex_1d04p_year99 | 1.04^(year-1899) |
Variable | Description | Variable | Description | |
---|---|---|---|---|
Slider_Production_Capacity | This is the production line slider. | Slider_Factory_Tech | This is the factory tech slider. | |
Slider_Factory_ProductionSpeed | The production quality or quantity slider when assigning production lines. |
Production_Tech = (((Slider_Factory_Tech*1900+City_Infrastructure*5+(City_Manufacturing * (City_Resources/Max_City_Resources)))/2500*Equipment_Wear)) * 100 if(Production_Tech > 100) Production_Tech = 100
Factory_Overall = 1 + ((Slider_Production_Capacity * 200 + (Production_Tech*3))/ 5.0)
Maximum_Build = ((3*Factory_Map_Adjustment + ((17*(Slider_Production_Capacity*100))/100.0)) * (ex_1d015p_year99) + ((3*ex_1d005p_year99)*Manufacturing_Skills)) Maximum_Build = Maximum_Build * Factory_Map_Adjustment Maximum_Build = 1 + Maximum_Build * Slider_Production_Capacity
MaxLine_Percent = ((3*Factory_Map_Adjustment + 17) * (ex_1d015p_year99) + ((3 * ex_1d005p_year99) * Manufacturing_Skills)) MaxLine_Percent = MaxLine_Percent * Factory_Map_Adjustment MaxLine_Percent = Maximum_Build / MaxLine_Percent Build_Turns = 5^(1+Slider_Factory_Tech/1.3) * ((Factory_Overall/100)*(50/City_Infrastructure)+City_Resources) + (12*ex_1d01p_year99*MaxLine_Percent)
if(2021 > year) { Construction_Costs = ((175000 * ex_1d04p_year99) + (40000 * ex_1d03p_year99) + (50000 * 0.985^Maximum_Build) + ((1000 * ex_1d018p_year99) * (60/(City_Infrastructure+1.0))^((year-1899)/24.0))) + ((City_PerCapita / (City_Infrastructure/30)) * City_Resources*(City_PerCapita/10)) * (Maximum_Build * 1.25) } else { Construction_Costs = ((175000 * ex_1d04p_year99) + ((40000) * ex_1d03p_year99) + (50000 * (0.985^Maximum_Build))+ ((1000 * ex_1d018p_year99) * (60/(City_Infrastructure+1.0))^(121/24.0))) + ((City_PerCapita / (City_Infrastructure/30)) * City_Resources*(City_PerCapita/10)) * (Maximum_Build * 1.25) } Construction_Costs = Construction_Costs + (Construction_Costs * 0.5 * Slider_Factory_Tech) if(Difficulty = 0) Construction_Costs = (Construction_Costs / 1.35) + 1 else if(Difficulty = 2) Construction_Costs = (Construction_Costs * 1.1) + 1
Lobbying_Savings = (Construction_Costs * (0.1 * (Lobbying_Funds/Lobbying_Maximum))) Construction_Costs = Construction_Costs - Lobbying_Savings
Full_Monthly_Costs = Construction_Costs * 0.01 * ex_1d002p_year99 * (Slider_Factory_Tech + 1)^1.01 if(Difficulty = 0) Full_Monthly_Costs = (Full_Monthly_Costs / 1.25) + 1 else if(Difficulty = 2) Full_Monthly_Costs = (Full_Monthly_Costs * 1.1) + 1 Full_Monthly_Costs = Full_Monthly_Costs + (Full_Monthly_Costs*0.18);
Production_Lines = Current_Production_Lines + (1*Factory_Map_Adjustment + (0.05*(year-1899)+1*Factory_Map_Adjustment)*Upgrade_Amount)
NewLines = Production_Lines - Current_Production_Lines Upgrade_Cost = (((175000 * ex_1d04p_year99) + (40000 * ex_1d03p_year99) + (40000 * 0.985^ Production_Lines)+ ((1000 * ex_1d018p_year99) * (60/(City_Infrastructure+1.0))^((year-1899)/24.0)) + ((City_PerCapita / (City_Infrastructure/30.0)) * City_Resources*(City_PerCapita/10))) * (NewLines*1.25))*((Upgrade_Attempt+1)^1.5) Upgrade_Cost = Upgrade_Cost + (Upgrade_Cost * 0.5 * Slider_Factory_Tech) if(Difficulty = 0) Upgrade_Cost = (Upgrade_Cost / 1.35) + 1 else if(Difficulty = 2) Upgrade_Cost = (Upgrade_Cost * 1.25) + 1
Recondition_Costs = Wear * (5000 *1.05^(year - (Factory_Built_Year-1))) + (15000*ex_1d012p_year99)
Manufacturing_Difference = Production_Tech / Car_Manufacturing_Requirements if(Manufacturing_Difference<0.33) Manufacturing_Difference = 0.33 else if(Manufacturing_Difference>1.67) Manufacturing_Difference = 1.67 if(Factory_Tooling_Year > 1949) Tooling_Year_Change = 5 else Tooling_Year_Change = -0.0016*(((Factory_Tooling_Year-1899)-50)* ((Factory_Tooling_Year-1899)-50)) + 5 if(Car_Chassis_Outsourced) { Outsource_Output_Boost += 0.1; Outsource_Employee_Reduction -= -0.1; } if(Car_Engine_Outsourced) { Outsource_Output_Boost += 0.1; Outsource_Employee_Reduction -= -0.1; } if(Car_Gearbox_Outsourced) { Outsource_Output_Boost += 0.1; Outsource_Employee_Reduction -= -0.1; } if(year < 2021) { Production_Amount = ((1+ ((25 * (Manufacturing_Difference) * Outsource_Output_Boost * Tooling_Year_Change * 1.01^(Factory_Tooling_Year-1899)) + ((( (Production_Tech^2)/(2026 - Factory_Tooling_Year))) ) + ((Factory_Tooling_Year-1899)*2)) * Slider_Factory_ProductionSpeed)*Lines_Used) } else { Production_Amount = ((1+ ((25 * (Manufacturing_Difference) * Outsource_Output_Boost * Tooling_Year_Change * (1.01^121)) + ((Production_Tech^2)/6) + ((121)*2)) * Slider_Factory_ProductionSpeed)*Lines_Used) }
Production_Amount = (((10 * Production_Tech) * 2) - (10 * Equipment_Wear) + (10 * (Factory_Tooling_Year - 1899)) ) * ((Production_Tech)/(Manufacturing_Requirement+1)) if(Production_Amount < 0) Production_Amount = 0 Production_Amount = Production_Amount + 50
if(year < 2021) Employees = (Production_Amount/Employee_Difficulty * (15*((Factory_Tooling_Year-1898.5)^-0.8))) + ((Slider_Factory_ProductionSpeed+0.1)*Lines_Used) * (20.0 + (1.339 * (2021-Factory_Tooling_Year)) - (.014 * ((2021-Factory_Tooling_Year)*(2021-Factory_Tooling_Year))) + (.0000787 * ((2021-Factory_Tooling_Year)*(2021-Factory_Tooling_Year)*(2021-Factory_Tooling_Year)))) else Employees = (Production_Amount/Employee_Difficulty * (15*((121.5),-0.8))) + ((Slider_Factory_ProductionSpeed+0.1)*Lines_Used) * (20.0 + (1.339 *(1)) - (.014 * ((1)*(1))) + (.0000787 * ((1)*(1)*(1)))) Employees = Employees * Outsource_Employee_Reduction if(Employees <1) Employees = 0