Making An Engaging Combat System In A Text-Based RPG

Mortal squads with rocket launchers, angel mechs with miniguns, sword-wielding cyborgs, and more. What systems make fun and cinematic combat?

Making An Engaging Combat System In A Text-Based RPG
Photo by Alexander Jawfox / Unsplash

A mortal squad breaks into an outpost wielding rocket launchers. In a well-coordinated volley, they hit the siege demon sheltering there with several explosions. Unlucky for them, the demon barely clings to life as its magical shields flicker under the strain. The carnage of an engagement begins in earnest, as the demon rumbles into action.

Elsewhere, several lesser transcended stand watch in a district for any incursions. With a titanic quake and a spray of cast-up debris, an angel mech lands and opens with suppressing fire from their minigun. Within moments, more angels and their mortal fire teams follow.

A dozen demons burst into the home stronghold of an angel faction, and over the course of a traumatising thirty minute brawl, manage to scrape enough standing survivors together to declare the fight a victory. Demonic medics begin their slow tending of wounds, skirting around the dead angels that washed the floor in blood.

Chromed out with cybernetics, a woman stalks through many buildings with a sword and dagger. She's looking for lone prey to quietly dispose of. Few can catch her lurking in the shadows, and when they do, she descends on them with a flurry of steel blows.

Vignettes like these should be engaging in both play and in the fiction – this browser based RPG I'm building is centered heavily around combat. Not everyone will engage with combat, and not every server will feature it, but it'll be a major game mechanic for those that do incorporate combat.

How do I make fighting interesting, therefore?

Design Intent

Let's establish some principles for the design intent, about having a fun-forward system for resolving conflict between two or more opposing sides. This has to handle all ranges, from duels to small-scale engagements and large-scale engagements.

  1. Most combat decisions are made in advance of the encounter, i.e. in what loadout and attacks you are running to counter different enemies. This makes it easier to simply click your attack hotbar without needing to fuss with split-second assessments.
    1. For decisions that must be made during combat, they are largely opt-in. For example: using a combination attack is based on the player picking that skill and setting up their loadout for that. Builds that are simpler must remain viable.
  2. There should be four weapon categories of scaling cognitive complexity, allowing for new players to easily pick up the combat without being overwhelmed. Example: hand-to-hand, ranged, melee, and spells.
  3. Every attack action does something, even if it's not directly what you want. There should be minimal "you attack and miss" moments. Instead, we should have secondary systems, like "suppression" and "trauma" that can contribute in ways beyond "subtract from health points."
  4. Combat can be cinematic or gritty, but should not be overly lethal for players.
    1. Counterpoint: combat should also not be a damage sponge, where characters take ludicrous amounts of attacks before keeling over. Therefore, tuning this balance is vital.
  5. The pace of large-scale combat should be slowed down to take minutes or tens of minutes, to allow healers to shine as well as for players to notice and log in to engage with combat.
  6. Players are assumed competent in combat, unless they explicitly take a negative modifier (i.e. because they're pacifistic or role-playing an inexperienced character).
  7. Healing mechanics should be simpler than combat.
  8. Healing should be a major speed bump to combat pacing, and limited by stockpiles of supply items, as well as "traumas" reducing effectiveness.
  9. Players should be able to find engagements of the scale they care about: hunters can find handfuls of characters to kill, small strike teams can take on outposts with similarly evenly matched fights, and large raiding teams should be able to take on big locations filled to the brim with enemies.

Cognitive Complexity

Part of keeping combat fun is reducing the cognitive complexity involved in it. Too many factors to think about will overwhelm players, and make it difficult to understand what is going on.

That's why there's a couple of design intent points focusing on that, including the "combat decisions are made in advance of the encounter" one. There should be little to no fiddling in the middle of a fight with your loadout or skills. Instead, you have a hotbar of all your actions. At most you may swap between different attacks depending on what your target is most susceptible to.

Another aspect is that there should be accessible choices for how much complexity a player wants: some players want more fiddly combat that involves setting up interesting synergies, in which case I want to add "magic" and "melee" attacks that supply that.

On the other hand, some players need basic tools that they can use reliably, like "hand-to-hand" and "ranged" attacks.

At the core of it, there's the trade off between generalist attacks being consistent, and niche attacks sometimes being great counters to a target's defenses.

Combat can be Gritty, Cinematic, Lethal, Tactical, or More!

There are touchstones in media that I like to get a feel for, that will help describe how combat can play out:

When I think of tactical combat, I think of Into The Breach. It has a puzzling feeling that would fit in with Chess or Go puzzles, wrapped up in a theme of mech combat. The developers spent significant amounts of time to make it clear what happens, and when: from turn orders to telegraphed attacks to ability previews.

When I think of cinematic combat, I think of D&D 5e (and Baldur's Gate 3). Flashy magic, careful niche interactions, or big moves that do a lot all at once. It's all about the rule of cool. Sometimes things work that have no right to in the real world, because it makes for a good story.

Blades In The Dark (one of my all-time favourites) can be played in a gritty way, where there are dangers and high stakes to actions. Consequences, traumas, stress, and especially the devil's bargain to complicate matters. You can get a lot done – as long as you're willing to pay the price.

Truthfully, there are a lot of different ways to develop combat's experience. I want to focus on gritty and cinematic for Blasphemess, whilst avoiding overly tactical or lethal combat.

In terms of the fiction, I envision an experience where characters are wrung through the wash, put through a meat grinder, and have to rely on supernatural abilities to keep moving and fighting.

I want to see gigantic characters slamming into a location, then grab an enemy to beat another enemy with. I want rule of cool weapons instead of "just" realism and pragmatism: rockets, magical beams of pure energy, magic talking swords, or miniguns. There should be moments of intense comebacks, where the right character in the right place can save the day.

That's what makes combat cinematic to me.

For the gritty aspect, the goal is to have feelings of high-stakes the whole time, and second chances when things go poorly. Characters should not just lose hit points (part of critical existence failure), but lose their functionality as they sustain traumatic injuries. Combat is balanced so that nearly everyone has a circumstance where they can take down another character, despite power level imbalances, so fighting will always be a bit chaotic. It's about how many resources you bring and willingly expend as the active combatant.

For second chances, a high-level tank may lose all their hit points in a brief few seconds, but cling to life at 1 HP thanks to their warding points remaining unbroken. An undead may go down, then respawn in the same location immediately afterwards to continue the fight.

We can compare cinematic and gritty experiences to tactical combat. Tactics in particular are based around the player's ability to predict what result their actions will have. The information horizon might be short, in that they can only see one or two turns ahead, but they understand what precisely will happen in those turns. Tactics rely on clear mechanics more so than anything.

My issue is that too much tactical focus leads to a skill divide issue: it drives out more casual players (and great role-players!) to be consistently crushed by power gamers. I want chaos, not consistent advantages leading to predictable fight outcomes.

The other issue I want to avoid is lethality. If the time to kill is too low in the game (in either real time or number of actions) then the game has a serious issue.

High lethality leads to unpleasant experiences, for instance moving to a new location and then dying before you realise you're even in danger. Or as another example, taking the time to say something to another character, only to find that you died while you typed.

The balance of the issue is that low lethality makes combat slog on too long, and feel futile.

This is where sustained engagements should escalate. According to design textbooks I've read, one of the more interesting patterns to examine in games is advantage over time.

Players start with some random initial condition that provides advantage to one side or the other. What follows is a plateau of trading back and forth who has the advantage, until at the end something breaks free and one side quickly explodes in advantage and drives the engagement to end.

That is abstract, so we can look at this in more tangible terms:

The longer the fight drags on, the more lethal attacks become as it is escalated.

This means that early in a fight, you might find that your attacks have limited effect. The enemy has their resources, and no negative modifiers. Yet as the engagement develops, they spend resources and gain negative statuses.

Let's look into the systems we can employ to encourage that, in the Blasphemess prototype:

Combat Systems In Blasphemess

Hit Points

Hit points are a nearly ubiquitous mechanic. Gamers are familiar with them as a concept: you have a pool of them, and when you run out, your character is unable to act.

In Blasphemess, running out of hit points leads to incapacitation. If that character is not treated by a medic within a short time frame, they will expire and die, which means they'll need to respawn later. They may also opt to respawn early.

Auto Actions for Defense

The main defense a character has against being incapacitated in combat? Auto-actions to defend themselves, until the player comes online or someone else comes to the rescue. Such auto actions include healing friendlies, and attacking hostile characters in the location.

There's a small pool of auto-action points that regenerates quickly, which ideally leads to a several-minute window for large-scale combat where both sides are locked in the engagement and unsure of which has the advantage. (To give some rough example numbers, 25 auto actions with 12 actions a minute, that regenerate 5 auto action points every 5 minutes.)

The main purpose of auto-actions is to slow down the initial phase of large scale fights, to allow players time to log on and defend themselves. The other purpose is for offline characters to have a fair chance at not dying immediately when found by a hunter.

Warding Points for Defense

The next mechanical aspect of combat is warding points, which other games may refer to as armor points, or shields. Warding is a percentage resistance to HP damage, which then drains 1 warding point for each attack.

For instance, an incoming attack has 10 base damage and the defender has 50% resistance. The damage is reduced by 50% to 5 damage and 1 warding point is deducted.

By wearing armors, or taking skills that give innate warding, characters can become more survivable and tanky, boosting their effective hit point total. This is a form of specialisation players can engage in for combat, part of the trifecta of roles: healer, DPS, or tank.

Traumas for Critical Existence Failure

Physical traumas are the counter to resilient tanks: being incapacitated, taking large damage hits, being hit with a trauma-inducing weapon, or losing HP all have varying chances of inflicting a "trauma" on the character. Traumas represent reduced effectiveness, whilst not immediately being fatal. Things like less combat effectiveness, reduced incoming healing, and reduced warding gain.

Traumas are tiered in their effects. If too many traumas stack up, though, they become immediately fatal. They persist through only one life and one body, so being raised from incapacitation keeps traumas, whereas dying and respawning clears them.

Traumas are also cleared passively with time, or actively at a medical facility. The goal is to encourage more territory control, by having character groups spread out to maintain their strategic resource points, like hospitals.

Suppression for Long Term Effects

Suppression is the next system, which represents both mental issues related to prolonged combat stress, and nerves making one more error-prone during a fight. Things like freezing up, or tactically overextending during an engagement, or a character being depressed to the point of not wanting to respawn.

Where traumas are a one-body effect, suppression is not so limited; it's tied to the character, and goes beyond death. It is also one of the main ways to encourage escalation in combat scenarios. The more suppressed a character is, the less effective their defences and the less effective their attacks.

Suppression wears off passively with time too, and has fewer options for actively dispelling it. Or, at least, fewer ways of getting rid of it for good – I plan on including items that temporarily reduce suppression, at the cost of a later onset of even more suppression.

Engagements for Limiting Combat's Pace

Finally, there's one more system that ties combat together that I am hypothesising around the most: engagements.

The idea is that when you begin an engagement with an enemy, only a few people can be in the thick of a fight against one target at once.

Limiting engagements against one character is important to prevent optimal PvP tactics of focusing down one character within seconds. If it's possible to focus a target down before they get healed, it entirely bypasses the design intent of healing being the limiting factor of combat.

A Note On Monte Carlo Simulations of Combat

That's a lot of sub-systems to combat! Especially random factors like suppression atop deterministic ones like the damage effects. It makes it hard to reason about, and hard to predict what changes will impact the balance of combat. That's where we need data to draw balance conclusions from.

One of the really helpful things my codebase can support in the future is automatic report generation of Monte Carlo simulations of combat in a huge variety of configurations.

For those unfamiliar with the Monte Carlo method, Wikipedia has a page for it:

Monte Carlo method - Wikipedia

In short, instead of using statistics and other maths to calculate a hard problem directly, one can use powerful computers to run simulations to estimate the result. In the case of Blasphemess, that might involve a thousand matchups between two builds, but in other fields it might be a million or a billion samples or something.

I already have unit tests and integration tests that make use of the combat logic in an "arena fight" situation, it's easy to extend that to run a large number of builds against each other and report it for the community to comb through after every balance patch. It's not limited to one-on-one combat either, a huge variety of scenarios can be tested, including whole factions in a raid with dozens of characters.

I think this would be a great feature for the players and designers who care about balance, since it is data from which we could draw design conclusions. If, for example, one combat build always defeats another combat build in single combat with no recourse, we might want to search for a design tweak that narrows that gap in matchup win-rate to something reasonable.

Healing Side-Effects, and Pacing Combat

Looking back at the design intent, there's the goal that "healing should be simpler than combat."

To that end, I envision a couple of ways of actively healing other characters:

  1. Using an item, which restores a set amount of HP and has an optional side-effect
  2. Using character resources (like magic points) to heal HP with an optional side-effect

Those side effects are what give healing more depth, but at the same time they should be simpler effects than those used in combat. Examples of side-effects include small buffs to damage for the next attack, HP regeneration over time, resistance to damage, and more.

Healing is limited by auto-actions, action point costs, and magic points or spending an item. This gives logistics players room to focus on gathering supplies and stockpiling for the next big raid.

Another idea centered around healing is to have mutual aid stations, or self-service caches of equipment and supplies. Logistics players can accrue healing items, then donate them to the cache for NPCs and other players on their side to take from.

This helps distribute healing supplies for the next big battle encounter.

The Scale of Combat

The final design goal is the ensure that there are plenty of opportunities in PvP and PvPvE servers for combat to play out with most sizes of teams.

In my loose estimation, I'd like to see one hunter tackling 2-5 defenders, especially NPCs; a 2-5 person strike team handling a 4-12 person fortified location; and 6-12 raiders going in on a 15-25 defender home base. After that point, I expect matchups to need to be nearly one-to-one in terms of characters, as defenders are likely to go online before the assault concludes.

Those are just rough guesses; the actual balance will undoubtedly change as I develop the game further.

To support that, the easiest thing is to encourage player behaviour and tweak NPC logic. For instance, independent NPCs will want to spread out on the map, whereas associated NPCs will want to shelter in fortified locations.

Players should be encouraged to spread out to gather more territory for their factions, but doing so necessitates dispersing their forces. Unless they want to leave some places secretly undefended, of course.

If players are being hard-hit and losing lots of fights, they also have the choice to shelter all together and stabilise, but they give up on the territory control benefits that way. Those are strategic decisions and trade offs for the larger conflict.

There are countless little considerations with combat scale, too; for instance, with engagements being limited on targets, that might lead to awkward moments of dozens of people sitting around waiting for the last few people to be taken down. Rather than disrupt the player experience, there could instead be an "attack random hostile character" target that bypasses the limited engagements. So the last remaining defenders go faster, once all the attackers swap to attacking at random when there's few random targets left.

Small details like this will smooth over moments that can pull players out of the game flow state.

A Closing Note On PvP

Player versus Player combat is hard to manage and design around. It can quickly flare tensions, and without safety tools at hand it can drive into toxicity. Thus, the focus of Blasphemess is on PvE with some non-specific PvP elements to add excitement.

The goal for this game is to create a niche in gaming that nourishes player creativity whilst generating in-character conflict. Out-of-character cooperation or happenstance can develop that conflict, and what matters is that it gives players a jumping off point for their engagement.

However, out-of-character conflict (aka real conflict) is a problem to approach carefully and empathically. That's true in TTRPG groups or board game groups, and that extends to browser based games like Blasphemess.

In short, the goal is for players to work together to tell interesting stories of characters struggling, fighting, and living in the depths of conflict. Not for the players themselves to get caught up in the conflict.

This is sometimes at odds of PvP, though: pure PvP tends to attract those who strive to win, sometimes at all costs.

Finding the balance between PvE and PvP will be a constant challenge, therefore, because every PvP system introduced to the game runs the risk of creating more problems down the line.

Mastodon