CYOA-style combat vs combat commands

I’m working on adapting a node-based conversation extension into something appropriate for combat. It would look something like this:

[code]> draw sword
You remove your sword from its sheath. It makes a steely slithering sound.

The watch captain draws his own sword. “Stand down, cur, lest I slay thee.”
0. Retreat

  1. Kick over the table
  2. Leap onto the table
  3. Shut and bar the door
  4. “I encourage thee to try, coward.”
  5. Attack and try to back him toward the staircase

Of course, each choice leads to new text, and new situational options, but it’s all pre-scripted. The difficulty of a given combat is related to the number of “victory” endings versus the number of “game over” and “you are forced to retreat” endings. However, it has its pros and cons.

It’s more like prose. Story segments do not repeat (“you swing your sword and … hit for X damage, arrgh!”)
It’s easier to create than adding umpteen new commands, postures, attacks, defenses, ripostes, blocks, etc.
It’s easier to balance than weapon damage, damage type vs armor, healing, ranged vs melee, and other numeric pitfalls.

There are fewer (or no) hidden, secret options. The player has less room for creative solutions. This can mean the player needn’t think … but it also means he will rarely get stuck.
There is no concrete numerical or mathematical system to help the player judge his relative combat strength.

There is less sense of accomplishment, since randomly choosing options will get you through some battles.
The player can reach a game-over ending without warning, making it seem arbitrary or unfair.

How do you feel about combat presented in this fashion?

I’d say that, like any goal-driven CYOA scene, it will work best if (a) there is some amount of hidden state; (b) the player remains in the situation for several choices (or has the opportunity to return for several passes). If done that way, experimentation is possible, combinations of moves are possible, and underlying state can represent the player’s general approach rather than a momentary action.

If you want to keep it simple-ish, you could make each option have a certain chance of succeeding? So the more logical options have a higher chance than the less logical ones for that particular fight, giving less of a ‘just try all the choices’ effect. Then you just need a succeed/fail message for each option.

Hidden state: you mean, the engine notices that the player’s first two moves are aggressive, defensive, or delaying?

One solution I was thinking of is this: prior to any game-over ending, the player is given a node which clearly shows his tactic was not working.

[code]2. Leap onto the table

You leap into the table, gaining a momentary advantage of elevation. The guard captain dashes to the door and shouts, “Summon the bruisers! Here methinks we have this one contained!”

  1. Leap down and try to drive him from the door
  2. “Surely thou needst not help to slay me, coward!”[/code]

In this way, I’m not hitting the player with “game over!” in one move, and he has one final “out” to correct his error. That’s not to say there can’t be a better path – perhaps if you play the scene right, he reveals some useful hint.

A chance for each option would be nice; setting aside the extra work programming each node with two answers, it rewards the player for high-percentage plays. But should the player always be rewarded for safe moves? Suppose there were a fight in which the player was overmatched, but he could turn the tables with something desperate.

There are different goals you might be pursuing here. One goal is to make each option interesting; another goal is to make the combat be a puzzle. If it’s a puzzle, Zarf’s advice is spot on: it needs to give you clues and be amenable to experimentation.

If you just want to make each option interesting, without turning the whole combat into a puzzle, there’s another technique you can use. Give the player N skills, where she ranks her skills from best to worst. Then present the player with a series of challenges where there’s one best skill for that challenge, but only if the skill is high enough.

Here’s a simplified example with just two skills: strength and magic. The player has to choose which one she’s best at. One challenge X might be best overcome with brute strength, and another challenge Y might be best overcome with magic. Suppose the player picked strength. For the strength challenge X, the choice is easy: use strength. But on the magic challenge Y, the player has to decide whether to try to use magic (despite not being good at it) or to use strength (despite it not being appropriate).

Two skills makes it too simple, so we normally recommend having five or more skills, to give the player more room to maneuver. With even three skills it can be easier: say strength, magic, and dexterity. Maybe the player is best at strength and worst at dexterity; when facing a dexterity challenge, the player might try to use magic, her second-best skill, instead of a wildly inappropriate skill like strength, even though it is her best skill.

I think what was presented at the top needs something a little more, if expected to sustain interest for longer than a brief encounter. Purely on a round-to-round basis, I think a good way to capture a more fertile field of combat play would be to allow the player to make multiple orthogonal choices simultaneously, before seeing the aggregate results. (Attack tactic plus defence tactic would be the classic arrangement, and you could add spell/tech effect choices.) I don’t know if CYOA systems can capture multiple radio-button-list choices at once, with a submit button, form-style, but if so then it would be something a CYOA combat system could do that a parser system couldn’t really replicate, which would be interesting.

Are you using choice nodes for the whole game? Or is some of it parser-driven? I think combat in choice games can be great (Way of the Tiger was particularly good and had a system not unlike what you’re describing here). However in a parser game menus are not as much to my taste.

I’ve been thinking about the same thing myself. One indie strategy game, Solium Infernum, has that sort of one-to-one combat element. (It’s about demon lords vying for the throne of Hell and one-on-one gladiatorial combat is one of the means to gain prestige, the victory resource.) Your chosen champion has a number of attack, defence and infernal points (used for special skills) and before combat you distribute them among different types of moves across 6 rounds. Then you just let it play out. It’s definitely an element that could serve CYOA, to introduce some unpredictability.

There’s an easy hack that works in any multiple-choice system: allow undo until (and only until) multiple decisions have been locked in.

*label attack
    #Attack aggressively.
        *set attack "aggressive"
        *goto defense
    #Attack with a feint.
        *set attack "feinting"
*label defense
    #Wait, I want to choose a different attack.
        *goto attack
    #Use my shield.
        *if attack = "aggressive"
            Aggressive attack doesn't work well with a shield.
            Your opponent takes the feint and hits your shield. You make a solid cut.
    #Just parry with my sword.
        *if attack = "aggressive"
            Your opponent stands his ground under your flurry of blows.
            Your opponent takes the feint and you stab him in the chest, but not before he cuts your leg.

Two player inputs in rapid succession before seeing the results would be good enough to do the job, I guess. Technically that would no longer be something a parser couldn’t do, but it still would probably be more workable in CYOA.

EDIT: Form-driven CYOA in general has my mind kind of spinning and wondering if it’s been done before as it could allow a lot of complex input of different kinds. And it would be trivially easy to implement directly in HTML! (Although then one might have to re-implement everything else a web-based CYOA system does. It would be better to choose the most hackable CYOA system and try to hack its input system to display and accept complex form data.)

To answer a few questions: I’m going for a Conan-style game of big many adventure, so I lean toward combat-as-puzzle more than combat-as-RPG. I want visceral, hard-boiled Robert E Howard prose that goes smoothly from puzzle to combat to conversation.

What I’m trying to avoid: XP for murder, leveling up, and making the player feel that killing is always the optimum solution. Combat can take many forms: sparring, intimidating a witness, forcing a door guard to open up, taking a prisoner, driving off a fearsome beast, or defending yourself against insult. Not always will “chop off his head” get the best results. Random chances could interfere with the best outcome (oops, I was trying to capture him, but my first blow was a critical hit). Also, Conan (or my Brand X equivalent) is already damned near the strongest man and best swordsman. It makes little sense to “level up” Conan.

I could see a mechanic for learning new combat styles (“You are using Bonetti’s Defense against me, eh?” “I thought it fitting, considering the rocky terrain…”) for new situations.

In fact, I could do the offensive/defensive choices as part of a mixed option:

1. Bonetti's Defense: block the exit 2. Bonetti's Defense: drive him toward the window 3. Agrippa: kick over the table

But I’m not sure that advances the combat-as-puzzle style. Perhaps the villain at the end can only be defeated if you train in Capo Ferro. Or you can’t use Agrippa when you’re carrying a nubile slave princess over one shoulder.

Part of Conan’s strength is his intelligence and reputation. I will give the player commands to Taunt, Boast, Praise, Rally, Insult, and even Seduce in some cases. The combat is as much about getting your enemy emotionally ready to lose as tactically. To Praise an enemy in combat is to condescend; it may throw him off balance or enrage him… Or do nothing. Know your enemy.

The game should be 60-80% parser and puzzles, and the rest combat and conversations. A design goal unrelated to combat is to use a minimum of objects and trinkets, and to present puzzles that aren’t about Find-the-X-to-unlock-the-Y, or looking for a container big enough to carry all of your stuff. Conan was not a hoarder.

The dichotomy you draw between puzzle and RPG is not what I was talking about. For comparison, try Choice of Broadsides, in which the combat is neither puzzle-y nor RPG-ish.

That’s rather like how I intend combat to go: by description, rather than through skill mechanics. I’d rather let the narrative flow carry the action than micromanagement of defensive postures and weapon upgrades. (You learn a new fighting style because it happens in the text, not because you spent 3 skill points.) Moreover, I like the idea that the same combat can always be won the same way(s).

I’m toying with the idea that the player can select from among a few distinct pre-made “characters” at the beginning, each with different skills and a different voice. You can be the big Dasinian warrior (sword and dagger), the swarthy smooth-talking Rhothian assassin (bow and sword), the Allurian amazon (bow and dagger) or the Gemnian sorceress (magic amulet and dagger). Each combat could have multiple solutions, depending on the character’s strengths. That’s just an idea, though.