Game Design, Programming and running a one-man games business…

Production Line updated to 1.61 on the steam ‘unstable’ build

Lots of cool stuff in this update to Production Line, which will get further checks, tweaks and balancing before I roll it out to the main Early Access steam branch, GoG and Humble widget customers. Here is a list of all the features, and notes on the biggies:

[version 1.61]
1) [Feature] Loans can now be re-paid early, assuming you have the funds, at a penalty of 12 hours interest.

This was widely requested, and I kept putting it off because I felt that it would lead to an unbalancing in the games difficulty, but actually now I’ve tested it for a while I think I’ve got it about right and am glad its in there.

2) [GFX] Conveyors use less obtrusive graphics
3) [GUI] New screen for market analysis to show breakdown of demand, production and sales.

I find this new screen really helpful when playing the game towards the later stages when there is a lot to keep an eye on. I worry its not immediately obvious how it works, but I do think its a usability improvement for managing supply and demand.

4) [Content] New researchable upgrade & feature: large touchscreen.

To make it obvious some cars are tesla-level expensive, and some are more Ford Ka level… :D

5) [GUI] Vehicle design screen now hides categories entirely if there is only a single default option.
6) [Bug] Fixed design research queue bugs where you could adjust first and last items up and down, causing a crash.
7) [Bug] Fixed bug where the second-nearest import bay for each stockpile was sometimes calculated wrong, meaning inefficient routing. Also major route calculation speedup.
8) [Balance] Major increases in the cost and value of electric car batteries (large and small) and touchscreens.
9) [Balance] Increased the power draw and process time for making wheels.
10) [Content] New researchable feature: parking sensors. Now a pre-requisite before reversing camera. Fitted at bumpers.

Amazing we went so far without these, as they are getting so common now. Also handy to be able to add a new feature without requiring yet another resource as ‘sensor’ is already in there. Plus it gives some much needed upgrades to the bumper slots.

11) [GUI] Revamp of the ‘apply options’ screen post-research, which adds price category indicators and selective coloring, and new buttons to apply a feature to a whole category at once.

This makes things much quicker when you have 20+ designs, and you don’t really want to make a more nuanced decision other than ‘add this new widget to my expensive ranges’.

12) [GUI] Music and cruise control are now feature-categories, where the more expensive versions include the resources, value and features of the cheaper ones.
13) [Content] Self-driving! new researchable tech, new resources and feature category for high-end cars.

This is very late-game stuff and requires quite a bit of research, but then you should have expended your factory enough to have a good dozen or two dozen research facilities at this point.

14) [Balance] Boosted the impact on marketing campaigns on showroom visits by 25% to increase total market size possible with current campaigns.
15) [Bug] Fixed bug where sometimes the warning on the design screen about common or universal features missing would be skipped if the feature had a category.
16) [Bug] Fixed bug where changing the color of a car design could lead to duplicating the price slider GUI.
17) [Bug] Fixed bug where the correct price-category adjusted market value of a feature was not being displayed in a number of places.
18) [GUI] Double clicking a car in the showroom now launches the vehicle design screen for that car’s design.
19) [Content] New researchable vehicle body style -> The small van.

I’m so pleased we got this in. Its likely the last new body style,  and its a really cool one :D

Feedback on this new update is very welcome, and of course any bug reports for things I have no doubt stupidly managed to break with this patch…

 

Improving the charts in 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:

 

Chrome paint effect: Production Line

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…

Maintenance & breakdowns in Production Line

For a long while I have talked-the-talk about putting slot breakdowns into Production Line, but recently I’ve actually been doing the code, and I now have a working implementation in the game, ready for imminent release to the unstable build on steam, and eventually the full early-access alpha build. The implementation is fairly simple to describe. basically slots break down for a random duration between X and Y, and you can research and then place down maintenance facilities that vastly reduce that repair duration so that the line is stopped for a shorter period.  The maintenance facilities UI has two different circles that illustrate the two levels at which they can reduce repair times.
Thats all very simple, but coding it was harder than it sounds, combined with the fact that it needed some tutorial pop-ups, and it needed a GUI that looked nice and was also clear and usable. All of that is done, and I’m happy with it, so all it comes down to now is a simple case of getting the numbers right. In a game like Production Line, the numbers you set for items are basically the WHOLE game, in terms of long term playability. I can wreck the game immediately by getting these numbers wrong, or less drastically, I can make this new feature and all the work that went into it irrelevant if the numbers are wrong in the opposite direction In an ideal world, the breakdowns introduce just the right amount of complexity, and light-frustration which keeps the game interesting and something that demands the players attention, while the maintenance facilities provide just the right solution, which should come at a price, and with interesting trade-offs. To put it another way: If the breakdowns are no big deal, the maintenance is irrelevant. If they cause mayhem despite maintenance, they make the game worse. Meanwhile if maintenance is too cheap and easy to place, its irrelevant as a decision. Too expensive or difficult and its going to be annoying.
There is no real easy way to pick these numbers, they just have to be experimented with. Right mow, the chance of any slot breaking down after completing a task is 1 in 200. The time it takes (in seconds at 1x speed) to fix them is between  24 and 48 seconds. That time is reduced by either 37.5% or 75% depending how close the nearest maintenance slot is. The slot itself costs $98,800 to place, and requires 8 engineers which cost slightly more per hour than a scientist (researcher). Power draw for the slot is equivalent to most other manufacturing slots, and its footprint is 4×4. All of those numbers MIGHT be wrong. Maybe the slot is too cheap, maybe we need more (or less) engineers to adjust the ongoing cost of maintenance? Perhaps the breakdowns are too frequent and annoying? or maybe so rare, and so cheaply fixed by spamming maintenance that the mechanic becomes irrelevant? Hopefully none of the above! and I also think that the fact that maintenance requires research, and has an area-of-effect mechanic will add new interest to factory layouts, both in preventing sprawl (which works against the mechanic) and also ensuring the expert player leaves regular areas for future maintenance facilities that they cannot yet afford, or have not researched. Expect to see this in the next update for the game, and I hope people agree it makes things a bit more realistic and interesting.

Equipment breakdowns in Production Line

Something that I have always wanted to have in Production Line (and which is popular with the players as an option) is the idea of equipment breakdown and reliability. If you have played the game already you will know that having a sudden ‘stop’ in the line is incredibly disruptive to output, and thus profits, so introducing the risk of breakdown would make for an interesting game mechanic. With this in mind, I’m starting to think about implementation.

So to start with, what are my design goals for this new feature in the game? I see them as these:

  • Add a new random event to shake up late gameplay.
  • Add a new research tree option or options to improve reliability
  • Add a new consideration regarding factory design and layout.

Right now, there is a slight problem in that, until world events get coded, the late game is one where you can simply leave your factory to run endlessly at a profit. In some ways, this doesn’t matter, as factorio has proven, the real goal is building fun and efficient layouts, not just achieving a set goal. However, it would be nice to have something that interrupts this otherwise fairly predictable process, so having a key production slot break down would be an interesting way to do this.

New research options are always fun, but I’m not sure which way to go regarding the reliability and repair stuff. On the one hand, I could offer slot-level upgrades which allow the player to (at a cost) buy more expensive robots and parts to reduce the chance of that slot breaking down. On the other hand I could introduce a global factory wide system of researchable upgrades which boosted the reliability of the entire factory? The second option is perhaps a little unbalanced because in the real world, such research would lead to systems whose cost scaled up with the factory size. I already have some upgrades that are ‘one-shot-regardless-of-factory’ like conveyor speeds, and in retrospect, these seem perhaps a little too generous. I should probably avoid expanding that.

 

 

So that would leave me with perhaps the idea of a series of ‘reliability’ upgrades for every slot in the game. Maybe ‘Enhanced maintenance’ ‘Error monitoring system’ etc, which when purchased at a slot would progressively reduce the chance of a breakdown. This might make for interesting decisions because for example if a single paint-dryer in a line breaks down, thats no big deal, so you could avoid paying for that upgrade, but if there is a single point of failure thats critical to the whole line… maybe it would be worth it.

This all leads into my final goal and would make it more sensible to plan for multiple lines, or at least partial lines, as a hedge against single line failure. I sometimes design my factories with parallel lines with cross points, which would allow production to route around broken down slots just like the internet routes around failures.

So given that I want there to be breakdowns, and researchable techs that reduce (but never 100% eliminate) them, how should the actual mechanics of a breakdown take place? The simplest and cleanest implementation that occurs to me at the moment is to give each slot a chance of a breakdown per minute of game-time.  If we assume each slot has a 99.5% uptime, then we are talking about a breakdown of ten minutes every 33 hours.  Very large factories could have maybe 200 slots, which would mean one of them was always broken and in need of repair. That sounds reasonable? (alternatively I could tie breakdown chance to time spent actually running…which makes more sense).

This allows for two different upgrade paths in terms of dealing with reliability. We can have research that decreases the chance of a breakdown, and research that decreases the duration of a breakdown. It would be interesting to have the chance upgrades be a per-slot thing (I’m thinking better engineered robots, better designed processes at the slot…) and the duration upgrades being global (maybe a better trained maintenance team to attend to the breakdowns?).

 

 

In terms of GUI, I’m thinking a new slot status notice (like we currently have for ‘no export room’ or ‘not connected to resources’ ) saying “breakdown!” and possibly a timer next to it (more realistically a circular progress count down thing?) showing how long it will be out of action until the breakdown is fixed. So with that in mind, here is my first-pass thoughts about how to implement breakdowns and reliability into the game, as a todo list for me:

  • Add a base chance for any slot to breakdown and make this trigger a breakdown of some random duration range (say 7-15 minutes?)
  • Add a new global variable for ‘breakdown repair efficiency’ which can be changed by global research items.
  • Add new researchable technologies to reduce the duration of breakdowns.
  • Add new upgrades for each slot that reduce the likelihood of a breakdown.
  • Add new researchable technologies that enable the purchasing of those upgrades.
  • Implement a nice GUI to show breakdowns when zoomed in and when zoomed out.

There are of course a bunch of other options, such as adding a repair-cost that gets auto-deducted when a slot is being repaired (but what if that sends you bankrupt? surely needs to be optional…requiring more GUI…), or requiring new repair-shops to be placed down to ‘unlock’ certain upgrades (but then can you delete them after the upgrades are in effect?). The system as described relies on the player accepting that a ‘hidden’ global variable (breakdown duration and chance) really is changing, unless I add yet more GUI options to show this to the player.

As I type this I realize there could also be the possibility (maybe as a secondary feature to code), of slots ‘silently breaking’, in that every car they work on produces a defect…This would be a bit evil, but also pretty cool, as you would have to introduce regular QA to track down the cause :D)

My biggest fear, (as should always be the case with Early-Access) is that I could screw up and make the game *worse*. I don’t want to make the game unbearable at the start (where a single slot breakdown may be more critical), but then I don’t want to make the game too easy in the late game either. I could just *cheat* and not let slots break down at the start of the game, and actually more realistically, I could just give each slot the first 48 hours or so to be totally free of breakdowns (makes sense as they are new…). Ideally breakdowns become a serious concern, but not annoying, which is an incredibly thin line to walk.

I am as usual always interested in peoples thoughts on this as a new mechanic for the game.