Category Archives: production line

Although obviously a tycoon/sim game like Production Line *does* need some fancy graphics, a decent overall design idea (‘Run your own car factory!) and a fair amount of content, in the long term, to get players to really put in the hours, the quality of the game can come down to two basic things:

  1. Is the simulation nicely balanced to provide an ongoing challenge
  2. Does the player easily have simple, clear access to all the information they need?

These are the things that I struggle with, because I know how vital they are, and yet other than measuring the games retention, they are very very hard to measure to see if you are making improvements on a day to day basis. I can easily add another car body or some more achievements or some more maps, and quantify the change, but if I redesign one of the stats screen, do I *know* that made things better?

So this results in a lot of chin-stroking and thinking, and reading books on user interface design, and of course a lot of playing the game. The screen that I have recently agonized over is this one:

Thats actually the ‘simplified version, that takes it for granted you can tell what those little $ symbols mean (price range) and recognize the car body styles enough to tell sedan from compact, from SUV etc. That frees us some space so its not impossibly text heavy, but frankly its still a mess. The red areas are ones where we are not currently selling a car to that segment, and each block is a combination of a car body style and a price bracket. All the data in each block is self explanatory (I hope), but although all the *data* is there, being able to rapidly draw conclusions from it is really hard. I guess the spread of green to red gives you a very rough approximation of how much of the market you have ‘covered’, but is that really accurate given that compacts and sedans vastly outsell offroad vehicles, and in this layout, all car body styles have equal prominence?

This is my current attempt at a solution:

This ‘pie chart within a pie chart’ shows the breakdown of total customers visits to your store (not the wider market, which is accessed through more marketing…) and shows the extent to which you produced enough cars to satisfy all those customers in each price bracket. The different body styles have been assigned colors, and those colors are split into light/dark gradients to show the four price brackets within each body style. To ensure that is apparent, icons at the edges of each segment show the price range symbols for that segment. Because the segments are correctly sized for the number of customers, its much easier to see where the majority of the market is, and no longer do you confuse the relative sizes of the off-road and sedan market (for example). It also makes it clearer that in general the expensive and luxury markets are smaller than the others. Unresearched body styles are greyed out entirely.

Here is an example with all body styles researched:

The inner chunks that are more darkly coloured are used to show the percentage of that market segment you have produced cars for. So if you get 8 customers per hour for a certain body style / p[rice combo, and you produce 4 cars of that type (of whatever designs), then that segment will be drawn ‘half full’.

So far that sounds good, but there are three problems I am yet to resolve.

  1. When you produce too many cars (produce 9 when there are only 8 customers) that information is not shown.
  2. This shows car production but not sales. maybe I produce a car for each customer, but they are too expensive to sell to them?
  3. The player may confuse the relative shaded AREA rather than the radius of the inner chunk as being the relevant metric.

Almost all of this is clarified by the mouseover tooltip which explains everything, but thats a clunky fix. I’m thinking of adding an extra red ‘bleed’ segment at the circumference to illustrate any cases where there is overproduction. I’m also considering having selectable buttons at the top to toggle between this chart showing production and then sales, as they are obviously different stats.

Still… I think its certainly a helpful addition. If you want to see the current version of this chart in action, I just uploaded a new blog video with it in today:

 

Yeah I know its not long anyway…but its 2018 and on a CPU this speed, why is it not virtually instant?

I just multithreaded the steam app_init so that stuff is effectively ‘free’ now, and its time to see where the rest of the startup time is going. My current measurements from AQTime:

Drilling into this it looks like the easy wins will be inside the Main Menu constructor, as the init3d stuff probably cannot be multithreaded, and involves a lot of disk-bound stuff while I load textures, which is really tough to speed up (I could turn on my pak file code, but I’ll probably only do that just before final release).

Sadly almost all of the main menu constructor code looks like its the loading in of a big png file for my menu background. This is a 2560×1440 png file that is 7.5MB on disk. This is big, but I load in WAY more graphics than that when I do the pre-load textures on all the cars, which are in dds format. I’ll experiment with shifting it to a DDS file. This *should* be way faster, as a png has to be converted whereas a DDS file effectively *is* in the memory format used internally by directx, so its just a straight dump into memory…

That *dopes* actually drop it down to 17.2% (from 21.73%). I suspect there is a further optimisation in that this is currently not a power of two texture, so changing it to be one (as a test) yields…

OMG. its now 1.54%. Resizing that texture seems to take insane amounts of time, and this change knocks 0.5 seconds off my startup time. The next candidate is my sound engine. Multithreading its startup code completely takes it out of the picture too.

MainMenu initialise goes from 116ms to 4ms just by converting a non pow-2 png to a pow2 dds file, and now things look like this:

Total startup time has shrunk from 2.5 seconds to 1.9 seconds. Nothing anybody will consciously notice, but it makes me happier :D. Plus I *do* think that subconsciously people do feel the difference. Snappy start-up times are great for games when you want to have a quick blast, and the perceived responsiveness is bound to make people feel happier about their experience with the game. Plus it means less CPU draw and less battery drain on laptops.

This is for my car factory simulation game Production Line, currently in early access.

 

 

 

There are no comments yet

I now have a new shader in Production Line that gives a pure-metal chrome-style effect to cars in the game. Here is a car in the factory:

And here is one in the car design screen:

I like the look of these cars, and definitely will be including this in the game. Because the shader is different, it cannot combine with the ‘polished paintwork’ feature (or rather… the feature has no further visual effect), and for various reasons it simplifies things if this becomes an all-or-nothing option (so you can have a car model entirely in chrome, but not red or yellow or chrome at random). I am currently musing on the best way to slot this into the game./

Right now we have car colors as a purely aesthetic choice. they make no impact on the car price or attractiveness, or the time to paint, or anything like that. In practice, car colors can be set per-model (if the player chooses to), in order to make it clearer which are which on the production line. This is very helpful. Because I like this feature, I don’t think I want to start introducing different prices or demands for colors.

The only exception to this system is ‘polished paintwork’, which sticks the car through an extra slot, makes the car more attractive to buyers, and also changes the rendering effect so the cars paint looks much brighter, which is pretty cool.  To add to everyone’s confusion, I also have a mechanic where certain car colors are LOCKED and unselect-able until the relevant achievement is beaten and unlocked, which I thought was a nice way to incentivise aiming to beat the achievements in the game.

So now I suddenly have a new thing: Chrome color! How best to incorporate this into the game? I can see a number of options:

1) Leave it as shown above. it has a special button which enables Chrome, and selecting any other color will disable it. Selecting chrome means all other colors get removed, and now your car is chrome. Yay! Simple(ish) to understand surely?

2) Make chrome paint a feature, that has to be researched (yay! more design research!) in the design studio. Its then something that gets selected like ‘Polished Paintwork’ (probably make a new paint category for this), and can be a premium feature. I could have a new upgrade for the paint shops that does this, making those cars take longer.

3) Make it just another color (like 1) but also require an achievement to unlock it anyway. We already have a UI to show color options as locked/unlocked so I can re-use that.

As I type this out I am aware that I am leaning towards 2). I want more reasons to keep the design studios around, and to be honest this would be a good point to move that ‘polished paintwork’ stuff into the design studio anyway? I can see a new design category on the design screen like I have for wheels, and power-train, that has ‘Standard paint / Polished paint / chrome’ as 3 different options. This keeps things working within existing game mechanics and should be easy to understand right?

I’m still recovering from showing the game at EGX. It was fun, and beneficial but also pretty hard on my elderly aching feet…

There are no comments yet

Hi all. This is a reminder that on Thursday-Sunday this week, Positech Games will be at the EGX games show in Birmingham, England. I will only be there Friday-Sunday, but the booth will be manned by suitable experts :D Come say hi!

Youtubers most welcome, I am always happy to give thrilling interviews for anybodies channel. I even have a silly hat to wear while I do it.

We will have a nice happy booth with 2 PCs running the latest build of Production Line, comfy leather cube seating, a whole pile of leaflets, stickers and badges, maybe some silly little toy robots to decorate it with. Come tell me all the design decisions I have made wrong. Oh and obviously if you are from the games media, email me at cliff AT positech dot co dot uk if you want to arrange a specific time and place for an interview. We love that sort of thing.

If I look grumpy, have sympathy. Its not my natural environment. I’m more scared of you than you are of me :D

 

There are no comments yet