====== Gearbox 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 [[https://idioms.thefreedictionary.com/seeing+how+the+sausage+gets+made|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.
==== Sliders ====
^ Variable ^ Description ^ ^ Variable ^ Description ^
| **Sliders_LowGear_Ratio** | Specifications => Low-End Gearing Slider | | **Sliders_HighGear_Ratio** | Specifications => High-End Gearing Slider |
| **Sliders_Torque_Max_Input** | Specifications => Maximum Torque Input Slider | | **Sliders_Tech_Material** | Technologies => Material Quality Slider |
| **Sliders_Tech_Components** | Technologies => Component Quality Slider | | **Sliders_Tech_Technology** | Technologies => Technology Slider |
| **Sliders_Tech_Techniques** | Technologies => Manufacturing Techniques Slider | | **Sliders_Design_Ease** | Design Focus => Shifting Ease |
| **Sliders_Design_Dependability** | Design Focus => Dependability | | **Sliders_Design_DesignPace** | Design Focus => Development Pace |
| **Sliders_Design_FuelEconomy** | Design Focus => Fuel Economy | | **Sliders_Design_Performance** | Design Focus => Performance |
==== Sub-Components ====
^ Variable ^ Description ^ ^ Variable ^ Description ^
| **Has_Limited_Slip ** | Specifications => Limited Slip Checkbox (If checked, Value is 1) | | **Has_Overdrive ** | Specifications => Overdrive Checkbox (If checked, Value is 1) |
| **Has_Transaxle ** | Specifications => Transaxle Checkbox (If checked, Value is 1) | | **Has_Reverse ** | Specifications => Reverse Gear Checkbox (If checked, Value is 1) |
| ** Subcomponents_Gearbox_Weight** | Gearbox Type Weight Value | | **Subcomponents_Gearbox_Complexity** | Gearbox Type Complexity Value |
| ** Subcomponents_Gearbox_Smoothness** | Gearbox Type Smoothness Value | | **Subcomponents_Gearbox_Ease** | Gearbox Type Ease Value |
| ** Subcomponents_Gearbox_FuelRating** | Gearbox Type Fuel Economy Value | | ** Subcomponents_Gearbox_PerformanceRating** | Gearbox Type Performance Value |
| ** Subcomponents_Gearbox_UnitCosts** | Gearbox Type Unit Cost Value | | ** Subcomponents_Gearbox_DesignCosts** | Gearbox Type Design Cost Value |
| ** Number_Of_Gears** | Selected Number of Gears |
==== Global ====
^ Variable ^ Description ^ ^ Variable ^ Description ^
| **year** | Current game year | | **ex_1d008p_year99** | 1.008%%^%%(year-1899) |
| **ex_1d003p_year99** | 1.003%%^%%(year-1899) | | **ex_1d01p_year99** | 1.01%%^%%(year-1899) |
| **ex_1d014p_year99** | 1.014%%^%%(year-1899) | | **ex_1d015p_year99** | 1.015%%^%%(year-1899) |
| **ex_1d017p_year99** | 1.017%%^%%(year-1899) | | **ex_1d019p_year99** | 1.019%%^%%(year-1899) |
| **ex_1d02p_year99** | 1.02%%^%%(year-1899) | | **ex_1d0225p_year99** | 1.0225%%^%%(year-1899) |
| **ex_1d027p_year99** | 1.027%%^%%(year-1899) | | **Global_Interest_Rate** | Global Interest Rates as defined in the TurnEvents.xml file |
| **carPriceRate** | Global vehicle costs variable as defined in the TurnEvents.xml file | | **designRandomVal** | Random variation based on workmanship image/skill ratings. |
| **Marq_DesignGearboxSkill** | Gearbox design skill of the selected marque | | **PreResearchGearboxAmountEffect** | Research team's bonus on gearbox design |
===== Specs =====
==== Maximum Torque Support ====
Values are in lb-ft.
Max_Torque_Support = 10 * Number_Of_Gears + 75 * (ex_1d0225p_year99) *
Sliders_Torque_Max_Input + 35 * (ex_1d0225p_year99) *
(1-Sliders_LowGear_Ratio) + 15 * (ex_1d0225p_year99) *
(1-Sliders_HighGear_Ratio) + 5 * (ex_1d0225p_year99) *
Sliders_Design_Dependability + 5 * (ex_1d0225p_year99) *
Sliders_Tech_Components + 5 * (ex_1d0225p_year99) * Sliders_Tech_Components
Max_Torque_Support = Max_Torque_Support + (Marq_DesignGearboxSkill/5.0)
==== Weight ====
Values are in lbs.
Weight = (20 + 15*(Number_Of_Gears+Has_Reverse) +
25*Subcomponents_Gearbox_Complexity+15*Has_Overdrive +
15*Has_Limited_Slip + 50 * Sliders_Torque_Max_Input -
50*Sliders_Design_Performance + 140 * Subcomponents_Gearbox_Weight +
30*(1-Sliders_Tech_Material))- 20 * Has_Transaxle;
===== Ratings =====
==== Power Rating ====
Power_Rating = 100*(Max_Torque_Support/(80 + 150 * (ex_1d0225p_year99) +
90 * (ex_1d0225p_year99)))
if(Power_Rating>100)
Power_Rating = 100
==== Fuel Rating ====
FuelEconomy_Rating = (15*Sliders_Design_FuelEconomy + 15 * Subcomponents_Gearbox_FuelRating +
13 * (Sliders_LowGear_Ratio) + 10*Sliders_HighGear_Ratio +
5*(1-Sliders_Design_Performance) + 6 * Has_Overdrive +
2*Number_Of_Gears + 5 * Sliders_Tech_Components +
6 * Sliders_Tech_Material + 6 * Sliders_Tech_Technology)
FuelEconomy_Rating = FuelEconomy_Rating + (Marq_DesignGearboxSkill/10.0)
if(FuelEconomy_Rating>100)
FuelEconomy_Rating = 100;
==== Performance Rating ====
Performance_Rating = 10 * Sliders_Design_Performance +
13 * Subcomponents_Gearbox_PerformanceRating + 2*Number_Of_Gears +
7 * Sliders_Tech_Technology +6 * Sliders_Tech_Material +
7 * Sliders_Tech_Components + 6 * Sliders_Tech_Techniques +
15 * (1-Sliders_LowGear_Ratio) + 10 * Sliders_HighGear_Ratio +
4 * Has_Limited_Slip+2*Has_Transaxle
Performance_Rating = Performance_Rating + (Marq_DesignGearboxSkill/10.0)
if(Performance_Rating>100)
{
Performance_Rating = 100;
}
==== Reliability Rating ====
Reliability_Rating = 20 * std::abs((1.0-Subcomponents_Gearbox_Complexity)) +
15 * Sliders_Torque_Max_Input - (Number_Of_Gears+Has_Reverse) +
10*Sliders_Tech_Material + 10*Sliders_Tech_Components +
10 * Sliders_Design_Dependability + 5 * (1-Subcomponents_Gearbox_Complexity) +
5 * (1-Sliders_Design_Ease) + 5 * std::abs(Has_Limited_Slip-1) +
5 * std::abs(Has_Overdrive-1) + 5 * std::abs(Has_Transaxle-1) +
10 *(1-Sliders_Tech_Technology)
Reliability_Rating = Reliability_Rating + (Marq_DesignGearboxSkill/10.0)
if(Reliability_Rating > 100)
{
Reliability_Rating = 100
}
==== Comfort Rating ====
Comfort_Rating = 10 * Has_Limited_Slip + 10 * Has_Reverse +
40 * Sliders_Design_Ease + 20 * Subcomponents_Gearbox_Ease +
20 * Subcomponents_Gearbox_Smoothness
Comfort_Rating = Comfort_Rating + (Marq_DesignGearboxSkill/10.0)
if(Comfort_Rating> 100)
{
Comfort_Rating = 100;
}
==== Overall Rating ====
Overall_Rating = (Power_Rating+FuelEconomy_Rating+Performance_Rating+
Reliability_Rating +Comfort_Rating +Marq_DesignGearboxSkill )/6
Overall_Rating = Overall_Rating + (2.5*PreResearchGearboxAmountEffect);
if(Overall_Rating > 100)
{
Overall_Rating = 100;
}
==== Manufacturing Requirements ====
Manufacturing_Req = (10*((Number_Of_Gears+Has_Reverse)/6.0)+20*Subcomponents_Gearbox_Complexity+
15*Sliders_Torque_Max_Input+5*Has_Overdrive + 5 * Has_Transaxle +
5 * Has_Limited_Slip + 7 * Sliders_Tech_Techniques +
13 * Sliders_Design_Dependability + 5 *
((Sliders_Design_Ease + Sliders_Design_FuelEconomy +
Sliders_Design_Performance)/3.0) + 5 * ((Subcomponents_Gearbox_Ease +
Subcomponents_Gearbox_FuelRating+ Subcomponents_Gearbox_PerformanceRating +
Subcomponents_Gearbox_Smoothness)/4.0)) + 10 *
((Sliders_Tech_Material + Sliders_Tech_Components + Sliders_Tech_Technology)/3.0)
==== Design Requirements ====
Design_Req = (9*((Number_Of_Gears+Has_Reverse)/6.0)+
7*Subcomponents_Gearbox_Complexity+ 3 * Has_Overdrive + 3*Has_Limited_Slip+
3*Sliders_Tech_Technology + 3 * Subcomponents_Gearbox_PerformanceRating +
3 *Subcomponents_Gearbox_FuelRating+ 3 * Subcomponents_Gearbox_Ease+ 3 *
Subcomponents_Gearbox_Smoothness+ 3 * Sliders_Tech_Material + 2 *
Sliders_Tech_Components + 3*Sliders_Torque_Max_Input+ 11 * Sliders_Design_Ease +
14 * Sliders_Design_Dependability + 15 * Sliders_Design_FuelEconomy +
15 * Sliders_Design_Performance)
===== Miscellaneous =====
==== Unit Costs ====
Unit_Costs = ((((20*ex_1d01p_year99 + 40 * ex_1d02p_year99 * (Number_Of_Gears + Has_Reverse) +
60 * ex_1d008p_year99 * Subcomponents_Gearbox_Complexity +
15 * ex_1d008p_year99 * Has_Overdrive + 65 * ex_1d008p_year99 * Has_Transaxle +
55 * ex_1d008p_year99 * Has_Limited_Slip +
20*ex_1d02p_year99*(Sliders_Design_Performance *Sliders_Design_Performance ) +
25*ex_1d02p_year99*(Sliders_Design_FuelEconomy * Sliders_Design_FuelEconomy )+
20*ex_1d02p_year99*(Sliders_Design_Ease *Sliders_Design_Ease )+
45*ex_1d02p_year99*(Sliders_Design_Dependability*Sliders_Design_Dependability) +
(80* ex_1d02p_year99* Subcomponents_Gearbox_UnitCosts) +
30 * ex_1d015p_year99 * (Sliders_Torque_Max_Input * Sliders_Torque_Max_Input) +
40 * ex_1d02p_year99 * (0.5 + (Sliders_Tech_Technology*Sliders_Tech_Technology)) +
55 * ex_1d015p_year99 * ((Sliders_Tech_Material * Sliders_Tech_Material) +
(Sliders_Tech_Components * Sliders_Tech_Components ) +
(Sliders_Tech_Techniques*Sliders_Tech_Techniques)) *
ex_1d01p_year99)*(Global_Interest_Rate/2.1))) * carPriceRate) * (designRandomVal)
hyperSliders = ((Sliders_Tech_Material + Sliders_Tech_Components +
Sliders_Tech_Techniques + Sliders_Tech_Technology) +
(Sliders_Torque_Max_Input * Sliders_Torque_Max_Input) +
(Sliders_Design_Performance + Sliders_Design_FuelEconomy +
Sliders_Design_Dependability + Sliders_Design_Ease))/9.0
hyperCosts = 500 * ex_1d04p_year99 * hyperSliders^4
Unit_Costs = Unit_Costs + hyperCosts - ((Unit_Costs/10) * (Marq_DesignGearboxSkill/100))
==== Design Costs ====
designcost = ((6000*ex_1d017p_year99+250*ex_1d017p_year99 *
(Number_Of_Gears+Has_Reverse)+5000*ex_1d017p_year99*Subcomponents_Gearbox_Complexity+
(hyperCosts * (100*ex_1d027p_year99)) +
2000*ex_1d014p_year99*(Sliders_Torque_Max_Input*Sliders_Torque_Max_Input)+2000 *
ex_1d014p_year99*Has_Transaxle+2000*ex_1d017p_year99*Has_Overdrive +
2500*ex_1d019p_year99*Has_Limited_Slip+2500*ex_1d014p_year99*
(0.5+(Sliders_Tech_Technology*Sliders_Tech_Technology))+
2500*ex_1d014p_year99*(Sliders_Design_Performance *Sliders_Design_Performance ) +
3500*ex_1d014p_year99*(Sliders_Design_FuelEconomy * Sliders_Design_FuelEconomy )+
4000*ex_1d014p_year99*(Sliders_Design_Ease *Sliders_Design_Ease )+
8000*ex_1d014p_year99*(Sliders_Design_Dependability*Sliders_Design_Dependability)+
2200*ex_1d014p_year99*(Sliders_Tech_Techniques *Sliders_Tech_Techniques )+
2200*ex_1d014p_year99*(Sliders_Tech_Material * Sliders_Tech_Material ))*
ex_1d014p_year99) * Number_Of_Gears
designcost = (designcost/5)+(designcost*
(Sliders_Design_DesignPace*Sliders_Design_DesignPace*4.5))
==== Finish Time ====
Finish_Time = (3 + 0.35*Number_Of_Gears+1.5*Subcomponents_Gearbox_Complexity+
Has_Transaxle+0.35*Has_Overdrive+0.35*Has_Limited_Slip +
0.35*(Sliders_Design_Ease + Sliders_Design_Dependability +
Sliders_Design_FuelEconomy + Sliders_Design_Performance) +
0.35 * (Subcomponents_Gearbox_Ease + Subcomponents_Gearbox_FuelRating +
Subcomponents_Gearbox_PerformanceRating + Subcomponents_Gearbox_Smoothness) +
0.55 * (Sliders_Tech_Material + Sliders_Tech_Components +
Sliders_Tech_Technology + Sliders_Tech_Techniques))-
(2*(FactOverallVAL/100.0))+ (1.15*ex_1d003p_year99*hyperSliders)
if(year < 2020)
additionalTime = ( ((year-1840)/15.0 ) *((0.5/( Sliders_Design_DesignPace+0.05) ) -0.45) )
else
additionalTime = ( ((2020-1840)/15.0 ) *((0.5/( Sliders_Design_DesignPace+0.05) ) -0.45) )
if(Sliders_Design_DesignPace < 0.5)
Finish_Time = Finish_Time + additionalTime
else
{
turnsOff = (Sliders_Design_DesignPace - 0.5)/0.20;
Finish_Time = Finish_Time + (additionalTime - turnsOff)
}
if(Finish_Time < 1)
Finish_Time = 1
==== Employees Required ====
if(year < 2021)
Employees_Required = Design_Req * (0.07833*(year-1899)+0.275);
else
Employees_Required = Design_Req * (0.07833*(121)+0.275);
Employees_Required = Employees_Required /5 + ((Employees_Required/1.2)*Sliders_Design_DesignPace) + 2;