User Tools

Site Tools


gamemanual:gm_sales

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
gamemanual:gm_sales [2022/04/14 16:05] – [Formula] admingamemanual:gm_sales [2022/04/18 20:16] (current) – [Variables] admin
Line 1: Line 1:
 +====== Sales 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.** 
 +
 +
 +===== Buyer Pools =====
 +
 +==== Variables ====
 +
 +^ Name ^ Description ^ ^ Name ^ Description ^
 +| **Adjusted_Years** | Current Year - 1899 | | **Buying_Percentage** | Monthly Percentage of people buying any vehicle. |
 +| **Global_Buy_Rate** | Global buyer rate as defined in the TurnEvents.xml file | | **Global_Interest_Rates** | Global interest rate as defined in the TurnEvents.xml file |
 +| **City_ECOGROWTH** | Economic Growth value for a specific city.  | | **City_POPULATION** | Population of a specific city |
 +| **City_INF** | Infrastructure rating for a specific city | | **City_CAP** | Per Capita income for a specific city |
 +| **City_GOVERN** | Government stability rating for selected city. 1 = stable, 0 = limited war, -1 or less, full war/halted. | | **Consumer_Fluctuation_Rate** | Variable defined by new game starting options. |
 +| **Vehicle_Type_Popularity** | This is the popularity value of the specific vehicle type | | **Vehicle_Type_Fuel_Rating** | This is the fuel rating of the specific vehicle type | 
 +| **Vehicle_Type_People** | This is the number of people interested in buying this type of vehicle in the specific city  | | **Vehicle_Type_WealthIndex** | This is the wealth index of the specific vehicle type, see [[http://wiki.gearcity.info/doku.php?id=gamemanual:references_vehicletypeimportance|Vehicle Type Importance Ratings]] for details | 
 +| **Vehicle_Unit_Costs** | This is the Material Unit Costs of the specific car. | | **moneyBoost** | Consumer Purchasing Power as defined by starting new game options. | 
 +| **Car_Sales_Price** | Sales price of the specific car | | **Car_Quality_Rating** | Quality rating of the specific car | 
 +| **Car_Top_Speed** | Top speed of the specific car | | **Minimum_Top_Speed** | Minimum top speed required for this car type before penalties are applied | 
 +| **indexMove** | Marketing Efficiency's effect on wealth demographics | | **Dealerships** | Number of dealerships the company selling the specific car has | 
 +| **Company_Racing_Image** | Racing image of the company selling the specific car | | **Global_Gas** | Global Fuel costs as defined in the TurnEvents.xml file | 
 +| **Branch_Staff_Value** | Staff slider, number of employees, and morale values of the branch | | **Branch_Sales_Resources** | Sales resources slider for the branch | 
 +| **Sum_Of_BuyerRatings** | Sum of all buyer ratings in the specific city for the vehicle type, including the specific car's. | | **Used_Cars_BuyerRating** | Buyer rate for the used vehicles of this type in the specific city. | 
 +| **Car_BuyerRating** | The specific car's buyer rating | | **Max_Rating_For_Type_In_City** | The highest buyer rating for this vehicle type in this specific city. | 
 +| **Collective_Age** | The age of the chassis, engine, gearbox, and vehicle design | | **Top_Speed_Mod** | Top speed penalty | 
 +| **overPriced** | Over priced penalty | | **Hard_Difficulty_Sales_Mod** | Sales boost for AI on hard and nightmare difficulties | 
 +| **Not_A_Player_Company** | Not you | | **boycottPlayer** | If your company is being protested for whatever reason. | 
 +===== City/Type Buying Population =====
 +
 +<code cpp>
 +
 +if(Adjusted_Years <= 25)
 +{
 +    Buying_Percentage = (((0.00155*Adjusted_Years) 
 +        +0.003)*City_ECOGROWTH)*Global_Buy_Rate*Global_Interest_Rates
 +}
 +else if(Adjusted_Years <= 105)
 +{
 +    Buying_Percentage = (((0.00025*Adjusted_Years)+0.035)*City_ECOGROWTH) *
 +        Global_Buy_Rate * Global_Interest_Rates
 +}
 +else if(Adjusted_Years <= 130)
 +{
 +    Buying_Percentage = (((-0.002*Adjusted_Years)+0.27125)*City_ECOGROWTH) * 
 +        (Global_Buy_Rate)*Global_Interest_Rates
 +}
 +else
 +{
 +    Buying_Percentage = (0.011 *City_ECOGROWTH) * Global_Buy_Rate * Global_Interest_Rates
 +}
 +
 +
 +if(City_GOVERN >= 1)
 +{
 +    govEffect = 0.5;
 +}
 +else if(City_GOVERN == 0)
 +{
 +    govEffect = 0.25;
 +}
 +else
 +{
 +    govEffect = 0;
 +}
 +
 +RandomNumber = Random Number Between 0 AND ((City_INF/400.0)*
 +    (Consumer_Fluctuation_Rate))
 +
 +//Total City Buying Pool
 +City_Buying_Population = (((((City_POPULATION)) * Buying_Percentage) *
 +    popBooster)*( RandomNumber + 0.85)) * City_BuyerRate* govEffect
 +
 +//Vehicle Type Buying Pool
 +Vehicle_Type_Buyers = City_Buying_Population * Vehicle_Type_Popularity
 +
 +</code>
 +
 +
 +
 +===== Buyer Ratings =====
 +
 +
 +See [[http://wiki.gearcity.info/doku.php?id=gamemanual:gui_dynamicreports#buyer_rating_table|Buyer Rating Table Report]].
 +
 +
 +===== Sales Calculation =====
 +
 +
 +
 +<code cpp>
 +For Every Car In Every Type Sold In City
 +{
 +
 + People = Vehicle_Type_People + ((Vehicle_Type_People*0.2) * indexMove^2) +
 + ((Vehicle_Type_People*0.01+3) * (0.1*(10-Vehicle_Type_WealthIndex))) * Dealerships
 +
 + People = People + ((Vehicle_Type_People *0.05) * 
 +        (Company_Racing_Image/100.0)) +
 + ((Vehicle_Type_People *0.15) * indexMove)
 +
 + People = People + ((Vehicle_Type_People *0.05) * 
 +        (Vehicle_Type_Fuel_Rating * Global_Gas))
 +
 + Branch_Effect = 0.5+(0.25*((Branch_Staff_Value*0.0125) + (Branch_Sales_Resources*0.0125)))
 +
 + if(Vehicle_Unit_Costs != 0)
 + { Quality_To_Price_Ratio = (0.9 + 
 +            (Car_Sales_Price/(Vehicle_Unit_Costs*(3.0+3*(Car_Quality_Rating/5.0)))))
 + }
 + else
 + Quality_To_Price_Ratio = 1
 +
 +
 + if(Car_Top_Speed < Minimum_Top_Speed && Minimum_Top_Speed != 0 )
 + Top_Speed_Mod = Car_Top_Speed / Minimum_Top_Speed
 + else
 + Top_Speed_Mod = 1
 +
 +
 +        Vehicle_Type_Max_Money = City_CAP*moneyBoost*((Vehicle_Type_WealthIndex/50.0)+1)
 +
 +
 +        priceIndex = Car_Sales_Price/(1+Vehicle_Type_Max_Money)
 +
 +        if(Vehicle_Type_WealthIndex > 6 AND priceIndex < 5)
 +        {
 +            priceIndex = priceIndex + (5-priceIndex)
 +        }
 +        else
 +        {
 +            priceIndex = priceIndex - (0.001 * priceIndex)
 +        }
 +
 +        if(year > 1945 AND Vehicle_Type_WealthIndex != 0)
 +        {
 +            priceIndex = priceIndex + ( ( priceIndex / Vehicle_Type_WealthIndex ) / 2.0)
 +        }
 +
 +
 + Wealth_Demographic =  (0.005 - ((priceIndex-4.0-(0.1*Vehicle_Type_WealthIndex)) * 0.00002))
 +
 + if(Vehicle_Type_WealthIndex > 5 &&  priceIndex < 25)
 +      Ultrawealthy_VehicleType_Quality = Random Number Between 0 and (Car_Quality_Rating/20)
 + else
 +      Ultrawealthy_VehicleType_Quality = 0
 +
 + if( Sales Price is signicantly lower than material costs )
 +   Sold_At_Branch = 1000000
 + else
 + {
 +        if(Sum_Of_BuyerRatings+Used_Cars_BuyerRating != 0)
 +        {
 +            Sold_At_Branch = 0.5 + 
 +                (((People * ((Car_BuyerRating)/((Sum_Of_BuyerRatings+Used_Cars_BuyerRating)))) *
 +          ( (Random Number Between 0 and 0.2) + 0.9)) * Branch_Effect)
 +        }
 +        else
 +        {
 +            Sold_At_Branch = 0.5 + People * 
 +                ((Random Number Between 0 and 0.2) + 0.9) * Branch_Effect
 +        }
 +           
 +        Sold_At_Branch = Sold_At_Branch *  Wealth_Demographic
 +        
 +        if(year > 1995)
 +            Sold_At_Branch = Sold_At_Branch + People * 0.003
 +        else if(year > 1945 && year < 1995)
 +            Sold_At_Branch = Sold_At_Branch + People * (0.001 + (0.00004*(year-1945)))
 +        else
 +            Sold_At_Branch = Sold_At_Branch + People * 0.001
 +        
 +        if(Sold_At_Branch < 3 && People > 50 &&  Wealth_Demographic > 0.01)
 +        {
 +            if(Car_BuyerRating > Max_Rating_For_Type_In_City * 0.6)
 +            {
 +                if( (Car_BuyerRating / Max_Rating_For_Type_In_City) > 0.98)
 +                    Sold_At_Branch = Sold_At_Branch + 3
 +                else if( (Car_BuyerRating / Max_Rating_For_Type_In_City) > 0.8)
 +                    Sold_At_Branch = Sold_At_Branch + 2
 +                else
 +                    Sold_At_Branch = Sold_At_Branch + 1
 +            }
 +
 +        }
 +        
 +
 +        if(Collective_Age > 10)
 +        Sold_At_Branch = Sold_At_Branch / ((Collective_Age/6.0)+1)
 +
 +
 +        Sold_At_Branch = Sold_At_Branch / Quality_To_Price_Ratio
 +
 +        if(Car_BuyerRating/Sum_Of_BuyerRatings > 0.1)
 +        {
 +                if(Random number between 0 and 2 = 0)
 +                    Sold_At_Branch = Sold_At_Branch + 1
 +        }
 +
 +
 +        Sold_At_Branch = Sold_At_Branch * Top_Speed_Mod
 +
 +        Sold_At_Branch = Sold_At_Branch * overPriced
 +
 +        if(Hard_Difficulty_Sales_Mod > 0 AND Not_A_Player_Company)
 +                Sold_At_Branch = Sold_At_Branch * hardDifficultySalesMod
 +
 +        if(Sold_At_Branch <0)
 +                Sold_At_Branch = 0
 +        
 +        if(boycottPlayer)
 +            Sold_At_Branch = Sold_At_Branch * (0.75 + Random Number Between 0 and 0.10)
 +
 +        
 +
 +      
 +                   
 + }
 +}
 +</code>