[2025/04] Dev Blog: How to Design It in Polya's Way


The Life of a Government Clerk is a single player, turn-based, coffee break Roguelike game made with Godot engine. The game title comes from Chekhov’s short story, The Death of a Government Clerk, while the core mechanics are inspired by Kafka’s novel, The Castle, in which K witnessed two clerks delivering document by cart in a hotel.

The game is under development. Its current version is 0.1.1, which is not ready for play yet. I was too optimistic at the end of last development blog. Nothing went smoothly and I spent two weeks tinkering with existing game mechanics in the same static dungeon as version 0.1.0. During the process, I also added Appendix B to my Godot 4 Roguelike tutorial. It explains how to disable font ligature in Godot game (not the editor). Take a look if you are interested.

The Game Is not Fun, Again.

When I play testing my game, I call it !!FUN!! if (1) I cannot beat it easily; and (2) I keep losing not because challenges are unfair or resource flows are flawed, but because I am too careless or too greedy. When I noticed that I blankly stare at the screen and keep pressing arrow keys, I knew something was wrong.

How to solve it? Look at the unknown! A voice comes from a classroom, where a teacher stands before a blackboard, asking eagerly. What is the unknown?

The game is boring. I want to fix it, but I don’t know how.

Have you seen it before?

Yes. I wrote a development blog Rethink Game Design half a year ago.

Here is a problem related to yours and solved before. Could you use it?

Yes. I can take a similar procedure to redesign the game.

  1. Stop coding.
  2. Observe game experience from a player’s view. Note down obvious issues.
  3. Review resource flows from a designer’s view. Spot potential problems.

You have already decomposed the original problem into two smaller ones. Let’s look at them one by one. Is there something wrong with player’s experience?

  1. There are way too many symbols in dungeon.
  2. Sometimes it’s difficult to identify PC by color.
  3. The overall play time is too long (more than 15 minutes). My ideal time is from 5 to 10 minutes.
  4. The game does not challenge me at every turn. When Raw Files are in cooldown and my Cart’s load amount is not very high, I can safely wander in the dungeon to pass time.
  5. On the other hand, when the load amount is almost full, there is hardly anything to do excpet charging to Cleaning Station if I have Cash. Things get worse if I don’t have money – I can only keep playing a few more turns and accept failure.

Do resource flows work as intended?

I’m not sure. In order to answer this question, I need to review the flows and check game data. It is easier than improving player’s experience, so I will start from here.

Could you solve a part of the problem (resource flows and game data)?

I went over the resource flow chart (the initial version is shown in the first development blog). Now I am confident that it works properly as a whole (Raw File -> Clerk -> Document -> Officer), although some of the resource nodes and flow connections can be improved.

All game data are stored in library/game_data.gd. I checked the file and added comments to explain my design intention. I have adjusted some of them, but the main problem remains unsolved.

Now back to user experience. Can you figure out a quick and dirty solution? A complete overhaul? Something in-between?

Problem 2 is trivial. PC sprite should be more visible with a brighter color.

I can think of a few immediate fixes for problem 1 and 3. The dungeon is packed with Servants (smiling faces) and Trashes (question marks) in the later stages of the game. How about reducing the total number of Servants and Trashes, and making them more potent in the meantime? Decrease the number of Documents to be delivered from 10 to 5, and introduce new challenges at a faster pace.

Problem 4 and 5 are the two sides of one problem: how to provide intense challenges constantly? Tweak game data to raise game difficulty. How to challenge players more frequently? Right now Servants never move by themselves once spawned. Is it possible to let Servants approach PC and take Raw Files away from him? Technically yes. I have already written pathfinding functions. However, it is incompatible with current game design. I’m not sure such a violent change is really necessary.

Go back to definitions. What do you mean by Cooldown and Load Amount in problem 4 and 5?

When PC takes a piece of Raw File from a Raw File Node, the node becomes inactive for a few turns. During the cooldown, PC can do one of three things.

  • If he needs more Raw Files, go to another active Raw File node.
  • If he wants to reduce cooldown time for the current node, interact with a Servant.
  • If he has no desire at all, wander in the dungeon to pass time.

All these things require moving around. When doing so, PC’s Carts gradually become filled with waste paper, which is represented by load amount. You can think of it as PC’s hit point. When all Carts are fully loaded, PC loses all his HPs and the game as well.

Ideally, at every turn, PC has at least one desired destination (a Raw File node, a Servant, etc.). He has to choose his path carefully to control the growth speed of load amount. Speaking of desired destinations, two questions emerge in my mind. Sometimes a Raw File node is available, but PC does not need the file at this moment. How do avoid or find a better way to handle this situation? The game lacks last minute rescues for heavy loaded Carts. How to improve it?

A Clerk has two desks nearby to store Raw Files. Obviously I can add two more public desks for PC’s use. There should be some drawbacks when a public desk holds a Raw File.

There are three ways to control load amount. Paying a Cleaning Station is the most efficient. Its cost is the highest. Interacting with a Servant slows down growth speed a little bit for free. The middle way is answering Phone Calls, which I think can be improved to be a better emergency rescue system.

Carry out your plan. Have you solved the problems?

Mostly solved, though there is a minor issue. Currently, new Servants and Trashes are spawned immediately when possible in a random position around PC (from PC_SIGHT_RANGE to PC_SIGHT_RANGE * 2). However, sometimes they appear too soon, or are too close to each other. I will add three new rules to control the randomness.

  • A new Trash appears every 3 turns.
  • A new Servant appears every 5 turns.
  • There are at most 3 Trashes in a straight line.

Can you use the result, or the method, for some other problem?

See the next section, Conclusion.

Conclusion

Here are a few general ways to improve game design.

  • Observe game experience. Note down problems. Focus on the most obvious ones as a start.
  • Analyze game data. Prove that they are reasonable.
  • Review game mechanics. Try to improve it in the most trivial way, the most intense way, or the middle way.
  • Provide challenges at every turn.
  • For every challenge, there is at least one solution, which brings at least one new challenge.
  • Control random generation process to fit designer’s intention.

Leave a comment

Log in with itch.io to leave a comment.