Clockwork Empires is an exceedingly complex game. Each new system interacts with each existing system in ways we necessarily can’t predict. And unpredictable consequences are, to some degree, the goal of any sandbox game worth its cabbage. But there are failure states where the whole web of systems kinda slumps over to one side, repeating the same beeping noise. This isn’t interesting, so we have to poke and nudge the game back to where it does interesting things again. This is called “Game Design”.
Is that metaphor getting awkward? Let’s get to the specific example I had in mind: balancing food & farming gameplay in Clockwork Empires. This is going to go into Exciting exhaustive detail!
(By the way, we’re doing the big monthly update of Clockwork Empires next week! The Development Progress page will be updated at that time. Details to be released soon.)
Balancing Food & Farming
As discussed in the “Ripe for Harvest! (And the CE Rev30 Update)” blog post, I’ve taken over the farming system in the last month and rolled in additional complexity. The process for farming as stated in the previous blog post was to be this:
- Plant crops in farm plot
- Wait until next growth stage timer triggers
- – this creates the “tend crops” job
- If job is not performed within period equal to the growth stage trigger timer, become spoiled
- If job is performed within the allotted time, go to next growth stage and start the next time
- (repeat growth stage / tending cycle until reaching the harvest stage)
- Harvest crops
And that worked. Plus some Fun stuff for Fun reasons.
Then one day, I walk into the coder room and hear something about how farming is really hard and everyone starves: The crops turn to weeds, and though food is ordered cooked, the starving colonists will eat the raw food rather than waiting for the food to be cooked into far more nutritious food. This leads to a downward spiral of starvation as the player’s colonists get stuck in a cycle of growing and consuming low-efficiency food with no chance to escape. Then someone starts a cult, etc.
Why is this happening? The first thought one has, a defensive and uncharitable thought, is this:
- The player isn’t good at the game.
This is an easy fallback and taken alone is unnecessarily dismissive of the player’s experience. On the one hand, games can be hard, it’s okay! On the other, you must ask why is the game hard? What skill is being demanded of the player? Does the game tell the player what that skill is and how they can evaluate the information they’re provided to be able to make decisions about how to employ that skill? Are they even given a chance to learn it in the first place?
From another angle: Q. Why am *I* not having any trouble with the farming system? A. Because I wrote it and know all the numbers and the optimal balance of farmers to fields. I know what features are broken and so avoid them. I know the failure states and the exact mechanics that cause failures and even the numbers behind those mechanics so I can time things perfectly and allocate work crews and resources exactly as needed.
But the player doesn’t have any of that. So it seems that the player isn’t getting important information; the player is not even being given a chance to learn how they should play, they can’t learn the mechanics and the failure states without the complete failure of getting dumped into a downward starvation cycle that’s “game over”, no lesson taught.
Let’s break down what’s happening here again:
- The game isn’t providing the information required to make good decisions about farming and food.
- The player is not given the space to learn said information about creating a sustainable food system.
This is also an unfinished game, so two additional points need stating:
- Existing mechanics might not be working as well as expected, making the in-game process of creating food/farming less effective than the planned design.
- Existing player control might not be enough to allow a player correct mistakes when identified and otherwise test theories of how to play the game until finding success.
So we need to provide more information about what the system is doing, more breathing room to learn and use that information, the means to control the system, and ensure the system is working as intended. I inquired with other Gaslampers about their ideas and threw in a bunch myself that seemed worthwhile for addressing these problems. I’ll go over all of them, organized by how they’re trying to solve the core problems identified above, then state if they’re done or not and why, then break down the thought process behind each and what additional issues were revealed.
Here’s the list of ideas:
- “add more tooltips”
- “helper alert when crops first spoil”
- “starting supplies should provide everyone with a full meal”
- “food bailout event”
- “double time before crop must be tended before spoilage”
- “halve food cooking time”
- “investigate workshop job clogging”
- “lock food to be cooked”
- “raise min hunger required to eat raw food”
- “eat ungrown crops when near-death”
- “are workcrew job filters working?”
- “ability to deactivate farms”
- “ability to remove farms”
(This gets complex as we dig in, so hold on.)
A. Ways of giving the player more information:
- “add more tooltips” (not done): This is straightforward. As Paradox has taught us, giving the player access to more detailed info via tooltips is almost always valuable. There is however a long-standing bug with how tooltips are assigned to static objects that doesn’t allow them to be cleanly reset. It’s on The Pile and, once resolved, will enable many more informative tooltips to be made.
- “helper alert when crops first spoil” (not done): Actually, I just haven’t done this due to time because I kinda over-thought the feature and wanted to make it a tutorial-like event with art and everything. Now that I write about it here, just making an alert icon with an informative tooltip that says “Crops have spoiled due to neglect! You need more farmers.” would be Good Enough for now, provided it doesn’t repeat too much. I’ll probably actually set this up after writing this post.
(Not mentioned here: a notion to give zones, of which farm plots are a subtype, an informative UI element like Workshops currently have. Would also give more control possibilities, but more on that in a bit.)
B. Easing the player into the system
- “starting supplies should provide everyone with a full meal” (done): It turns out we didn’t start with enough food for everyone to eat a meal! Wow, the Colonial Ministry is terrible. This meant the player had to get a working food system up within about one day (~6 minutes) before things starting spiraling out of control. That’s a little rough. Players now start with more food.
- “food bailout event” (done): When over 3 colonists reach the “Starving” state, the Colonial Ministry will send a free shipment of food and tell the player that they really ought to “hunt, forage, and farm”. This acts like an in-narrative tutorial and gives the player more time to adjust what they’re doing to solve the crisis.
- “double time before crop must be tended before spoilage” (done): A crop takes a given amount of time, say 3 minutes, before it can advance to the next stage of growth. After that 3 minutes is up, the crop becomes a valid target for a “Tend Crop” action from a farmer. If this is not performed within another 3 minutes, the crop would spoil. Spreading too many farmers over too many fields meant a lot of crops would spoil because farmers couldn’t get to the crops in time to tend them. This time has been doubled.
(But there’s a far deeper problem contained in point 3: any job to be done on a farm plot is collected in a unique “Assignment”, our game/data structure for a collection of jobs. A work crew can only have one Assignment at a time. If a work crew has the Assignment for one farm plot that trickles jobs to it, they will never leave and work on the farm plot next door that badly needs a lot of tending. This suggests that the way farm plot assignments in general work needs an overhaul – work crews that are farming should be able to join together the Assignments of multiple plots into one big farming job. We’ve had this feature on the books for quite a long time but haven’t done it due to prioritizing game stability, but it seems now that everything else is working we’re going to have to get to it sooner. In the meantime, we can just allow farm plots to be bigger so that a player can farm sustainable with fewer but larger plots.)
Don’t you love it when simple problems become extremely complex problems with the underlying structure of large systems? Me too. Let’s move on.
C. Making the in-game system more efficient
- “halve food cooking time” (done): Cooking food took half a day, and took half a day from a character. Might as well just be farming because the nutrition value per worker day is higher output than cooking the food. Oops! We halved the cooking time of everything. Ultimately, when a stew is boiling or bread is baking, this should unlock the character who initiated the job so they can go do other things so that, for example, a character could have four stews cooking. Now that I write it out, it’d be kinda like how farming works, but with “tend stew” instead of “tend crop” — anyway, we have a test case for a job structured to not require character involvement at every step, but we need to allow that for a bunch more job types and test it thoroughly.
- “investigate workshop job clogging” (???): This is a pretty general statement about gameplay, but has to do with how it seems that jobs don’t get done quite as quickly as one would expect given their requirements. One part of this is the characters being locked by jobs you might not expect to lock them, as above. Another is that workshops can only assign one type of job to the work crew employed therein rather than throwing all valid jobs at the work crew regardless of what it is. So eg. a workshop can only initiate stew creation, possibly multiple at the same time, before moving on to initiating bread cooking jobs. Or such is my understanding, and there are almost certainly other subtle problems with work crew/assignment behaviour. See previous point about extremely complex problems! We did, however, fix an issue with workshop assembly where each work party would attempt to install only one module in a building; this frees up work crews to do other useful things, such as tend farms.
- “lock food to be cooked” (not done): The suggestion here is to have a workshop claim all the ingredients it intends to use so that starving people don’t snatch up cabbages and eat them before the cook can pick them up to make stew with. This is probably a good idea in the sense that it’ll make workshops use materials more effectively, but it would require a lot of work to implement so it’s more of a long-term project. Plus, there’s the narrative goal of giving colonists their own agency to make terrible self-interested decisions like eating food before it can be cooked (though this must be balanced with the player’s sanity).
- “raise min hunger required to eat raw food” (done): Well, even if we don’t totally lock raw food claimed for cooking from being eaten, we can make colonists prefer to eat it slightly less than they do now so the kitchen work crew has more of a chance to grab and cook the cabbage before it gets eaten.
- “eat ungrown crops when near-death” (not done): It’s not clear if this is a very good idea because it’ll just create a case that exacerbates the above problem. Instead of colonists eating the raw cabbage for less nutritional value, they’d be eating the ungrown cabbage crop for even less nutritional value! Still, there’s something to be said for really going with the tragic results of starvation; I recall a historical anecdote about peasants trying to eat the seeds sown to grow crops because they were so hungry. This one goes on the “maybe” idea pile.
D. Giving the player more control
- “workcrew job filters working?” (done): It turns out these weren’t working as correctly as we assumed. Ouch! Now they do work and work crews will generally stick to categories of tasks the player orders them to. More tagging of jobs needs to be done however because, for example, a job like “Clear Terrain” has no given filter and may be taken on by a work crew that you really, really want to focus on farming. In the short term we may just have to add a “other jobs” toggle button to the work crew UI to turn off any job but that which is specified as acceptable.
- “ability to deactivate farms” (not done): As stated with the job/assignment problem above, building too many farms may overextend the ability for farmers to cover the ground required. If a player can turn off excess farms to focus farmers effort, they may be able to grow food more effectively. Doing this cleanly is the trick, however, so it’s on the TODO pile of “slightly more complex than can be done in a day”.
- “ability to remove farms” (not done): Same as above, but a little more extreme. Built too many farms? You should be able to remove them. Same goes for removing buildings, but “general stability of the game” has trumped development of this swath of features for now (because it’s more than just deleting them, it’s integrating the removal of buildings/zones into gameplay as jobs/assignments). So this is on the TODO pile of “rather slightly complex” as well.
Presented with a problem – farming and food felt unbalanced – we identified some core problems, came up with ideas to address them, then implemented the easy ones, stuck the crazy ones in a pile in the back, and shoved the hard ones onto the “TODO list of doom” powered by JIRA™ . I’ll note here that many of the required new/changed major features have already been identified by other problems reported or otherwise anticipated by design discussions and are just waiting their turn for implementation, so it all ties together in a nicely maddening knot of contingencies.
This is how the game gets made.
PS. And due to a tag that got switched, butchering fishpeople wasn’t working for a while. Rest assured, this now works in the current experimental build so if all else fails, just recruit a bunch of militia and provoke a fishperson invasion.