The current system for customer simulation in Production Line is a bit too simple.

There are 4 bands of pricing, and multiple car body styles. Every customer, when created is assigned a price band and body style. They then show up at the showroom and see what is available. For each car that matches exactly their price range and body style, they rate that car based on their chance of buying it at the given price. There is a graphed slope based on the equation y = 1-(x^2) that gives the probability of buying a car, plotted against the relative premium that is being charged on it (or discount, obviously). This enables them to then pick a ‘best’ car (the one with the highest score).

That score is then the probability of the customer buying the car, which they then may or may not do based on a random number generator.

The positives to this system are:

Overpriced cars take longer to sell, under-priced cars sell easier.

There is a clear market segment for each body style.

There is a clear market segment for each price band.

These are all good things. However, it has problems:

As body style options increase, it seems unrealistic. Is there nobody who shops for an SUV who ends up with a sedan etc?

Price bands are fixed. This means that there is no difference in pricing at the low or high end of the price band, as long as the markup is the same.

The customer only really has a ‘chance’ of buying one car, the best one. Surely a wide range should result in a higher chance of a sale?

The customer seemingly has no opinions on features. The presence or not of a sunroof, for example never swings (or loses) a sale, the player can always afford it, if its in their price-range.

So here I’m thinking of ways to improve on this.

Firstly I can change customers so they have a price point, and some fuzz. So rather than be looking at all cars from 0 -$15,000 (budget), they can have a price point of $14,000 +/- 20%, and thus evaluate any car from $11,200 to $16,800. This means we suddenly have an incentive to make some ‘low end’ budget cars (with some missing features) and some ‘high-end’ budget cars, with m,ore features, effectively catering to more tastes, and dissuading the player from just feature-cramming every model. On the downside, this also makes the list of designs maybe quite big… This would give me cool customer feedback about being too pricey, or lacking in features depending how things go.

Secondly I should have some fuzz around body styles. maybe a customer wants a sedan, but only applies a 20% negative modifier to a car of a different style. After all, if all the sedans are overpriced and crap but the sports car is surprisingly cheap and awesome, shouldn’t there be a chance of a sale?

Thirdly, maybe features should come into it. How about assigning a ‘must-have’ feature to each customer (thats common or universal at that price point), and they refuse to buy any car that does not have that feature? This would allow me to store some pretty fun customer feedback on the car ‘doesn’t have electric windows’ for example…

Fourthly, the wide range should come into it. Maybe the player should be able to consider up to five different cars (discounting ones with similar options), and run the random check against them all. This rewards the player for having a wide range, even within a single price band and body style.

That involves a bit of code, but as always with big sim games, the code is trivial (when you have coded a lot), its the design, the balance, the GUI and the making the code run super-fast (so having 100 customers how up and evaluate all this is not a frame-skipping event) that will take all the time. I’d like to know what people think, and if any of this sounds like the wrong direction before I start coding it. Obviously numbers given are easy for me to tweak, its just the pricing and sales mechanics I want to improve upon.