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

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.

 

The unintuitive GUI

There are a lot of games on steam.  Those games are also cheap, PLUS steam has a refund policy. As a result, gamers don’t have to be patient. To be blunt…if gamers get confused or frustrated playing my game(s), they can refund them, or forget about them, and play something else. This is so different from when I was a kid, games were EXPENSIVE, there were far fewer of them, and you had to sit there and try things until stuff made sense. If you were really lucky, there might be a manual. These days, even if there is a series of explanatory videos, an illustrated manual, pop-up tooltips and an in-game tutorial, most players will ignore ALL of that, and just try to wing it. If things don’t make sense… your game is toast, your review score drops, your refund rate goes up, your sales go down, and you find yourself practising ‘do you want fries with that’ in the mirror ready for your next career move.

Obviously this is suboptimal.

I make innovative and fun games that have historically been a bit confusing to play and a bit buggy. This is the year where I try to address my game production shortcomings. Early Access is a godsend to me, as is collecting metrics on gameplay usage (anonymously). I can tell when people do not use a feature, and collect a lot of opinions from people on what sucks, and what needs work. I’ve made real progress in the last few weeks on reducing the bug count in Production Line, and I know I have a fair bit of work to do when it comes to the GUI and the ease with which players understand the game mechanics. In short, I need to give some more thought to a lot of my first-pass GUI choices.

A few screenshots illustrate a ton of minor things I need to give some thought to. Take this example:

Theoretically thats a fairly obvious and simple piece of UI that shows you information on the imports to a production slot in the game. The player uses this tab to adjust where those imports come from, presuming they have researched the tech that allows such configuration to be made. Each line shows a different resource item that comes in, the percentage of the last 100 items to be used that were locally produced (within this factory) and 3 mutually exclusive buttons to set the import mode for that resource.

There are potentially loads of issues here. The game tracks the last 100 items used by this slot, but if 90 of them (in this case) were Door Panels and only 10 were Chips, then the sample size for chips is way lower, and the ‘local’ percentage is not as accurate or granular. Does this matter? Does the player know what ‘local’ means? should there be a tooltip for that part of the GUI (there is for the buttons, but the player may not hover-over those). This entire tab is also hidden (grayed out at the tab button level) if the player has not researched the tech. Should they still be able to see the local percentage in this case? or are we fine hiding that from the player until then?

Then we have those selectable buttons. Firstly, do they look like they are clickable? They change the cursor and highlight on mouse over, is that enough? And is it obvious they are exclusive to each other? they don’t ‘look’ like conventional radio buttons used in multiple-selection. Should I change the UI? Finally, whats with the text? it explains things but isn’t it a bit clunky? Should I have column headers with text and then just radio buttons with green check buttons to illustrate selection on each line? would that make more sense? Does all this text even fit in German?

Lets take another look at the same bit of UI in a different circumstance:

In this case, the entire efficiency tab, which normally contains a pie chart, is completely blank. Why? because nothing has actually happened in the last X seconds of game time, meaning that there is no data to display here. However, this is surely a GUI bug, we should be drawing a pie chart anyway and showing the last state the slot was in surely? Thats easily fixed… Meanwhile the entire slot is effectively paused, because the stockpile is FULL, and there is no room to export more product. Effectively, we are on hold due to a lack of component usage or storage elsewhere in the factory. The ONLY clue to this is the ‘Status: No export room’ text. This is woeful. The immediate state of the slot is not even that obvious to ME.

Possibly I should highlight that status in red, or have it flashing, or maybe both. Perhaps the grey progress bars should be red, or flashing?

While I’m at it, on the stockpile strip, those numbers show the currently in stock value PLUS the number of requested items currently en-route in brackets. Nowhere is this explained. Can I explain it easily in the space provided? I shouldn’t make those icons any smaller, but maybe instead of numbers I should just have 16 slots for icons and a different color or shape to show which ones are en-route? Would that make more sense? would it be visually cluttered?

There are no trivial answers to any of these questions, they all need some careful thought and experimentation. I may end up changing all of this, or none of it. Maybe some of my ideas would make things worse…its hard to tell without trying. the really painful thing is that the end user who buys the final game post-release wont see any of this. They will see a GUI layout of a window with some text and icons and think that it all sprang into existence fully formed. It really isn’t like that. To get the level of UI polish I want (and need) I’m going to have to iterate on this stuff a lot. This is tricky when you are the only programmer, and only designer. There is much to do…

 

 

 

Designing the QA system in Production Line

This is a big feature in my car factory game Production Line that I have been putting off until I could really set aside some time to think about the design seriously. I think I’ve finally reached that point in Early Access where I need to flesh out the design for this part of the game, and also importantly, to listen to feedback from current PL players about how they think this should work.

The current system is pretty simple. cars have work done to them on the production line, and then at the very end of the line, just before export, they go through a pre-export QA process that is broken down into emissions test, visual inspection and performance tests. All cars are assumed to be thoroughly free of defects, and are sold on the basis of their features and their price relative to the perceived value of those features.

Obviously in the real world, defects and car quality is a thing. You wouldn’t expect any defects on a $150,000 car, you would expect very few on a $70,000 car (unless its panel gaps on a tesla…dig dig…), and probably be more tolerant of minor things on a cheaper car. High end car companies (Rolls Royce etc) probably go overboard on quality assurance to ensure a reputation for zero problems (Lexus are also good at this), whereas at the lower end, its probably less of a concern. How to best represent this in the game in a way that both feels reasonable, and makes intuitive sense, and also works within the existing game design, and above all feels interesting and fun?

For a while, I have wanted to combine the idea of defects with the introduction of an area-of effect mechanic. One of the most interesting aspects of the game is the designing the layout of your factory, and at the moment, apart from making sure importers and exporters are in the right place, and ensuring that you only place office slots (like research) in office zones, there is not that much *positional* decision making involved in the game. I thought I could introduce this with the advent of new QA slots, that had a radius effect.

The system would work by generating defects at every point along the line. there would be a base level of defects that would be generated each time a task was carried out on a vehicle, including tasks generated through upgraded slots. For example, adding the rear axle = 1% chance of a defect. Adding a tire pressure sensor… 1% chance of a defect… and so on. Some cars would go through the line entirely free of defects, but many would not. Eventually, if ‘untreated’, those defects would make their way into the final cars which would be sold.

For every car sold with defects (depending how many), there would be a negative impact on the reputation of your brand, a new, lagging indicator which would affect the purchase enthusiasm of your customers. Obviously this would be something you would want to keep an eye on, so as to ensure customers were not turned away, so how do you prevent defects? and how do you treat them?

To prevent defects, you can place down QA stations, which would be area-of-effect based, and would essentially reduce the percentage chance of a defect occurring at any specific point on the line. Covering the entire production line with regular QA slots would be a way to keep production quality high and defects low, but obviously would have a cost in terms of employee pay and the floor-space required to add those QA stations. This would be a ‘prevent defects from ever happening’ approach to QA. The second approach would be to introduce a new ‘re-work’ slot right at the very end of the line (maybe just before the current QA section) which would examine each car, and take whatever time is needed (maybe 2 minutes per defect?) to fix the problem and allow a perfect car to travel beyond that point. Clever players would eventually use smart junctions (which would need defect-based rules added to them) to ensure that cars that randomly seemed to be defect-heavy did not cause a major slowdown. As I understand it, in real factories, cars that need re-work are immediately taken off the line and dealt with separately so as not to cause any real bottleneck.

This is my first attempt at designing a QA/Quality system for the game. I’m very interested to know what existing (or potential) players of the game think. Essentially it boils down to this:

  • Defects are randomly generated on cars as they are constructed
  • Area-of-effect QA stations reduce the likelihood of those defects when placed on the line
  • A re-work area can optionally be placed to fix defects at the end of the line
  • Defects will affect the brand image of the company, and thus customer eagerness to buy.

Thoughts?

 

Improving the marketing design for Production Line

If you aren’t already a player of Production Line, you probably dont realize that there is a part of the game where you can place down marketing facilities (once researched). These allow you to generate a flow of ‘ideas’ which are basically marketing points. Those points get spent on new marketing campaigns, in TV, Print or Movie form. Right now the only target for these campaigns is ‘brand awareness’ which essentially means more people will come into your car showroom and consider buying your cars. So far so good… This system has been in the game for a while, it works, there are no bugs, everything is kind of working as intended.

But yet it isn’t really, because it turns out that generally speaking people just don’t use the marketing features at all. They get excited when they research them, throw them down, and then run some campaigns (which cost a lot, but due to balance issues, some players at this relatively late stage of the game have LOADS of money, so its not an issue), and just kind of assume they worked, without really bothering with them any more. The major problem was the lack of feedback to the player on the progress of the marketing campaign, and its effects, PLUS there were balance issues meaning they may have been relatively pointless anyway.

Dealing with the GUI stuff first, I have replaced the event pop-up in the bottom right of the screen (easy to ignore) with a central modal dialog for whenever a marketing campaign ends which prompts you to run another campaign, and also for the first time it now gives you a breakdown of the extra customers the campaign bought in, how many cars they bought, and the revenue that this generated:

I also changed the GUI for the market screen which shows the current number of visitors to your showroom, so that it has a tooltip which breaks it down into the ‘base’ number plus those who are bought in by your marketing efforts:

And finally I’ve changed the GUI for the marketing screen itself, so that for campaigns which are currently being run, you can keep an eye on those customer, sales and revenue numbers as the campaign is running:

So with luck, that has a major impact on encouraging people to use the marketing feature in the game. They should no longer be oblivious to the effects of the campaign (which is probably the biggest factor), plus they can no longer be unaware that a campaign has ended. Obviously a campaign ending does not automatically mean you have enough marketing ideas to launch another, and maybe I need more hints and pop-ups/GUI indicators to point out to the player that they now have sufficient ideas for a new campaign, or to prompt them to maybe invest in some more marketing facilities.

So anyway… thats just half the problem, which was UI/UX related. The other problem was balance/Sim related, and that also needed some tweaking. Like everything related to balance in a game this complex, it will probably require a number of iterations to get the numbers just right, as designing a game with so many inter-connected parts really is a massive number-tweaking problem. The problem here was that the player was essentially never reaching a point where the number of customers in the showroom was a limit, so they never saw any pressing need to spend on marketing to get more customers through the doors.

Obviously the player can always sell to every single customer that walks through the door, IF their prices are low enough, but this may entail selling cars at a loss. What I need is to ensure that the player sees that by enlarging the number of potential customers, the number of actual buyers is going to go up, WITHOUT reducing prices. This may be intuitively obvious to some, but maybe not others. If you have 80 showroom visitors per hour, and produce 20 cars per hour, would you automatically think you need more visitors? This is hard to convey.

Regardless of communicating this, it did seem like the number of customers was basically not enough of a constraint, so I have adjusted the numbers so that fewer customers show up, but they are more flexible on price. That *should* mean that balance is not vastly affected, whilst keeping customer numbers low enough now that the player sees an incentive to boost them with marketing. I suspect it wont be enough, and I’ll need to communicate this in other ways, maybe by showing the total potential pool of customers, and what percentage of them actually check out your cars? I have a stat already for market share, but thats sales, not views…

Anyway…. I think its all progress on the playability and balance of the game. Bit by bit, the game is getting better every day :D