User Tools

Site Tools


japanesemanual:ja_gm_unions

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
japanesemanual:ja_gm_unions [2023/04/26 07:32] nichirinmotorjapanesemanual:ja_gm_unions [2023/04/28 10:23] (current) nichirinmotor
Line 1: Line 1:
 +======= 組合とストライキのゲームメカニズム =======
  
 +
 +組合とストライキのゲームメカニズム
 +マニュアルのゲームメカニクスセクションは、ゲームの計算で使用される内部式の詳細を説明します。マニュアルのこのセクションは疑似コードを使用しており、ゲーム内のコードと100%同じとは限りません。
 +
 +マニュアルのゲームメカニクスパートは、主に "なぜX、Y、Zをするとこの評価になるのか?"というよくある質問に対するリファレンスとして設計されています。通常、この答えには多くの異なる変数が含まれており、マニュアルのこのセクションではそれを実証しています。
 +
 +**マニュアルのゲームメカニクスセクションは、[[https://idioms.thefreedictionary.com/seeing+how+the+sausage+gets+made|ソーセージがどのように作られるか]]を示しています。ですから、ゲームを楽しむなら、このマニュアルの部分は避けた方がいいかもしれません。**
 +
 +
 +====== 変数 ======
 +
 +
 +^ 名称 ^ 説明 ^ ^ 名称 ^ 説明 ^
 +| **factoryWageDifficultyAddition** | この変数は、工場の従業員が要求する賃金を調整するものです。  | | **City_Average_Wage** | これは、その都市における全職種の平均賃金です。ゲームは、都市の一人当たりの所得からこの値を生成します。 | 
 +| **Factory_Wage** | 工場の従業員に支払っている金額です  | | **Branch_Wage** | 支店の従業員に支払っている金額です | 
 +| **Engineering_Wage** | エンジニアに支払っている金額です  | | **Marketing_Wage** | マーケティングの従業員に支払っている金額です | 
 +| **Admin_Wage** | 管理の従業員に支払っている金額です | | **total_furloughed** | これは、仕事から外した従業員の数です。通常、工場のラインを調整するときに発生します。一時解雇した従業員の中には、自分から辞めていく人もいます。残りの従業員は、6ヵ月後、再び必要にならない限り、自動的に解雇されます。 
 +| **total_employees** | これは、あなたが擁している従業員の総数です  | | **Department_Direct_Benefits** | 選択した部門の現在の直接給付スライダーの位置です | 
 +| **Department_Defined_Benefits** | 選択した部門の現在の年金スライダーの位置です  | | **Department_Pension_Fees** | 選択した部門の現在の年金の料金スライダーの位置です | 
 +| **Employee_Moral** | これは従業員の士気です。  | | **StockMarket_GrowthRate** | turnevents.xmlファイルで定義されている、株式市場の静的成長値です。 | 
 +| **valueBP** | 直接給付スライダーの現在値です  | | **valuePA** | 年金スライダーの現在値です | 
 +| **Last_5_Years_Income** | 過去5年間の総収益です  | | **Last_5_Years_Expenses** | 過去5年間の総費用です | 
 +| **AdministrationSkill** | 管理スキルです  | | **DCWant** | これは、組合が望む直接給付のスライダー位置です。 | 
 +| **DBWant** | これは、組合が望む年金のスライダーの位置です。  | | **DBFeeSlider** | これは、組合が望む年金の料金スライダーの位置です。 | 
 +| **DCSlider** | これが現在の直接給付のスライダーの位置です  | | **DBSlider** | これは、年金のスライダーの位置です。 | 
 +| **CurrentWages** | これは、部門の現在の賃金です。  | | **RequestedWage** | これは、部門が要求する賃金です。 
 +
 +
 +====== 従業員の士気 ======
 +
 +===== 賃金から =====
 +
 +==== 工場 ====
 +
 +<code cpp>
 +if( Factory_Wage < City_Average_Wage * (0.5211 + factoryWageDifficultyAddition) )
 +    Morale = Morale - (5 * (1-(Factory_Wage/(City_Average_Wage * (0.5211 + factoryWageDifficultyAddition ))))
 +else
 +    Morale = Morale + (3 * (1-(1+((City_Average_Wage * (0.5211 + factoryWageDifficultyAddition ))/Factory_Wage)))
 +        
 +</code>
 +
 +==== 支店 ====
 +
 +<code cpp>
 +if( Branch_Wage < City_Average_Wage * 1.25 )
 +    Morale = Morale - (5 * (1-(Branch_Wage/(City_Average_Wage * 1.25 ))))
 +else
 +    Morale = Morale + (3 * (1-(1+((City_Average_Wage * 1.25 )/Branch_Wage))))
 +</code>
 +
 +==== エンジニアリング ====
 +
 +<code cpp>
 +if( Engineering_Wage < City_Average_Wage * 2 )
 +    Morale = Morale - (5 * (1-(Engineering_Wage/(City_Average_Wage * 2))))
 +else
 +    Morale = Morale + (3 * (1-(1+((City_Average_Wage * 2)/Engineering_Wage))))
 +</code>
 +
 +==== マーケティング ====
 +
 +<code cpp>
 +if( Marketing_Wage < City_Average_Wage * 1.3 )
 +    Morale = Morale - (5 * (1-(Marketing_Wage/(City_Average_Wage * 1.3))))
 +else
 +    Morale = Morale + (3 * (1-(1+((City_Average_Wage * 1.3)/Marketing_Wage))))
 +</code>
 +
 +
 +==== 管理 ====
 +
 +<code cpp>
 +if( Admin_Wage < City_Average_Wage * 2.5 )
 +    Morale = Morale - (5 * (1-(Admin_Wage/(City_Average_Wage * 2.5))))
 +else
 +    Morale = Morale + (3 * (1-(1+((City_Average_Wage * 2.5)/Admin_Wage))))
 +</code>
 +
 +
 +
 +===== 休暇から =====
 +
 +工場の士気のみ。
 +
 +<code cpp>
 +furloughRatio = total_furloughed/total_employees
 +laidOffRatio = (furloughed * 0.1)/total_employees
 +
 +if(furloughRatio>1)
 +    furloughRatio = 1
 +if(laidOffRatio>1)
 +    laidOffRatio = 1
 +    
 +Morale = Morale - ((0.075 * furloughRatio ) + ( 0.1 * laidOffRatio) )
 +</code>
 +
 +
 +
 +
 +===== 年金  =====
 +
 +==== 料金から ====
 +
 +<code cpp>
 +AvgDepartmentDirectBenefits = Average Department Direct Benefits Percentage At All Companies
 +AvgDepartmentDefinedBenefits = Average Department Defined Benefits Percentage At All Companies
 +
 +
 +AvgDepartmentDirectBenefits = AvgDepartmentDirectBenefits * 0.9 + 0.0001
 +AvgDepartmentDefinedBenefits = AvgDepartmentDefinedBenefits * 0.9 + 0.0001
 +
 +
 +Department_Morale_Change = Department_Direct_Benefits/AvgDepartmentDirectBenefits +
 +     Department_Defined_Benefits/AvgDepartmentDefinedBenefits - Department_Pension_Fees * 1.5
 +
 +if(Department_Morale_Change > 2)
 +    Department_Morale_Change = 2
 +else if(Department_Morale_Change < 2)
 +    Department_Morale_Change = -2
 +    
 +Department_Morale = Department_Morale - Department_Morale_Change
 +</code>
 +
 +==== 給料不足の契約 ====
 +
 +<code cpp>
 +If(Department_Direct_Benefits < Agreed_Direct_Benefits OR 
 +   Department_Defined_Benefits < Agreed_Defined_Benefits)
 +{
 +  Department_Morale = Department_Morale - 2
 +
 +</code>
 +
 +
 +==== 新規契約 ====
 +
 +<code cpp>
 +Department_Morale = Department_Morale = 100
 +</code>
 +
 +===== イベントから =====
 +
 +
 +==== 着火 ====
 +
 +<code cpp>
 +Department_Morale = Department_Morale * 0.8
 +</code>
 +
 +
 +==== 大打撃 ====
 +
 +<code cpp>
 +Department_Morale = Department_Morale * 0.5
 +</code>
 +====== ストライキ ======
 +
 +
 +===== ストライキへ =====
 +
 +<code cpp>
 +if(Random Number Between (0.0 AND 1.0) > (1-(0.5-(Employee_Moral/100.0)))
 +    Strike = true
 +else if(StockMarket_GrowthRate > 1.02 AND Random Number Between (0 and 120) < 2)
 +    Strike = true
 +</code>
 +
 +===== 賃上げ要求 =====
 +
 +<code cpp>
 +
 +//Branches
 +ModValue = 1.25
 +//Factories
 +ModValue = 0.5211 + factoryWageDifficultyAddition;
 +//Marketing
 +ModValue = 1.3;
 +//Engineering
 +ModValue = 2
 +//Admin
 +ModValue = 2.5
 +
 +
 +
 +if(stockmarketRates > 1.02 )
 +    RequestedWage = (City_Average_Wage *  ModValue * 1.2) * (Random Number Between (0 AND 0.13) + 1.05) + 10;
 +else
 +    RequestedWage = (City_Average_Wage *  ModValue) * (Random Number Between ( 0  AND 0.13)+1.05)+10;
 +
 +
 +if(CurrentWages > RequestedWage)
 +{
 +    RequestedWage = CurrentWages * 1.05 + 5;
 +}
 +</code>
 +
 +
 +===== ストライキの種類 =====
 +
 +
 +<code cpp>
 +if(Benefits_Enabled AND Random Number Between (0 to 10) = 0)
 +{
 +  //Generate Benefits Demand Here... See next segments  
 +}
 +else if (Random Number Between (0 to 1) = 0)
 +{
 +  No strike
 +}
 +else 
 +{
 +  Continue With Wage Strike
 +}
 +</code>
 +
 +===== 福利厚生の要求 =====
 +
 +また、ゲームではストライキシステム以外の福利厚生の要求が発生することもあります。
 +
 +==== 直接給付 ====
 +
 +<code cpp>
 +if(Year < 2021)
 +{
 +    yearAdj = 0.0095*((year-1899)/5);
 +    minimumRequest = 0.009*((year-1900));
 +}
 +else
 +{
 +    yearAdj = 0.0095*((121)/5);
 +    minimumRequest = 0.009*((120));
 +}
 +
 +
 +if((year < 1975 AND Random Number Between (0 AND 99) < 6)  OR
 +(year > 1974 AND year < 1995 AND  Random Number Between (0 AND 99) < 20) OR
 +(year > 1994 AND  Random Number Between (0 AND 99) < 30))
 +{
 +    requestAmount = valueBP + Random Number Between (0 AND 0.03) + yearAdj
 +
 +        if(requestAmount > 2)
 +            requestAmount = 2;
 +
 +        if(requestAmount < minimumRequest)
 +            requestAmount = minimumRequest;
 +
 +        
 +}
 +
 +</code>
 +
 +
 +
 +==== 年金 ====
 +
 +<code cpp>
 +
 +if( (year > 1918 AND year < 1995 AND Random Number Between (0 AND 99) < 60) OR
 +(year > 1994 AND Random Number Between (0 AND 99) < 16))
 +{
 +    requestAmount = valuePA + Random Number Between (0 AND 0.03) + yearAdj
 +
 +        if(requestAmount > 2)
 +            requestAmount = 2;
 +
 +        if(requestAmount < minimumRequest)
 +            requestAmount = minimumRequest;
 +
 +}
 +</code>
 +
 +
 +====== 組合との交渉 ======
 +
 +<code cpp>
 +negotiations = Last_5_Years_Income / (Last_5_Years_Expenses * 1.1)
 +
 +if(negotiations < 0.85)
 +{
 +    negotiations = 0.85
 +}
 +else if(negotiations > 1)
 +    negotiations = 1;
 +
 +if(AdministrationSkill > 0)
 +{
 +    negotiations = negotiations - (0.2 * (AdministrationSkill/100.0))
 +}
 +
 +if(negotiations < 1)
 +{
 +    if(negotiations < 0.65)
 +    {
 +        negotiations = 0.65;
 +    }
 +
 +    DCWant = DCWant * negotiations;
 +    DBWant = DBWant * negotiations;
 +
 +}
 +
 +
 +DBWant = DBWant + (DBFeeSlider*(1.0-(0.2 * (AdministrationSkill/100.0))));
 +
 +
 +
 +if(DCSlider >= DCWant AND DBSlider >= DBWant)
 +{
 +    The Union Approves!
 +}
 +
 +</code>
 +====== ストライキを止めるタイミング ======
 +
 +<code cpp>
 +if(CurrentWages > RequestedWage)
 +  Stop Striking
 +
 +if Successful Benefits Negotiation
 +  Stop Striking
 +  
 +</code>