契約ゲームメカニクス マニュアルのゲームメカニクスセクションは、ゲームの計算で使用される内部式の詳細を説明します。マニュアルのこのセクションは疑似コードを使用しており、ゲーム内のコードと100%同じとは限りません。
マニュアルのゲームメカニクスパートは、主に “なぜX、Y、Zをするとこの評価になるのか?”というよくある質問に対するリファレンスとして設計されています。通常、この答えには多くの異なる変数が含まれており、マニュアルのこのセクションではそれを実証しています。
マニュアルのゲームメカニクスセクションは、ソーセージがどのように作られるかを示しています。ですから、ゲームを楽しむなら、このマニュアルの部分は避けた方がいいかもしれません。
名称 | 説明 | 名称 | 説明 | |
---|---|---|---|---|
govPopulation | 契約している都市や国の人口です。 | govCalc | その国の戦況です。1=通常、0=限定、-1戦争、-2総力戦です。 | |
year | これはゲーム年です。 | Year_Built | これはデザインした年です。 | |
Minimum_Bid_Score | 選ばれるために必要な最低落札点です。 | ContractPeriod | 契約期間の長さです。 | |
Wealth_Index | デザインの裕福度です。このページ.をご覧ください。 | Wealth | 裕福度を見る。 | |
Lobbying_Budget | 自社にかけられるロビー活動予算の加重値です | Max_Lobbying_Budget | 使用できるロビー活動予算の最大値です | |
contractUnitPriceMod | EngineContracts.xmlファイルで定義されている、このタイプの契約の価格modです。 | |||
Engine_Type_EngineSize | EngineContracts.xmlファイルで定義されているエンジンサイズ変数です。 | Engine_Type_UnitNumbers | EngineContracts.xmlファイルに定義されている、このタイプの契約の注文個数のModifier変数です。 | |
Engine_Type_FuelMOD | EngineContracts.xmlファイルで定義されているエンジン燃費変数です。 | Engine_Type_HPMOD | EngineContracts.xml ファイルに定義されているエンジン馬力変数です。 | |
Engine_Type_torqueMOD | EngineContracts.xmlファイルで定義されたエンジントルク変数です。 | Engine_Type_WidthMOD | EngineContracts.xmlファイルで定義されたエンジン幅変数です。 | |
Engine_Type_LengthMOD | EngineContracts.xmlファイルで定義されているエンジン長さ変数です。 | Engine_Type_WeightMOD | EngineContracts.xmlファイルで定義されたエンジン重量変数です。 | |
Engine_Type_unitPrice | このModifier変数は、EngineContracts.xmlファイルで定義されているこのタイプのエンジン契約の単価に影響します。 | |||
Type_Popularity | この車種の車両の人気値です。 | CarContractType_unitNumbers | EngineContracts.xmlファイルに定義されている、このタイプの車種契約の台数に対するModifier値です。 | |
CarContractType_HPMOD | EngineContracts.xmlファイルに定義されている、この車種の契約のための馬力のModifier値です。 | CarContractType_FuelMOD | EngineContracts.xmlファイルに定義されている、この車種の契約のための燃費のModifier値です。 | |
cargoType | この車種の積載量を重視する評価です。 | CarContractType_CargoMOD | EngineContracts.xmlファイルに定義されている、この車種の契約の積載量のModifier値です。 | |
CarContractType_torqueMOD | EngineContracts.xmlファイルに定義されている、この車種の契約のためのトルクのModifier値です。 | CarContractType_WeightMOD | EngineContracts.xmlファイルに定義されている、この車種の契約のための重量のModifier値です。 | |
CarContractType_TopSpeedMOD | EngineContracts.xmlファイルに定義されている、この車種の契約のための最高速度のModifier値です。 | CarContractType_unitPrice | EngineContracts.xmlファイルに定義されている、この車種の契約のための契約のための単価のModifier値です。 | |
RacingSeries_Funding_Value | RacingSeries.xmlファイルに定義されている、レースシリーズのレース資金変数です。 | RacingSeries_Races | シリーズが1シーズンに開催するレース数です。 | |
ex_1d002p_year99 | 1.002^(year-1899) | ex_1d005p_year99 | 1.005^(year-1899) | |
ex_1d008p_year99 | 1.008^(year-1899) | ex_1d01p_year99 | 1.01^(year-1899) | |
ex_1d015p_year99 | 1.015^(year-1899) | ex_1d02p_year99 | 1.02^(year-1899) | |
ex_1d025p_year99 | 1.025^(year-1899) | ex_1d03p_year99 | 1.03^(year-1899) | |
ex_1d035p_year99 | 1.035^(year-1899) | ex_1d04p_year99 | 1.04^(year-1899) | |
ex_1d06p_year99 | 1.06^(year-1899) |
//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 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
排気量、燃料、過給機、シリンダー、車種など、レースシリーズの制限を定義します。
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))
排気量、燃料、過給機、シリンダータイプは、レースシリーズの制限に従うこと。
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)));
if Vehicle Contract maxBid = ((500 * ex_1d03p_year99) + Random Number Between 0 and (250 * ex_1d03p_year99)) * (Wealth_Index * .75) else if( Engine Contract ) maxBid = (((550 * ex_1d03p_year99) + Random Number Between 0 And (550 * ex_1d04p_year99)) + ( HP/(20 * ex_1d02p_year99) ) + 1) else maxBid = (((550 * ex_1d035p_year99) + RandomNumber Between 0 And (550 * ex_1d04p_year99)) + 1) }
If Only One Bid Min_Bid_Mod = 1.6 If Only Two Bids Min_Bid_Mod = 1.3 If Only Three Bids Min_Bid_Mod = 1.1 If More Than Three Bids Min_Bid_Mod = 0 Minimum_Bid_Score = Minimum_Bid_Score * Min_Bid_Mod;
if(Lobbying Effectiveness > 60) { lobbyMod = (Lobbying Budget / Max_Lobbying_Budget } else { lobbyMod = 0 } if(lobbyMod >= 1.5) { lobbyMod = 1.499; } if Vehicle Contract { if( (Year - Year Built)> 6) { ageMod = 7 / (Year - Year Built); } else { ageMod = 1; } if Racing Contract { BuyerRating = (((Spec_HP - ContractRequirements_HP)*2.5) + (Spec_Fuel - ContractRequirements_FuelConsumption) + ((ContractRequirements_Weight - Spec_Weight)/50.0) + ((Spec_Cargo - ContractRequirements_CargoSpace/10.0)) + (Rating_Overall * 10) + (Rating_Cargo) + ((Spec_Torque - ContractRequirements_Torque)*2.5) + ((Spec_TopSpeed - ContractRequirements_TopSpeed)*3.5) + (Spec_LateralG - ContractRequirements_LateralG)*3 + (Rating_Quality*1) + (Rating_Dependability*10))/((Unit_Bid_Price^0.25)+1)*(1.5-lobbyMod)) } else { BuyerRating = (((Spec_HP - ContractRequirements_HP)/2.0) + (Spec_Fuel - ContractRequirements_FuelConsumption) + ((ContractRequirements_Weight - Spec_Weight)/100.0) + ((Spec_Cargo - ContractRequirements_CargoSpace/1.5)) + (Rating_Overall * 20) + (Rating_Cargo*15) + ((Spec_Torque - ContractRequirements_Torque)/2.0) + ((Spec_TopSpeed - ContractRequirements_TopSpeed)/3.5) + (Spec_LateralG - ContractRequirements_LateralG) + (Rating_Quality*25) + (Rating_Dependability*30))/((Unit_Bid_Price^0.81)+1)*(1.5-lobbyMod) } BuyerRating = BuyerRating * ageMod; Whoever has the highest buyer rating wins the contract.
if(Lobbying Effectiveness > 60) { lobbyMod = (Lobbying Budget / Max_Lobbying_Budget } else { lobbyMod = 0 } if(lobbyMod >= 1.5) { lobbyMod = 1.499; } if( (Year - Year Built) > 6) { ageMod = 7 / (Year - Year Built); } else { ageMod = 1; } if(lobbyMod == 1.5) { lobbyMod = 1.499; } if Racing Contract { BuyerRating = (((HP - ContractRequirements_HP)*2) + ((ContractRequirements_EngineWeight - Weight)/2.0) +((Torque - ContractRequirements_Torque)*2) + (FuelConsumption - ContractRequirements_FuelConsumption) + (Overall_Rating * 5) + (EngineReliability_Rating * 5) + (Fuel_Rating * 5) + (Power_Rating * 5) ) /((UnitBid^0.25)+1)*(1.5-lobbyMod) } else { BuyerRating = (((HP - ContractRequirements_HP)/2.0) + ((ContractRequirements_EngineWeight - Weight)/10.0) +((Torque - ContractRequirements_Torque)/2.0) + (FuelConsumption - ContractRequirements_FuelConsumption) + (Overall_Rating * 15) + (EngineReliability_Rating * 15) + (Fuel_Rating * 10) + (Power_Rating * 10) + (Smoothness_Rating * 10)) /((UnitBid^0.81)+1)*(1.5-lobbyMod) } BuyerRating = BuyerRating * ageMod; Whoever has the highest buyer rating wins the contract.
if(Lobbying Effectiveness > 60) lobbyMod = (Lobbying Budget / Max_Lobbying_Budget else lobbyMod = 0 if(lobbyMod >= 1.5) lobbyMod = 1.499; if( (Year - Year Built) > 6) { ageMod = 7 / (Year - Year Built) } else { ageMod = 1 } if Racing Contract { BuyerRating = (((ChassisMaxEngineLength+ChassisMaxEngineWidth)-ChassisWeightKG) + Strength_Rating*1.25 + Comfort_Rating + (Performance_Rating * 25) + Dependability_Rating*2)/((UnitBid^0.25)+1)*(1.5-lobbyMod) } else { BuyerRating = ((((ChassisMaxEngineLength*2)+(ChassisMaxEngineWidth*2))) + Strength_Rating + Comfort_Rating*2 + Performance_Rating*2 + (Dependability_Rating*4)+Overall_Rating*3)//((UnitBid^0.81)+1)*(1.5-lobbyMod) } BuyerRating = BuyerRating * ageMod Whoever has the highest buyer rating wins the contract.
if(Lobbying Effectiveness > 60) lobbyMod = (Lobbying Budget / Max_Lobbying_Budget else lobbyMod = 0 if(lobbyMod >= 1.5) lobbyMod = 1.499; if( (Year - Year Built) > 6) { ageMod = 7 / (Year - Year Built) } else { ageMod = 1 } if Racing Contract { BuyerRating = (((Overall_Rating*1.5+(Comfort_Rating*0.25))-Weight) + Reliability_Rating*2 + (Performance_Rating*15) + (FuelConsumption_Rating*2) + Power_Rating*5+(MaxTorqueInput*2.25))/((UnitBid^0.25)+1)*(1.5-lobbyMod) } else { BuyerRating = (((Overall_Rating*2.5+(Comfort_Rating*2.25))-Weight*2.5) + Reliability_Rating*1.5 + (Performance_Rating) + (FuelConsumption_Rating*2) + Power_Rating+(MaxTorqueInput*0.05))/((UnitBid^0.81)+1)*(1.5-lobbyMod) } BuyerRating = BuyerRating * ageMod Whoever has the highest buyer rating wins the contract.