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.
Name | Description | Name | Description | |
---|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
//Land/Army EngineCC = (Random Number Between 0 And 5000) + 10000) * Engine_Type_EngineSize //Maritime/Navy EngineCC = (Random Number Between 0 And 10000) + 25000) * Engine_Type_EngineSize //Aero EngineCC = (Random Number Between 0 And 18000 + 12000) * Engine_Type_EngineSize
if(EngineCC > 20000) EngineSizeUnitMod = 1000000 / EngineCC else EngineSizeUnitMod = (-0.123 * EngineCC) + 2500 if Land/Army Units = ((govPopulation/100000) + EngineSizeUnitMod*0.2 + Random Number Between 0 And EngineSizeUnitMod*0.8)) * govCalc + 1 else if Navy Units = ((govPopulation/1000000) + EngineSizeUnitMod*0.2 + Random Number Between 0 And EngineSizeUnitMod*0.8)) * govCalc + 1 else if Military Aero Units = ((govPopulation/250000) + EngineSizeUnitMod*0.2 + Random Number Between 0 And EngineSizeUnitMod*0.8)) * govCalc + 1 else if Civil Aero Units = ((govPopulation/200000) + EngineSizeUnitMod*0.2 + Random Number Between 0 And EngineSizeUnitMod*0.8)) + 1 else if Civil Maritime Units = ((govPopulation/750000) + EngineSizeUnitMod*0.2 + Random Number Between 0 And EngineSizeUnitMod*0.8)) + 1 Units = Units * Engine_Type_UnitNumbers UnitsPerMonth = Units / ContractPeriod if(UnitsPerMonth < 1) UnitsPerMonth = 1
fuelRand = Random Number Between 0 And 3 if Land/Army MPG = ((10 - (EngineCC/4000)) - fuelRand) * Engine_Type_FuelMOD * ex_1d002p_year99+3; else if Navy MPG =(( 10 - (EngineCC/12000)) - fuelRand)*Engine_Type_FuelMOD * ex_1d002p_year99+3; else if Aero MPG = ((10 - (EngineCC/3500)) - fuelRand) * Engine_Type_FuelMOD * ex_1d002p_year99+3; if(MPG < 4 || MPG > 200) MPG = -1;
if Land/Army HP = (Random Number Between 0 And (EngineCC/250)+((EngineCC/100)*ex_1d01p_year99)) * Engine_Type_HPMOD else if Navy HP = (Random Number Between 0 And (EngineCC/600)+EngineCC/200) *ex_1d015p_year99 * Engine_Type_HPMOD else if Aero HP = ((Random Number Between 0 And (EngineCC/250)+((EngineCC/70)*ex_1d005p_year99))) * Engine_Type_HPMOD else if Civil Ships HP = (Random Number Between 0 And (EngineCC/500)+EngineCC/200) *ex_1d005p_year99 * Engine_Type_HPMOD
if Land/Army torque = (15 + Random Number Between 0 And EngineCC/450)+(EngineCC/300) ) * ex_1d008p_year99 * Engine_Type_torqueMOD; else if Navy torque = (15 + Random Number Between 0 And EngineCC/370)+(EngineCC/500) ) * ex_1d008p_year99 * Engine_Type_torqueMOD; else if Aero torque = (20 + Random Number Between 0 And EngineCC/300)+(EngineCC/200) ) * ex_1d008p_year99 * Engine_Type_torqueMOD;
if Land/Army torque = (15 + Random Number Between 0 And EngineCC/450)+(EngineCC/300) ) * ex_1d008p_year99 * Engine_Type_torqueMOD; else if Navy torque = (15 + Random Number Between 0 And EngineCC/370)+(EngineCC/500) ) * ex_1d008p_year99 * Engine_Type_torqueMOD; else if Aero torque = (20 + Random Number Between 0 And EngineCC/300)+(EngineCC/200) ) * ex_1d008p_year99 * Engine_Type_torqueMOD;
if Land/Army torque = (15 + Random Number Between 0 And EngineCC/450)+(EngineCC/300) ) * ex_1d008p_year99 * Engine_Type_torqueMOD; else if Navy torque = (15 + Random Number Between 0 And EngineCC/370)+(EngineCC/500) ) * ex_1d008p_year99 * Engine_Type_torqueMOD; else if Aero torque = (20 + Random Number Between 0 And EngineCC/300)+(EngineCC/200) ) * ex_1d008p_year99 * Engine_Type_torqueMOD;
if Land/Army EngineWidth = (EngineCC/300 + 10) * Engine_Type_WidthMOD; else if Navy EngineWidth = (EngineCC/150 + 10)*Engine_Type_WidthMOD; else if Aero EngineWidth = (EngineCC/350 + 10)*Engine_Type_WidthMOD;
if Land/Army EngineLength = (EngineCC / 300 + 12) * Engine_Type_LengthMOD; else if Navy EngineLength = (EngineCC / 150 + 12)*Engine_Type_LengthMOD; else if Aero EngineLength = (EngineCC / 200 + 12)*Engine_Type_LengthMOD;
if Land/Army Weight = (EngineCC / 11.5 + 100) * ex_1d008p_year99 * Engine_Type_WeightMOD; else if Navy Weight = (EngineCC / 5.5 + 500) * ex_1d008p_year99 * Engine_Type_WeightMOD; else if Aero Weight = (EngineCC / 10.0 + 50) * Engine_Type_WeightMOD;
if Units < 50 bonusPenality = (ex_1d025p_year99 *30000) * (50.0/(Units)) if Land/Army Penalty = (ex_1d025p_year99 * EngineCC/50) * Units + 1 + bonusPenality; else if Military Navy Penalty = (ex_1d025p_year99 * EngineCC/10) * Units + 1 + bonusPenality; else if Military Aero Penalty = (ex_1d025p_year99 * EngineCC/30) * Units + 1 + bonusPenality; else if Civilian Aero Penalty = (ex_1d025p_year99 * EngineCC/80) * Units + 1 + bonusPenality; else if Civilian Ships Penalty = (ex_1d025p_year99 * EngineCC/80) * Units + 1+bonusPenality; if(Random Number Between 0 And 1 = 1 ) { basePrice = 0 if Easy Difficulty basePrice = 175; else if Normal Difficulty basePrice = 75 if Land/Army { UnitCosts = ((((105 +basePrice) * ex_1d025p_year99) + Random Number Between 0 And (130 + basePrice/1.25) * ex_1d02p_year99)) + EngineCC/200 + 1 + (bonusPenality/10)) Penalty = ((UnitCosts + EngineCC/200) /2.0) * Units + 1 + bonusPenality } else if Military Navy { UnitCosts = ((((305 + basePrice) * ex_1d025p_year99) + Random Number Between 0 And (200 +basePrice/1.25) * ex_1d02p_year99)) + EngineCC/50 + 1+(bonusPenality/10)) Penalty = ((UnitCosts + EngineCC/50)/0.5) * Units + 1 + bonusPenality } else if Military Aero { UnitCosts = ((((205 + basePrice) * ex_1d025p_year99) + Random Number Between 0 And (230 +basePrice/1.25) * ex_1d02p_year99)) + EngineCC/100 + 1 + (bonusPenality/10)) Penalty = ((UnitCosts+EngineCC/100)/1.5) * Units + 1 + bonusPenality } else if Civilian Aero { UnitCosts = ((((130 + basePrice) * ex_1d025p_year99) + Random Number Between 0 And (155 +basePrice/1.25) * ex_1d02p_year99)) + EngineCC/150 + 1 + (bonusPenality/10)) Penalty = ((UnitCosts+EngineCC/150)/2.0) * Units + 1 + bonusPenality } else if Civilian Ships { UnitCosts = ((((255 + basePrice) * ex_1d025p_year99) + Random Number Between 0 And (200 + basePrice/1.25) * ex_1d02p_year99)) + EngineCC/100 + 1+(bonusPenality/10)) Penalty = ((UnitCosts + EngineCC/100)/2.0) * Units + 1 + bonusPenality } if(Units > 1000) UnitCosts = (UnitCosts * 0.75) + (UnitCosts * 0.25 * (1000.0/(1000.0 + Units))) else UnitCosts = (UnitCosts * 0.875) UnitCosts = UnitCosts * contractUnitPriceMod; UnitCosts = UnitCosts * Engine_Type_unitPrice; SigningBonus = UnitCosts / (Random Number Between 0 And 10) + 10) * Units SigningBonus = SigningBonus * contractUnitPriceMod SigningBonus = SigningBonus * Engine_Type_unitPrice Penalty = Penalty + SigningBonus * Random Number Between 0 and 1.0 + 3.0 }
Units = (govPopulation * (0.002 + (0.0025 * Absolute Value of(govStatus*3) ))) * Type_Popularity + 1 Units = Units * CarContractType_unitNumbers if(warContract) Units = Units * 5
EngineCC = (Random Number Between 0 And (500) + 1000) * Wealth
if Military Contract HP = (Random Number Between 0 And (10)+(5 * ex_1d008p_year99)) * wealth * CarContractType_HPMOD else if Civilian Contract HP = (Random Number Between 0 And (15)+10) * ex_1d008p_year99 * wealth * CarContractType_HPMOD
if(Military Contract) MPG = (14 - (wealth * 2)+ Random Number Between 0 And (4)) * CarContractType_FuelMOD + 3; else if(Civilian Contract) MPG = (20 - (wealth *1.75)+ Random Number Between 0 And (4)) * CarContractType_FuelMOD + 3; if(MPG < 4 OR MPG > 200) No fuel economy limit
if(Military Contract) CargoReq = 200 + (Random Number Between 0 And (200) + 200) * (cargoType * 1.2) * CarContractType_CargoMOD else if(Civilian Contract) CargoReq = 200 + (Random Number Between 0 And (200) + 150) * (cargoType * 1.2) * CarContractType_CargoMOD
torque = (25 + (EngineCC/100)) * ex_1d005p_year99 * CarContractType_torqueMOD
Weight = (500 + (CargoReq / 50) + Random Number Between 0 And (300)) * ex_1d008p_year99 * CarContractType_WeightMOD
if( Year < 2021 ) topSpeed = ( (20 + ((year-1899)/3.5)) + Random Number Between 0 And (15 + ((year-1899)/2)) )* ex_1d005p_year99 * CarContractType_TopSpeedMOD else topSpeed = (40 + Random Number Between 0 And (80)) * ex_1d005p_year99 * CarContractType_TopSpeedMOD
basePrice = 0 if Difficulty is Easy basePrice = 175 else if Difficulty Normal basePrice = 75 if(Military Contract) { UnitCosts = (((350 + basePrice) * ex_1d02p_year99) + Random Number Between 0 And ((50 + basePrice/1.25) * ex_1d02p_year99)) * (Wealth * 0.8 + 1) } else if(Civilian Contract) { UnitCosts = (((250 + basePrice) * ex_1d02p_year99) + Random Number Between 0 And ((100 + basePrice/1.25) * ex_1d02p_year99)) * (Wealth * 0.7 + 1) } if(UnitCosts > 1000) UnitCosts = (UnitCosts * 0.75) + (UnitCosts * 0.25 * (1000.0/(1000.0 + Units))) else UnitCosts = (UnitCosts * 0.875) UnitCosts = UnitCosts * contractUnitPriceMod UnitCosts = UnitCosts * CarContractType_unitPrice if(UnitCosts < 450) UnitCosts = 450 SigningBonus = UnitCosts/(Random Number Between 0 And (10) + 10) * Units Penalty = Penalty + SigningBonus * RandomNumber->randDblExc(1.0) + 0.5 Penalty = Penalty + ((ex_1d02p_year99 * EngineCC/50) * Units) + 1 SigningBonus = SigningBonus * contractUnitPriceMod SigningBonus = SigningBonus * CarContractType_unitPrice
Racing series restrictions define displacement, fuel, induction, cylinder, vehicle types, etc.
SigningBonus = ((2000*ex_1d03p_year99)+(5000*RacingSeries_Funding_Value*ex_1d06p_year99)) * (Random Number Between (0 And 1.0)+0.5) Penalty = SigningBonus * (Random Number Between (0 And 3.0)+2.0) if Difficulty = Easy UnitCosts = (3000*ex_1d025p_year99) * (RacingSeries_Funding_Value/5.0 +1) else if Difficulty = Normal UnitCosts = (2000*ex_1d025p_year99) * (RacingSeries_Funding_Value/6.0 +1) else if Difficulty = Hard or Nightmare UnitCosts = (1000*ex_1d025p_year99) * (RacingSeries_Funding_Value/7.0 +1)
Units = ((RacingSeries_Races) * RacingSeries_Funding_Value) + 10;
MinHP = (100+(2*(year-1900)))
Lateral_G = 1 + (0.0005 * (year-1900))
Top_Speed = 100 + (2 * (year-1900))
Displacement, fuel, induction, and cylinder types defined by racing series restrictions.
SigningBonus = ((1000*ex_1d03p_year99)+(2500*RacingSeries_Funding_Value*ex_1d06p_year99)) * (Random Number Between (0 And 1.0)+0.5) Penalty = SigningBonus * (Random Number Between (0 And 3.0)+2.0) if Difficulty = Easy UnitCosts = (3000*ex_1d02p_year99) * (RacingSeries_Funding_Value/5.0 + 1) else if Difficulty = Normal UnitCosts = (2500*ex_1d02p_year99) * (RacingSeries_Funding_Value/6.0 + 1) else if Difficulty = Hard or Nightmare UnitCosts = (1500*ex_1d02p_year99) * (RacingSeries_Funding_Value/7.0 + 1)
Units = ((RacingSeries_Races * 3.0) * RacingSeries_Funding_Value) + 5;
Min_HP = (100+(2*(year-1900)));
(awardFleetContracts)
renewContractRequests