(This is going to be extremely long. Anyone who reads the whole thing: thank you for your patience and interest!)
I did the Hoon Competition with the idea of (a) testing the simple sliding-scale desirability system my economist friend and I came up with and (b) getting my feet wet on the running-a-forum-competition side of things. What with the new update adding engineering times, engineering costs, and tooling costs, it’s looking like a good time to start planning the competition that I really wanted to do: a full Car Tycoon Challenge, in the spirit of yore, with multiple market demographics, limited production runs, and everything.
(The scary thing is, the following isn’t even the full complexity of what I want to do - this is all based on the principle that every customer will buy the best car for them, but starry-eyed as I am about what I hope to eventually do, I’m still trying to climb the stairs only three or four steps at a time.)
Here’s my thinking so far.
[size=150]Build Rules[/size]
[ul]]Each player/team entering is allowed to submit one or two cars. If they submit two cars, they can be different models or different trims of a single model, and they can be powered by different engine families or different variants of one engine family [edit 2015-12-05: or the same variant, even]./:m]
]Each model and each engine family will have an Engineering Time limit. If you have one trim/variant on a model/family, that trim/variant can use up to the entire limit. If you have two trims/variants, then (pending the eventual in-game calculations of shared costs) total Engineering Time, Engineering Costs, and (at least for engines) Tooling Costs will each be taken as the larger value among the two trims/variants plus half the smaller./:m]
]As in the Hoon Competition, I will have fuel type and Safety requirements based on the in-game markets. (This time it will probably be Gasmea, the default.)/:m]
]I’ll probably drop the restrictions on intake, headers, catalytic converter, and mufflers - at most, I’ll have a noise-limit restriction. Naturally, reliability > 0 will still be a requirement./:m]
]Players will choose factory size and % cost markup in-game for each trim. (Is factory size by trim or by model? I’ll need to figure that out before I start the competition.) Factory size will determine maximum number of cars built. (For this competition, I’m assuming cars built = cars sold, but like I said above, I Have Plans.)/:m][/ul]
[size=150]Desirability Calculations[/size]
[ul]]The basic formula for desirability within each demographic will follow the same structure as desirability the Hoon Competition - positive dollars for each of the available categories, negative dollars for running costs and some fraction of sticker price. (It might be 15%, same as the Hoon Competition, or it might vary by market demo - haven’t decided.)/:m]
]…with one change: the fuel costs will have a multiplier based on demographic. (Commuter cars are probably driven a lot more miles than Track cars.)/:m]
]The positively-scored statistics will be the five basic stats plus four others:
[list]]Drivability/:m]
]Sportiness/:m]
]Comfort/:m]
]Prestige/:m]
]Safety/:m]
]Practicality/:m]
]Utility/:m]
]Offroad/:m]
]Reliability/:m][/ul]
…and the weights on these categories for each demographic will probably be shown in spider/radar charts like this (numbers in thousands of $):
(colors will change to match the default forum style and visual design will be generally improved before the competition.)/:m]
]Each demo will also have a definited statistical budget distribution. (Probably lognormal.) Customers will only buy cars within their budgets, as you’ll see later./:m]
]Number of market demographics is going to be kept low, and each demo is going to be clearly distinct from each other. (This is part of my long-term plan.) I’ll probably talk about the seven demos I’ve come up with so far in a later post. (I may also provide a spreadsheet with all these numbers and spaces for minimum-maximum scores in each category - set to default values based on my predicted ranges - for players to use for planning purposes.)/:m][/list:u]
[size=150]Sales Calculations[/size]
The size of the market will scale with the number of entries. Probably something along the lines of x million + y million per entrant, with an appropriate cap on the number of entrants. (As you can see, calculations get very cumbersome the more cars there are.)
(The following is the really complicated part.)
The calculation of sales is based on repeated application of a basic formula for distributing sales between various available cars (and the $0-cost, $0-desirability “I’m not buying a car” option), based on the idea of a normally-distributed variation in desire that I’m calling Idiosyncrasy.
[ul]]The highest desirability car available gets a sales score of 1./:m]
*]Each other car will get a sales score based on phi, the normal-distribution CDF, equal to
/ this - best \
2 * phi( -------------- )
\ idiosyncrasy /
This is proportional the probability that a customer’s random preferences over things like styling, brand, nation of origin, and the like will lead them to value this specific car over the stats-based favorite. (Note that this formula gives 1 for the highest desirability car.)
For example: if idiosyncrasy = $1000 in a demo, there are three cars in the demo, and they have values $5000, $4000, and $3000, then the sales scores work out to 1, 2 * 0.1587 = 0.3174, and 2 * 0.0228 = 0.0456, respectively./*:m]
]When sales are distributed, they are distributed proportionally to sales scores. (In the above example: 73.4%, 23.3%, and 3.3%, respectively.) (Note that if two cars were tied, they would split sales exactly evenly.)/:m][/ul]
After entries to the competition are closed, the cars will be sorted by price, from most to least expensive. This done, a table will created for each demographic, with rows for each car containing:
[ol]]Car ID/:m]
]Price/:m]
]Fraction of customers in demographic who can afford this car, but not the next most expensive/:m]
]Desirability for this car/:m]
]Sales scores as above for this car and every car below it on the list/:m]
]Sales scores, renormalized to sum to the fraction in (c)./:m][/ol]
The renormalized sales scores can then be summed in columns to calculate what fraction of the market demographic was sold to each car.
Example (somewhat truncated):
[code]idiosyncrasy = $1000
ID || Frac Desirab | A B C 0 | A B C 0
—||--------------|-------------------------------|--------------------------------
A || 0.5 $5000 | 1.0000 0.0456 0.3174 0.0000 | 0.3668 0.0167 0.1164 0.0000
B || 0.2 $3000 | 0.0000 0.3174 1.0000 0.0004 | 0.0000 0.0482 0.1518 0.0000
C || 0.2 $4000 | 0.0000 0.0000 1.0000 0.0004 | 0.0000 0.0000 0.1999 0.0001
0 || 0.1 $0 | 0.0000 0.0000 0.0000 1.0000 | 0.0000 0.0000 0.0000 0.1000
—||--------------|-------------------------------|--------------------------------
0.3668 0.0649 0.4681 0.1001[/code]
(As you can see, being affordable to 90% of customers nets C more sales than A, even though A is the better car, and being inferior to a cheaper car costs B dearly.)
These fractions are calculated for every demographic and, when multiplied by the total number of customers in each demographic, give the number of cars of each model sold.
Unless, of course, one or more cars sell out their entire production run. If this happens…
sighs
…when this happens, I will find what fraction of the total number of customers were served before that car ran out, record sales for that number of customers, and start a new sheet on the spreadsheet without the sold-out car and with all remaining customers.
If, in the example above, C above sold out, the new spreadsheet would look like:
[code]idiosyncrasy = $1000
ID || Frac Desirab | A B 0 | A B 0
—||--------------|-----------------------|------------------------
A || 0.5 $5000 | 1.0000 0.0456 0.0000 | 0.4782 0.0218 0.0000
B || 0.2 $3000 | 0.0000 1.0000 0.0026 | 0.0000 0.1995 0.0005
0 || 0.3 $0 | 0.0000 0.0000 1.0000 | 0.0000 0.0000 0.3000
—||--------------|-----------------------|------------------------
0.4782 0.2213 0.3005[/code]
(As you can see, the 0.2 fraction from C devolved to 0, the row below it. Also, B managed to pick up more of the sales from C thanks to being cheaper than A.)
Naturally, this whole process repeats for each car that sells out its entire run.
[size=150]In sum:[/size]
[ul]]Players enter one or two cars./:m]
]Cars go into a table which converts stats into desirability scores in each demographic./:m]
]Cars go into tables for each demographic, sorting out sales by price bracket./:m]
]As cars sell out their entire production, customers shift attention to the remaining options on the market./:m][/ul]
…and at the end, all the sales numbers can be posted with how much of their seed capital each car recouped in profits.
So, yeah. That’s my plan. Thoughts, suggestions, criticisms?