User Tools

Site Tools


gamemanual:gm_factories

Factory Game Mechanics

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.

Variables

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)

Sliders

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.

Factory Ratings

Production Technologies

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 Rating

Factory_Overall =  1 + ((Slider_Production_Capacity * 200 + (Production_Tech*3))/ 5.0)

Maximum Build

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

Build Turns

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)
 

Construction Costs

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

Lobbying_Savings = (Construction_Costs * (0.1 * (Lobbying_Funds/Lobbying_Maximum)))
 
Construction_Costs = Construction_Costs - Lobbying_Savings

Monthly Full Production Costs

    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);

Factory Upgrade

Production Lines

Production_Lines = Current_Production_Lines + (1*Factory_Map_Adjustment + 
  (0.05*(year-1899)+1*Factory_Map_Adjustment)*Upgrade_Amount)

Upgrade Costs

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
 
 

Factory Recondition

Costs

Recondition_Costs = Wear * (5000 *1.05^(year - (Factory_Built_Year-1))) + (15000*ex_1d012p_year99)

Production

Maximum Production Amount

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)
}
 
 

Component Production

 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

Employee

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
gamemanual/gm_factories.txt · Last modified: 2022/07/18 17:47 by admin