nfirvine.comwiki

SuperiorDamageModel

Filed in: Ideas.SuperiorDamageModel · Modified on : Mon, 16 Mar 09

This Idea proposes a new damage model for characters in RPGs, FPSs, or really any genre where there's damage damaged.

Motivation

Currently, the damage model for most RPGs consists of taking an incoming blow, subtracting and/or dividing by various stats, then subtracting the result from the character's one-dimensional hit-points stat. To me at least, this is exceptionally unrealistic and dreadfully boring: combat generally becomes a calculated exercise in maximisation of HP. I intend with the proposed damage model to mitigate this fact.

Layers and Locations

The model is composed of several Layers and Locations. The Layers, from bottom up, would be:

  1. Organs (heart, lungs, brain)
  2. Flesh (skin, muscle)
  3. Clothing
  4. Armour

Locations might include:

  • Thigh
  • Knee
  • Hip
  • Left/right shoulder
  • Head

A Point is a (Layer, Location) co-ordinate. A Location Stack (or Stack) is a stack of Points all sharing the same location

Types of Damage

There are several different types of damage. Here are a few examples:

  • Sharp
  • Blunt
  • Flame

They can be combined based on the type of inflictor. E.g., a flaming arrow might cause Sharp- and Flame-type damage.

Propagation

Each Location Stack, starting with the outermost layer and moving inwards to layer 0, accepts and processes the initial external damage, and pushes any remainder inwards. There are three types of processing:

  • Absorption: The layer itself takes a portion of the damage and applies it to itself, diminishing its condition or efficacy. Remaining damage is passed inwards.
  • Dissipation: The layer itself takes a portion of the damage, but discards it: it is not damaged. Remaining damage is passed inwards.
  • Reflection: The layer itself takes a portion of the damage, and passes it outwards. Remaining damage is passed inwards.

Application

Damage is applied on a per-Point basis. Points deal with applying damage on their own terms. For example, a simple piece of armour might subtract any damage it absorbs from its "condition" stat, and once its condition is 0, it is destroyed. (This is similar to Diablo.) Or, a complex force shield might reflect a certain cumulative amount of blunt damage, and after that function as simple armour, with the option of recharge. Or, a fire fighter's suit might dissipate a certain amount of heat until lighting on fire and causing heat damage itself.

Application to living tissue would happen in much the same way. A person's heart would be protected by bone and flesh, which provide moderate absorption of blunt damage (and perhaps fire damage), but little absorption of sharp damage. Thus, while the player might survive a baseball bat to the chest, the thrust of a long knife would work better.

Point Conditions as Player Stats

In current RPGs, players' stats such as strength are used to calculate the amount of damage they can inflict. However, using this model, "Strength" is not a characteristic of the player as a whole, but rather an individual attribute of each flesh-layer point for the type of instrument being used. Each muscle involved in the use of the particular weapon would weigh in on the force behind the weapon. Of course, the condition of the muscle with respect to "strength" (in real life, perhaps density, efficiency) would be used, but also in respect to wounds. Some questions to ask while calculating:

  • Are there any lacerations on the muscle? Bruises? Scars?
  • Is the underlying bone sound? (Not broken or bruised.)
  • Are the "parent" bones and flesh alright? (By parent, I would mean the joints, bones, etc. leading up to this one that it depends upon.)

The character's ability to swing a sword would not be the only characteristic influenced by the condition of his body parts:

  • Good enough eyes might warrant a zoom function whilst aiming.
  • Keen hearing would allow hearing sounds farther away.
  • Taste: detecting poison, components of a potion.
  • A multitude of hideous scars might invoke distrust or hatred in an NPC.

Amputation and Prosthesis

If a bone is destroyed (i.e., its condition surpasses a certain threshold), then all of its children bones (and their layers) would be destroyed as well. (Graphically, this would be very gruesome, of course.) Amputation whilst in the field would require extensive medical attention (if the battle is won at all!). Cauterisation would need to be done, and disinfection.

But that's not the best part. Amputation means you can customise your character with cool prostheses like peg legs and morning-star arms in a fantasy setting or machine guns and laser cannons in a sci-fi setting. Obviously, not necessary to the damage model, but a neat side effect.

Damage as Energy

In this Idea, damage can really be simplified to abstract energy with a negative or destruction tone: sharp and blunt damage are really just kinetic energy with differently-shaped objects.

Inspirations

  • BattleTech strategy tabletop game. Never actually played it, but the damage system looked really neat.

Implementation

The easiest way to do this would be as a stack of 2D paper dolls, like Diablo or BattleTech (although these don't have layers).

Alternatively, it could be 3D. Each layer would be a 3D mesh where each vertex represents a Point. Intralayer edges would represent physical proximity (for the spread of heat, e.g.). Each vertex would have to be linked by a special edge to its superlayer and sublayer in order to propagate damage.

Challenges

Too Complex to Understand or Manage

This Idea might be too complex to expect a player to manage. But this has an upside: the player shouldn't have to manage this to this level of detail. When a player sees a shield with a hole where it would be covering his heart, he should be thinking "I bet that shield won't protect my heart very well", not "Damage propagation may lead from the armour level (whose condition is depleted to 0 at Point (x,y)) through my shield and possibly into my heart". The less numbers the player has to deal with, the more "role-playing" an actual RPG can be. Nothing makes me feel more in the role of fantasy warrior who realistically couldn't count past ten than comparing various armour stats until my eyes bleed.

Concave Meshes

If a layer mesh is concave at all, this creates a problem, because (from a realistic viewpoint) a strong and/or sharp enough blow could pierce through a layer four times (in-out, in-out) or more. I'm thinking of someone holding a shield, specifically. Although, this may be able to be treated as two separate blows...

In fact, this brings up a bigger problem: angled blows wouldn't make sense to follow the path of the Stack. Better idea: each poly in the model represents a Point (confusing), and when a blow is applied, it must present a strike vector through which it runs. All polys that intersect this vector are treated as the stack. Only problem is, a slicing motion with an axe would need to present a strike mesh that was a simplified version of itself, and all polys that intersect are the stack. however, this means that you could have multiple neighbouring polys in the stack from the same layer.

This reminds me of Arkanoid for some reason...


Powered by PmWiki