A Damage Calculator

Tags: project, development, GURPS

And I Deal… hmm. Let me grab my calculator

I play games in the RPG system GURPS, which is the general universal role playing system. It’s a neat system who’s biggest feature is flexibility. You may have noticed that a lot of RPG’s and RPG-adjacent games have a spceific genre associated with them. Most are related to or are the great-grand-children of J.R.R. Tolkein’s The Lord of the Rings books. These systems have a few big upsides: first, they’re easy to grok — you know what the knight does, and you know what the ranger does, you’ve seen these archetypes do their thing. The other big upside is that they tend to have straightforward combat mechanics.

GURPS isn’t beholden to a specific genre, that’s why it’s the “Generic Universal” system, not the “Dungeons & Dragons” system. That’s neat, but the unfortunate part about that is that the mechanics tend to be more simulation’s than game.

As a quick example of the non-simulation aspect of D&D, a character in D&D can achieve a 6ft vertical with a Strength Score of 17. At the time of writing this, the record I found was a 63.5 inch box jump or 5.29 ft. That’s a peak athlete with basically no extra weight. A strength score of 17 is pretty ridiculous, but the max is 18, where you can perform a 7 foot vertical! Even more ridiculous is your character’s encumbrance doesn’t technically hamper your max vertical. That means your theoretical 18 strength human can jump 7 feet in the air with up to 270 extra pounds of gear.

In GURPS this would be impossible without breaking some rules, or applying powers.

The Matrix Problem

So GURPS is a simulation, therefore the game expects you to crunch some numbers on the reg. The basic system for melee combat is no more difficult than D&D. In fact, I think it’s a bit easier than D&D because everyone is playing the same game. One of the tricky things in D&D is every class has slightly different rules — a warrior can sometimes attack 3 times in one 5 second turn, where the wizard can cast some spells with others. Plus the Wizard’s got to worry about his Spell slot resources. Oh, and the Rouge cares where everyone else is situated because it plays into his core.

None of that game splinter happens in GURPS: everyone is a person or person-adjacent thing. Everyone deals with Health and Fatigue. Everyone has 1 second to perform the same set of moves. Everyone cares about placement and everyone cares how everyone is reacting. It’s a liberating system in how simple it is.

But the offloading of the paralysis of choice from class features too complex to weigh every possible option comes in the Damage step. See, once damage starts getting ridiculous, and damage types start getting into play — things get complicated fast.

The Simplest Case

If you have 2 dudes punching the crap out of each other, then GURPS is simple. Each combatant gets 1 second to either punch, evaluate, move, defend, or go nuts and start swinging for the fences. Every time you swing your opponent can attempt a defense and if they fail you inflict damage to their HP, usually on the order of 2-6 damage (the average human has 10 HP). So where does it get complicated…

The Matrix Reloads

If you’re dealing with hundreds of temp HP, highly damaging attacks, and intense powers with different armor penetration values and damage modifiers you suddenly have a lot of math to do. Not as much as in GURPS: Vehicles (oof) but still a lot.

Let’s say you have an ablative armor set with 50 points of Damage Resistance, something like a set of ceramic combat armor like Master Chief in Halo. On top of that you have an energy shield whose ablation rating is much higher: i.e. once it’s burnt that resistance is gone (but it regenerates). If you were punching that, you’d have no chance of doing anything. The strongest sword can only really get up to around the 20’s in damage, and that’s a stretch. To combat this discrepancy, these high-tech super weapons have Armor Divisors which makes the effective resistance less effective.

Great now I have to do divisions, subtractions, factor in armor penetrations, ablations, and I want to get through a round of combat without losing it.

Technology to the Rescue

I’ve had the problem of running these calculations for too long. “Enough of this” I said, and I’ve decided to make a damage calculator for this system. Behold my site: GURPS Tools

So my first problem with GURPS is usually layered armor. A common example is energy shields, like in Mass Effect or around those rolly bug droids in Star Wars. Essentially, you have some sort of field which surrounds a character that protects them from laser beams, swords, and whatever else is in space. This field is effective but it also is limited: usually these kinds of shields can’t withstand continuous barrages and concentrated fire so they ablate.

It’s taken this long to spell it out, it doesn’t get faster when you have to play with this, so my damage calculator calculates what damage does get through, but if you’ve got one of these fancy ablating shields, then it also calculates how much damage it takes. Pretty nifty!

I’m still working on armor divisors, but this is because there’s some discussion on whether or not they affect armor ablation, and last time I checked Kromm said “both,” so stay tuned, I guess.

It’s more than a Calculator

Your dumb graphing calculator can’t tell me the average min max damage. Actually, I guess it can, plus my site can’t do that yet. But it will! That’s a new feature for the future coming soon! I really want to use this to figure out how hard I can push combat encounters without totally destroying a session. TPK’s are no fun for anyone.

If you’re interested in the site, or if you find a bug feel free to let me know: I’ve got a domain-specific email set up to grab complaints, and the GitHub is hosted here. Short-term future plans include a mini-blog for the site to communicate my future plans and releases, as well as documentation. I’m planning to do that in Gatsby.js, but we’ll see!