Planning my first Car Tycoon Challenge

(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?

I moved the thread to Community Challenges & Competitions

The only problem I see with this is that you will hate your life if “too many” people join in. :stuck_out_tongue:

@T16: Thanks! I didn’t know if it was right to put something that’s not a competition yet in the folder - I will try to file my threads correctly in the future. :slight_smile:

@Killrob: Thanks for the vote of confidence! :smiley:

In the worst case scenario (i.e. many cars selling most or all of their production runs in the first 50% of sales), I’ll say “screw it”, crack open Matlab, and do it right. :geek: Hopefully I’ll be all right - Der Bayer’s last CTC had 46 cars and only 3 sold out their entire production runs by my count. I might cap the number of entrants at 25.

Okay, in my test build, when I changed the factory size for one trim, it changed the factory size for the other. That makes sense.

In that case, my rule will be that the max production figures given are max production of that trim, and total production out of the factory is split between trims. So if you can build 600/mo of A or 500/mo of B, you can build 300/mo of A plus 250/mo of B, 240/mo of A plus 300/mo of B, 60/mo of A plus 450/mo of B, or whatever fractions of A and B so long as the fractions add up to 100%.

That will make my job a little harder (my spreadsheet will have to track models selling out, not trims), but I like it, so that’s what I’ll do.

Daunting task for you, but sounds very intriguing.

[quote]
(The following is the really complicated part.)[/quote]

i stopped reading for now. my head hurts. my english is failing me. i cant crunch all of that info at once.

okay i finished reading all of it (after reading twice or thrice). im gonna try to make it short

TL;DR
[ul]- make a car like any other competition/ or 2

  • but have engineering time limit
  • if 1 car, then 100% of the engineering time. if 2 car then, 100% of the larger value+(50%*the smaller value)
  • bigger factory= more cars produced= possibility of more sales = more tooling cost penalty
  • make compromise between stats and costs because better stats =/= better car sales
  • if you choose factory too small and run out of car= more sales for the next best car
    [/ul]
    correct me on this?

also sorry for my english.

[size=85]again. i miss having ‘spoiler’ feature on a forum[/size]

I think DerBayer did something very similar quite a while back.

@07CobaltGirl: Yeah, a little, but glad to hear it’s intriguing!

@koolkei: Pretty much correct. The one point I see is: a bigger factory doesn’t have a bigger engineering time penalty, though, just a bigger tooling-cost penalty. But it also has a reduction in manufacturing costs, which means a bigger margin on each car if you charge the same price. Other than that one thing, it’s a good summary.

@Zabhawkin: Indeed - Der Bayer’s Car Tycoon Challenges are the reason why I thought I could do one myself. The in-game calculations for engineering and manufacturing make things a lot easier for me, though.

well then. what’s the downside to having bigger factories?
edit: more question

you said up there you might allow team. what if a team/2 companies want to submit 3 cars?

1 for each of them for themselves, and the last one a reslut of the partnership.
how do you count the engineering time on that case? or is that even allowed?

Another confusion I have managed to unearth in myself: I seem to have been reading the per-day production numbers as per-month production numbers. That explains why they were so low. :laughing:

Bigger factory = bigger tooling costs. The larger the factory, the more cars you need to sell to break even.

[quote]you said up there you might allow team. what if a team/2 companies want to submit 3 cars?

1 for each of them for themselves, and the last one a reslut of the partnership.
how do you count the engineering time on that case? or is that even allowed?[/quote]

I’m still thinking about the engineering-time question, but at least for this contest, that kind of collaboration would not be allowed. Each player would only be allowed to enter once - either as a solo competitor or part of a team - and each entrant - solo or team - would only be allowed 2 cars.

In later competitions, I might let each person enter as a company but allow companies to collaborate - selling each other engines, for example - but that will have to wait for later.

He did but back then the game didn’t have market calculations, actually, his challenge helped the devds with the calculations. I helped with the testing.
Now that the game calculates everything it’s a lot easier, you “only” have to look at the market group scores and compare.

Using the in-game market groups is an option, but at least for this competition I’m planning to generate my own. I’ll probably base them on a sampling of the in-game market demos, but I like the theory behind my formula and want to run with it.

Okay, did more experimentation, learned more things.

[ul]]Engine tooling costs are not included in the trim tooling costs, but do scale with factory size./:m]
]The game does not remember factory sizes at all. It’s not stored in the trim or the model .lua files./:m]
]Tooling costs for both engines and trims increase faster than production numbers./:m][/ul]

What that means for the competition is just two things:
[ul]]Entrants must specify factory size with each model entered./:m]
]If the same engine is used in two different models, entrants must pay the full engine tooling costs for both models. If two variants of the engine are used on two trims of the same model, the greater-plus-half-the-lesser cost-sharing rule applies. If the same variant of the same family is used for both trims of a model, the tooling cost is only paid once, not 1.5x or 2x./:m][/ul]

So that’s significant progress. Next step: deciding on the market demographics.

Given my experience with the Hoon Competition, I think I’ll give entrants a template for their entries - something like:

[quote][size=150]Entry Format[/size]

Please copy+paste the following into your PM, fill in the blanks with your information, and attach all files.

[code]Company Name:
Nationality:

Vehicle #1 Name:

Factory #1 City:
Factory #1 Size:

Vehicle #2 Name:

Factory #2 City: (if same factory, leave blank)
Factory #2 Size: (if same factory, leave blank)

Notes:[/code]

Example:

: Packbat Auto Works (PAW)
Nationality: US

Vehicle #1 Name: Pteropus C

Factory #1 City: Baltimore, MD
Factory #1 Size: Large 1

Vehicle #2 Name: Jubatus E

Factory #2 City: Baltimore, MD
Factory #2 Size: Medium 1

Notes: Fittingly, given that Baltimore is a port, both cars are great big rocking boats.[/quote]

Okay - so I copied out all the stat weightings for Gasmea in today’s build (I don’t remember 204 or 205) into Excel and screwed around for a bit trying to pick out categories which are both (a) a wide variety and (b) fairly distinct from each other. My first tentative list:

Driv Spor Comf Pres Safe Util Prac Offr Reli Econ Offroad == -- == == - + == ++ + == Utility == -- == == == ++ + == + + Commut. + -- + - + -- + -- ++ ++ Family + -- + - ++ -- ++ -- + == City ++ -- - - == -- ++ -- == + Muscle -- + - ++ == -- == -- -- -- Track - ++ -- -- -- -- -- -- == -- Sport + + == - == -- -- -- -- -- Luxury == - ++ ++ ++ -- -- -- -- --
(note: no stats are negative - minus-signs just mean a stat is underweighted or unweighted.)

My thought is, by basing my stats at least somewhat on the in-game stats, I can make it easier for people to design to target demographics - the numbers won’t be exactly the same, but a car fine-tuned for Muscle is going to be better in Muscle than a car fine-tuned for City.

getting more complicated. and excited every update :slight_smile:

this might gonna be the very first challenge that accounts for tooling cost and engineering time and cost

Hmm, interesting - the engineering time limit puts a pretty hard cap on how expensive a car you can build. I’m still planning to use the budgets for the in-game demographics as a guide, but I’ll have to make things a little bit tighter at the high ends of the distribution to make those decisions meaningful.

Finally went through this. And it seems mostly solid, apart from a couple of things. Firstly, desirability/value being given in dollars is just wrong, it feels wrong, maybe make it a “adimentional” value. Secondly, how do you plan to input all of this data? By hand? Bayer had a lua reading algorithmm so the process was mostly automated, putting all of the values and planned calculations by hand would probably be a pain in the ass.

As I said, apart from these minor issues, the planned market modelling looks pretty straight forward and effective. Also, that gives a suggestion to the devs, why not make those charts as part of the market screen? It’s a lot better looking that the current list of percentages.

Re: desirability in dollars: I guess I can see how it is surprising, but it’s basically akin to the economics idea of consumer surplus: the customer paid $X when $Y is how much money they would have been indifferent about spending ($Y+1 and they just go without), and the difference is how good a deal they got. It’s a little less straightforward in this case because I wanted to measure the annual return on investment - basically, how much they might have spent to rent the car for a year - but the idea of measuring preferences in money is pretty standard.

Re: inputting the data: …I have a high tedium tolerance and a lot of free time. I’ll definitely come up with a better system for future competitions, but entering 30-50 cars over a couple weeks doesn’t seem daunting to me. I have a good workflow.

Re: data viz.: the in-game calculations have 10-14 numbers, and not always the same 10-14 numbers, and there’s not a lot of room - trying it isn’t a bad idea, but I don’t know that it’s feasible. Also, it was really convenient to me to have the real numbers. :wink: