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.
Game Design!
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.
Ah, these are always a joy to read. After reading the Tags, I feel there’s a joke to be made about granularity somewhere.
The bit about eating seeds and half-grown crops out of sheer hunger is alos strongly reminiscent of the RL Irish Potato Famine. That’s some pretty grim stuff. I have A Modest Proposal for you ..
So regarding “lock food to be cooked”…
I am thinking you could use the militia to enforce the locking of food. Basically set the locked food to be guarded, and only accessible by the cooking staff, but if someone decided to be naughty (heck, even someone on the cooking staff, using their approved access to get the food), they could steal some food but risk getting caught by the militia, and perhaps being jailed. I say they deserve Frontier Justice, but who am I to judge?
I was thinking exactly the same, it would be great to see riot teams trying to stop the people trying to sack the stores. It would be great behavior for many situations, angry mob vs normal forces (medicine storage during an illness outbreak, alcohol supplies with low morale, cultists trying to sacrifice someone to appease the gods). Even better, due to the reaction system players wouldn’t be sure if a soldier is lawful enough to hold the line (may bring micro management of law forces due to suitability and less use of forced conscription during hard times…).
I know this is unlikely to come but I can dream and hope. Thanks for the updates!
So what you are saying is that this is a…. CABBAGE PATCH? I am sorry for that one. By the way, just an idea that you can ignore, but some sort of ministry picture book would be handy. Something with everything in it so player could see what they could make, or how to make things. Like the guide in terraria. Or maybe you want an experience about discovery, in which case this idea would mess that up. Anyway, this is a great game so far, and I can’t wait for the new features.
“A vodka distillery in Utrecht previously owned by Steve Ballmer” – sounds like a good deal guys. Sell! Sell! Sell!
On a more serious note, where are all the Alpha Centauri quotes?!
“Our first challenge is to create an entire economic infrastructure, from top to bottom, out of whole cloth. No gradual evolution from previous economic systems is possible, because there is no previous economic system. Each interdependent piece must be materialized simultaneously and in perfect working order; otherwise the system will crash out before it ever gets off the ground.”
– CEO Nwabudike Morgan, “The Centauri Monopoly”
Now, I’m no game designer, but the way you approach food and spoilage seems to be very mechanical. Am I right in thinking that the spoiliage is a hard cut-off? (i.e.: the crop is gone when it is spoiled)
If so, maybe add something like a soft landing? Have crops lose nutritional value the longer they go untended after the spoilage threshold. This way, the player still has *some* food, and missing a harvest event isn’t as punishing to the player.
In any case, maybe look at Banished if you haven’t? I felt it had a slightly more natural-feeling farming system, but that might just be me.
Spoilage is indeed a hard cut-off. Making a gradual stat decline seems like it’d be ‘nicer’ for the player, but it creates another piece of information that must be expressed via game art and UI, and it’s another piece of information for the player to process & make judgments about. If it’s a variable number, a player must think “how does this compare to what I expect from this type of crop?” – and what if it’s too little to be worth the effort of cooking it? Should they micromanage dumping food at some cutoff value? Perhaps set a slider to optimal food cooking value, and set it to dump everything under that value? This is starting to sound like a lot of fiddly detail.
And, ultimately, it comes to what the game is about: Is it about optimizing agricultural practices vs. food quality? Not really. Farming is a part of Clockwork Empires, but definitely not the focus.
(Sim Farm on the other hand was indeed a game about agriculture, and crop quality WAS an important stat that you had to consider vs. decisions made all the time.)
With a hard boolean cutoff for crop quality, true or false, almost no UI/art load is placed on the game, and no decision load is placed on the player except “how do I stop this from happening”, which is a matter of policy (ie. make all decisions this way by allocating farmers/fields like so) rather than micromanagement (ie. making each individual decision for each individual crop on a case by case basis).
… ahem, if that all makes sense.
Basically: gotta keep it simple.
Alternatively, you could make it so that spoilage affects the maximum yield of a field rather than the nutritional value of the food. This eliminates all of the headache that’d come along with food having variable nutritional value as well as making farming a bit more forgiving to new players.
You could even keep the hard spoilage cutoff; if your field drops below, say, 50% yield, the rest of the field spoils.
This addresses nothing in your final paragraph, though, and if such functionality is added, it probably won’t be for several months as it’d be a low priority. The actual mechanics would be pretty simple, however, [(Actual yield) = (Max yield) * (Spoilage multiplier derived from the amount of time spent in the soft spoilage state); it’d require tracking the amount of time in the soft spoilage state, but I’d be surprised if that proved difficult] so it’d also be possible to do a quick and dirty mock-up to see if the mechanic works well in the game.
Having that soft spoilage time could also serve to introduce some variety to crops beyond nutritional value; some less nutritious crops could be more forgiving in terms of upkeep.
But the farms yield discrete units of food. It isn’t abstracted away as a “yield”number – it produces actual, individual cabbages (or whatever), and not a huge number of them either. I’m not sure how what you’re proposing would actually work.
Avoiding excessive complexity, that is good. However, just adding one or two levels of intermediate spoilage, where the food lose half to its value (or one third and then two third) could be worth it.
In this way the player could notice when something started to go wrong, and still have some time to save at least part of it.
Relatively simple fix-ish thing; farms with crops at a higher growth stage are tended to before any other farms are, even if excess farms get “starved” of workers and grow nothing at all.
Other approach: farms need to be claimed by work crews, and are balanced for farm output being limited by how many overseers you have.