I’ve got another topic in which I ask coding questions; here, I would like to talk about design principles and choices for Kerkerkruip and its potential successor, Kerkerkruip 2. In part because it might be interesting to players and to other authors. And in part because your ideas and feedback are valuable, and of course all the more so at an early stage of development.
In this post, I want to share some core ideas behind the combat system.
Traditionally, combat systems in interactive fiction have been rather boring affairs. You type ‘attack’, there’s a random chance that you hit and do damage; then your enemy does the same; and so on. Of course there are ways to make it work. For instance, Treasures of a Slaver’s Kingdom uses fights mostly as doors: you can pass enemy X if and only if you have solved enough puzzles to be able to beat them. The combat is not really a tactical system, because tactics are not the point. Or you can turn the combat into a series of hand-crafted puzzles, as in Slap that Fish. But for Kerkerkruip, I wanted a tactical combat system.
That means that in a fight, when you’re looking at the command prompt, there should be a real decision about what to type. It can’t just be ‘attack’ every time. I can think of at least three ways to make that happen.
The first, and worst, is a rock-paper-scissors type thing where you and your opponent make a choice simultaneously, and success depends on having chosen something that dominates your opponent’s choice. Of course rock-paper-scissors is not a good game. I think something similar is used in classic beat 'em up games like Street Fighter and Mortal Kombat, but I’m sure the need for real time reflexes and the psychological dimension of playing against another human are crucial to its success there. For interactive fiction, it doesn’t sound like a good idea.
The second approach is to give the player many different skills to choose from. In order to make sure the player doesn’t always just use the strongest one, you can for instance give them cooldown timers. Many contemporary action RPGs work like that, as do some turn-based games like TOME. Another option is to make the strongest skills use a renewable resource, such as ‘mana’ or ‘energy’, as we see in for instance Diablo and Dungeon Crawl: Stone Soup. It’s also common to combine these two forms of limitation. I think this can work in an interactive fiction, although you’d need to think carefully about ensuring that the player shouldn’t always do the same things in the same order. In many, perhaps all, of the games mentioned above the spatial situation is important in determining what you’re going to do. (Are the enemies close or far away, lined up or spread out, and so on.) In an IF tactical combat game, you probably do not want to rely on space too much. Still, I think it could be fruitful to explore this approach – it’s just not what I chose for Kerkerkruip.
What I did choose was something very simple: a system where you can choose between attacking and another action, called concentrating, which improves your future attack. Now there is a choice between attacking right now, possibly getting the benefit of that; or improving your future attack. Before looking at the details of Kerkerkruip, let’s define a simple two-player game.
Every player starts at stage 1. You take turns. On your turn, you can either increase your stage by 1, to a maximum of 6; or throw a 6-sided die. If you throw the die, then (a) if you throw the number of your stage or lower, you get as many point as the stage your are at; and (b) your stage is reset to 1. So, if you are currently at stage 1, you have a 1 in 6 chance of getting 1 point. If you are currently at stage 6, you have a 6 in 6 chance of getting 6 points.
This game gives you the opportunity between possibly scoring points now, or improving your ability to score points later. A quick mental calculation will tell us that you should always improve your stage 5 times until you’re at stage 6, then roll the die. This gives you 6 points every 6 turns. All other strategies are less efficient.
But it’s easy to make this game more interesting by adding interaction between the players:
Whenever you score points, your opponent’s stage is reset to 1.
Now it becomes very risky to try to get to a high stage, because all those turns getting to a higher stage are wasted as soon as your opponent scores a point! Suppose you are both at stage 5. Then you definitely should not go to stage 6, because your opponent might roll the die and have a 5 in 6 chance of disrupting you. What is the optimal strategy for this game? It’s hard to say without much more detailed calculations. Calculations that will become harder still if we introduce the rule
You win when your total points is 10 or higher.
because now, the optimal strategy is going to depend on how far along both you and your opponent are in achieving that goal. I’m not claiming that what we have defined is a great game, but (a) it is far from trivial to see what the right thing to do is, (b) it is nevertheless possible to reason about that in the thick of things and come to pretty good conclusions, and (c) it’s going to be tense! You’ll be watching every die roll eagerly, hoping to score some points and trip up your opponent!
What’s more, (d) the optimal choices will change when small changes are made to the situational rules. An opponent against which you always gain 1 point less than you normally would, or 1 point more; an opponent who succeeds more easily at the roll, but gains fewer points; an opponent who is disrupted only when you succeed at your roll but don’t throw a 1; and so on… each of those would require a rethink of your tactics. In each case, the situation is tractable enough that you can make informed decisions, but opaque enough that you don’t know for certain what the optimal strategy is. You need to hone your decision making skills through frequent experience.
Essentially, this is what Kerkerkruip’s attack/concentrate system is. The details are a bit different from the simple game above, but the underlying principles are the same. You want to get to high concentration for a much better attack, but you don’t want to be hit in the meantime, since that might disrupt your concentration. More about the details, and about the ‘reaction’ and ‘flow’ additions, in a future post.