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.

6 Responses to “Improving customer simulation in Production Line”

  1. Greg Baumbach says:

    These are good ideas, and would appear to make a decent move toward a more complex model. One thing I would possibly add is world events that impact the car business. Think about how the focus of car business changes depending on the price of fuel and the state of the economy. That tends to make econoboxes the hot item for a while, only to be replaced with SUVs and sports cars the next.

    You also see tastes change over time–so that perhaps certain body styles give way to others as they age. Example: station wagon to minivan to CUV/SUV.

    One other item is customer perception of the brand. Excellent video describing this can be found here (and it’s kind of amusing too): https://www.youtube.com/watch?v=d2ogGZXmepY

    • cliffski says:

      Brand perception is definitely something we will be adding to the game. the current marketing campaign is just awareness, but I will be adding a branding campaign that will allow you to charge higher prices, as well as model-specific campaigns.

  2. Sean G says:

    I definitely like the fuzzy price model, as well as the feature demands. I think it makes good sense that people would have specific features in mind. For instance, when I last bought a car (which was a while back) I wanted a manual transmission with cruise control. Those were must-have features for me. I don’t think that is too unusual (although probably most people would put premium sound or something on their list) and I like the idea to incentivize premium features.

    Your concern about model creep is legit – I remember how clunky it was back in 1.11 – but perhaps a redesigned model screen would ameliorate that. So rather than just a tab for each model, there could be a tab for each type, then sub-tabs for each model.

  3. Chris C says:

    I’ve never studied economics but I would like to propose what could be a more elegant model;

    1. Definitions of car categories are no longer automatically generated based off a feature list or price markup. Instead the player can choose to maker his almost featureless, cheap sedan as “luxury” if he so chooses.

    2. Every day there would be X number of people looking to buy each category of car globally (similar to what is happening now but the numbers are much larger, say 20x larger).

    3. Let’s say there are 200 people looking for a luxury sedan. They would have the option of choosing your one, or from any of your competitors (who are offering a car in that category) or decide not to buy a car at all. The distribution on the 200 people would be slightly randomised but based on how well the features fit their definition of “luxury sedan” as well as influenced by price.

    4. The player can choose to flood the market with cheap cars in order to put competitors out of business. New competitors will join the scene over time.

  4. Steven W says:

    The part about a customer wanting a Sedan, but might buy something else – could a set of basic properties on vehicle types be used to all a degree of variation in what alternative type they might go for?

    If types have properties such as Num Seats, Luggage space, excitement and Prestige, then a sedan buyer who favours prestige may be tempted to go for a luxury sports car or SUV, while one that favours Num Seats may rule out the sports car (he has kids, so 2 seats aren’t enough).

    Some of the properties could even be modified based on the features added to the car (possible that options that make a car heavier would make a sports car less exciting, but increase the luxury)

  5. Nice post. That tends to make econoboxes the hot item for a while, only to be replaced with SUVs and sports cars the next. This is so great and I absolutely appreciate you sharing your experience.