Sales Algorithm

Once a game is reviewed, the game computes the sales it generates, and the revenue you get from it.

This decomposes itself in three phases:
 * 1) Estimating the market size
 * 2) Calculating total sales amount
 * 3) Breaking it down in subsequent weeks

Custom console
These calculations apply if you released a game for your own console

We define a "grid factor" f as : Then the market size for your console is (whichever is greater) S = 5 * (Sales earned from console sales / unit price of console) * f * 5 000 000 or S = 5 * initial amount of units sold (See Custom Hardware sales algorithm)
 * If you have researched GRID and your custom console is the strongest console on the market : f=1.05
 * Otherwise f=1

Stock console
These calculations apply if you released a game for a standard console

The "grid factor" f is defined as : Then the market size for your console is given, using the Raw Data for the corresponding console, if : S = ((j-h)*(g/k) + h) * f * 5 000 000 In simpler terms, plot the previous and the next market points, draw a line between them and read the value of the market size at your current date !
 * If you have researched GRID, PC is the strongest platform on the market and you released your game for PC : f = 1.05
 * Otherwise f = 1
 * j is the amount for the next market point in the table
 * h is the amount for the previous market point in the table
 * g is the number of weeks since the previous market point
 * k is the number of weeks between the previous and the next marker points

Primary expression
Let m be the adapted market size modifier from Raw Data, and S the market size as defined previously

M = S*m is the useful market size

R your review score for the game

P the Platform/Audience value defined in Raw Data for Review Algorithm

Before the computations begin, if you are using the torrented version of the game, or any version that has the G782 modifier set to true, past year 12 there is a 75 % chance that your score becomes R = 1 regardless of what it was before

We define a L modifier as follows : Then we have U the first market reach : U = (2 / 1000) * R³ U = R³ / (100 - 35(R-9)) then U' is the actual market reach : U' = ((2 / 150) * L * U + 0.008) * P
 * If R ≥ 9 and you are in the 4th office : L = 1.25
 * If R ≥ 9 and you are not in the 4th office yet : L = 1
 * If R < 9 and the date is before year 6 : L = 0.65
 * If R < 9, you are past year 6 and in the 4th office : L = 0.35
 * If R < 9, you are past year 6 but not in the 4th office yet : L = 0.5
 * If R ≤ 9
 * If R > 9

and K = M * U' the amount of copies sold (rounded down to have an integer value)

Hype factor
The hype factor h is defined from H the number of hype points gathered at the time of release : h = H/500, and h is then capped to 1. K is then modified to reflect hype effects : {0.05 * M * h * ((R - 5) / 5)} {0.25 * M * h * U * (R/5)} At this point, K is capped to M, which means that you cannot sell more copies of the game than the number of consoles in the world :)
 * If R >= 5 : K is increased by : ({A} means A rounded down to the previous integer)
 * If R <= 5 : K is decreased by : ({A} means A rounded down to the previous integer)

Publisher & Fans influence
Fan targets are in the Raw Data
 * If the game is published through an exterior publisher, and you have fewer fans than the fan target : K is increased by (Fan target - Actual fans) * (R / 10)
 * If the game is self-published K is increased by (fans * (R / 10))

Fan increase
[A <-> B] means a random number between A and B Your "fan increase" amount F is then updated :
 * If R >= 7 and the game is either not a sequel or a sequel to a game that is more than 40 weeks old : F is increased by [5% <-> 10%] (of your current number of fans) This adds to the following bonus for R >=5 if it applies


 * If R >= 5, the game is either not a sequel or a sequel to a game that is more than 40 weeks old, and it is published by an exterior publisher :
 * If you have more fans than the Fan Target for your size of game : F is increased by 0.005 * M * (R / 10 + [0 <-> 0.1])
 * If you have less fans than the Fan Target : F is increased by 0.005 * M * (R / 10 + [0 <-> 1])
 * If R <= 5 or the game is a sequel to a recent (< 40 weeks) game : F is set to  [-0.25 * (# of fans) * (1 - R/10) <-> 0]

Final amounts
Final amount of sold copies : ([A <-> B] means "a random number between A and B") J = 0.8 * K * (R/10) + [0 <-> (0.2 * K)] Then if the game is an AAA MMO, J is multiplied by 1.45,

If P is the unit price of the game as defined in Raw Data, the total revenue generated by the game will be approximately (because there is a random factor in the weekly sales) : C = J * P

Weekly breakdown
The C value defined previously is then distributed over the course of several weeks, and the game is taken off the market when its total revenue is greater than C.

Note : C can be modified by exterior factors (namely conventions) before the end of sales, which means that sales numbers are not entirely determined at release

Every week, the game applies the calculations from the previous week, then computes the sales numbers for the following week. S is the total income gathered for the game so far

Achievement modifier

 * There is some sort of modifier that is related to whether you have sold over some fixed amounts of copies. It matters only if you are not selling an MMO, and you are self-published.

Sales Anomaly

 * First, the game checks whether your game passed a threshold the previous week. Those thresholds are listed in Raw Data. There is an exception though : once one of your games passed 100K, none of the ≤100K thresholds are taken into account anymore. Only the highest achieved value that week counts.
 * If you have topped one of those values, let e be the corresponding value in the table,

Amod = e/(#number of sales anomalies for that game)


 * and go to Modifier Calculation

Top Scores

 * If your game had a review score counted as top score(see Review Algorithm) and you are in the 1st, 2nd or 3rd week of sales, then the Amod value is the one from the list in Raw Data.


 * Else, if you are before the 8th week of sales, and one of the following conditions is verified :


 * You had less than the following number of sales anomalies in the previous weeks :
 * Your score is 10
 * You have already had this (since "Else") bonus before
 * Then

Amod = 0
 * Note : this value is very strange, I have an empty function where it should be calculated 

Modifier Calculation

 * Finally, the modifier is

A = Amod * 0.3 * C
 * Rounded to the previous integer

Raw Income

 * The efficiency factor e can be found in Raw Data

For MMOs
I = [0.05 <-> 0.1] * e * (C - S)
 * If I ≥ 100K, C is increased by I/2
 * If I < 100K, C is increased by I/2 + 100K, then I is set to 100K.

Final Weekly income and Fan gain

 * Fan modification for the following week is, with F the total fan increase calculated in the previous part : F* I / C


 * Total income for the following week is :


 * I is the raw income
 * A is the Achievement modifier
 * R is your royalty rate (R=1 (100%) if self-published)

I' = (I + A/2) * R
 * If I' = 0 then the game is taken off the market

Maintenance calculations (only if MMO)
M = (I' + S)/100 + I' / (L³ + 3)
 * Same notations as previous paragraph
 * L is the number of weeks since release of the MMO (expansions do not reset the value)