How to make IF combat interesting?

The thing I’m currently working on (in TADS3) has a mostly-static “real world” and a procgen-lite “dungeon world”.

One of the game mechanic involves befriending characters in the real world to help you explore the dungeon world. The different characters provide different skills, which in turn provide different approaches to solving problems (both in the real and dungeon worlds). So for example one NPC might be good at sneaking around, and so could help you avoid enemies in the dungeon world. And one of the ideas I’m experimenting with is having an NPC that’s good at just straight up fighting (which would otherwise not be an option).

The way I’ve been approaching the combat aspect is to treat it more or less like a card-based game under the hood. Kinda like Gloomhaven, if you’re familiar with it: each character has a “hand” consisting of cards containing various abilities, and each turn you’re selecting a “card” and using its ability. Instead of “straight” RPG-ish “attack +2” sorts of abilities (which is mostly what Gloomhaven uses), they’re something more like the old Lost Worlds (and Ace of Aces) gamebooks: your abilities are things like “duck”, “overhead smash”, “low swing”, “block”, and so on. “Easy” actions are always available (you can always just try to run away, for example), but “hard” actions can only be used once every couple turns (like a card that gets discarded and isn’t available again until you recover your discards).

As the character accomplishes various things, they can acquire new “cards” to be used later (bonk a couple skeletons on the head and discover you can take off their heads in a single blow if you do it right, boom that’s a new move).

In terms of the player experience, this is mostly just a series of context-specific actions that can only be used by a specific character.

I think the approach I’m leaning toward is just switching the player character to be the combat guy if combat is initiated. I’d previously been working on changes to the parser loop such that in certain circumstances the player would be given a sequence of character-specific prompts for multiple commands which would then be executed simultaneously, like:

ALICE> S
BOB> TAKE ARTIFACT OF UNSPEAKABLE EVIL FROM THE ALTAR
CAROL> PUNCH SKELETON

Where Alice is the most-of-the-time player, Carol is the fighter, and Bob is some other NPC currently with the “main” player (the core idea I’d been working on is that the player is basically the navigator and the NPCs would have all of the useful “adventuring” skills). Under the hood that worked by processing the turn as if the player was just doing whatever the player command was, and each of NPCs would conduct their turn as if the player had given them an BOB, [do something] command. Which worked, but ended up posing “puzzle containment” problems.

Not sure if anything like this will end up in the final game…I’m certain I don’t want to implement a full-on RPG engine to handle combat, and I’m not sure that a RPG-like thing might feel unsatisfying (like you’re just playing rock-scissors-paper repeatedly or something like that).

But throwing it out there anyway in case it inspires someone else to do something better.

7 Likes

This is what I’m currently dealing with now in DOTG. I decided against using a “turn-based” RPG-style system, because 1) I am terrible at coding, anyway. Everything is already hacked and cobbled together, adding a combat system like that on top of it all is just needlessly bleh to my already blee-brain. And 2), also, I’ve just seen these mechanics in action even in games that are amazingly coded.

And frankly, they are boring. It’s just clicking a link over and over again. So what I’ve done is essentially made a “conversational-combat” system whereby you are able to find objects/items, have a sparse inventory, and that opens up different dialogue options. Your class also impacts your dialogue and action choices, so say a Soldier with a Caveman and Combat perk will have conversational options available to him like:

<<if $class is "soldier">><<link 'SMASH HER OVER THE HEAD WITH A CHAIR.' 'Next Passage'>><<set $roll random(1, 20)>> <</link>> ((CAVEMAN 20%)) You pick up the chair in front of you and smash the annoying weirdo in the face with it. Who says violence doesn't solve problems?<</if>>

And that will generate a result based on success/failure - and that’s pretty much where I end the combat. It is linked to health stats - so the person could get hit with a chair and then pull out a gun and shoot you and that takes off 50% of your health. Now you have conversational options dealing with your health loss.

Shit like that, so it’s more organic and not really a “combat-mechanic” based game. You pretty much are “solving encounters.” So there’s a 20% chance you’ll succeed and Smack Dat Person Gud, but that other 80% says you are a Stupid Cave Boy and you throw the chair at the wall instead. And this person is watching you be a complete moron, and will respond that way.

So it’s a bit of the “click to attack” shit, but more embedded as a conversational agent.

3 Likes

It doesn’t sound bad at all. But it seems to me that it has nothing to do with RPGs, instead it is a strategy game.

True, I am not too familiar with the details of these genres.

Who would be the players opponent? The computer, another player or MMO?

The computer would be the opponent, and far less varied in options than the player. Basically just rising difficulty through better chances as the story progresses.

There’s a free card game called Agent Decker that uses a line of cards to represent events and a stack of cards to represent actions. It’s far from fiction or tabletop RPGs, but that is the sort of linear approach that I think you are describing.

2 Likes

Here’s another one, from the tabletop game Homeworlds: instead of playing on a board with spaces connected to adjacent spaces, use some other principle to determine when locations are connected. In Homeworlds the rule is that two star systems A and B are connected if no stars (plastic pyramids) in A are the same size as one in B. Players can also “discover” a new star system, so new routes can actually appear during play.

I imagine you could have a lot of fun thinking up complex but intuitive rules for when locations are connected.

In the context of a combat system, “locations” don’t have to be rooms but could be any network of stances or attacks. So for instance you could make the player play Hunt the Wumpus on an evolving graph of dodges and feints.

7 Likes

That sounds like it could be a fascinating system!

2 Likes

@Weemie

That sounds really cool. I’m currently working on a narrative type combat system too.

It’s based on the open-source Charge RPG system. The rules lend themselves to basically taking risks and it’s all narrative-based. Failure is a path forward, just as much as success. And you just have a stress counter (mental/physical combined) that takes you out of the action, but not necessarily to your death. There’s a slightly simplified version called Dash, if Charge seems a bit overwhelming.

Actions rely on rolling 6-sided dice. And you can use precious “momentum” to give you a bonus, and your character’s skills can affect the rolls as well. Momentum is accumulated when successfully performing a risky action (when not using momentum on said action).

Enemies don’t have life (nothing does). The challenge/danger (encounter) simply has a clock. You have, say, 4 units to dispose of the enemy while trying not to incur stress. Some risky actions might knock 3 units off the clock, while safe ones might only remove 1 unit. And that’s just one way to interpret the rule system. The clock could be impressing someone or disabling a security system. The clock could follow you if it’s a poison indicator and medicine could just add more “time” to it.

However, the rule system is really about improvisation in a TTRPG environment. So I’m trying to be careful about not branching the narrative too much as I account for success, partial success and absolute failure. It’s proving tricky to implement in a predetermined IF story, but it’s also looking very promising. I’ve found that avoiding a specific plot is allowing things to flow easier. It think it works better in a loose, action/adventure narrative more than a deliberate story line that’s trying hard to instill a message upon the audience.

In a normal CRPG system you either live or you die, now I have to think about failure in a creative way with all encounters and how that can drive the story.

If anyone has questions about how the system works (I had to read it multiple times because I’m old and my brain is wrinkly), I’ve found that their Discord channel is super friendly to queries.

3 Likes

That’s the big difficulty with adapting this sort of thing to IF. I think card game systems are more likely to adapt well, since they’re built around having a finite number of options and entirely rule-driven consequences to choosing them.

5 Likes

If I may ask, which CRPG’s would you play if you could and what about them, besides the combat, provides the attraction for you?

Setting, story and worldbuilding, mostly.

2 Likes

I didn’t get the chance to respond to this post (I was recovering from a broken leg; still not able to walk, but standing has gotten a bit easier) and talking about IF design was the last thing on the agenda. I appreciate a lot of the advice and ideas here, especially the comments by @VictorGijsbers. I’ve decided to make combat more interesting by giving the player more options, similar to Kirkirkruip or Beyond Zork. Charging temporarily reduces your natural armor class by 1d4, but does an extra 1d4 of damage. Defending grants a temporary AC boost. If you have a weapon wielded, you can also perry the attack, which grants an AC bonus for the turn according to the weapon’s parry bonus. I’ve also incorporated projectile weapons which work similar to the ones in Kirkirkruip; now if only I could figure out how to make ranged combat from adjacent rooms work, but I know fuck all about scope.

6 Likes

Scroll Thief has large objects (including people) that are visible from adjacent rooms, and the ability to throw things at them, though it’s a few Inform versions out of date by now.

5 Likes