Since you guys and gals have given great comments on previous health-system designs, I thought it might be a good idea to run my design through you.
About The Game The game is a one-man-army 1st / 3rd person action/adventure shooter with an aim to have the same person-to-person action sequences as action movies (like Heat). Enemies range from resident evil inspired zombies to half-life inspired soldiers and other un-friendly people (including vampires, werewolves and something that can be classified as mutants). You can choose to take out the enemies with hand-to-hand, by shooting them or by running them over with some vehicle.
The Previous System My first implementation of this game incorporated a hit-points and armor health-system (since hl had that and I liked hl (I still do btw)). As I started to implement the different damages that the player could encounter I started to feel that this system, while simple, it had it's drawbacks. All damages were divided into 2 categories: Damages that always resulted in health loss called armor-piercing damage, or damages that could result in health-loss (armor-loss first, then health-loss), called direct damage. Hazards such as radiation, fire and poison existed through a simple representation called time-damage. Basically this meant that I could add a damage type (direct or armor-piercing, mostly armor-piercing) and a value how fast and how much it would damage the player. It works, but it doesn't feel right somehow.
The New System I've tried to represent the damages that can come to the player and keep it rather realistic. Realistic enough so that it isn't one value that tells if you are dead, yet still keep it within the scope of a fun game. The values are: Body, Protection, Stamina, Consciousness, and Blood. The only time you get full health is by: starting a new level/chapter or going to see a medic/doctor. Half of the values regenerate though.
The New ValuesBody. This is what's left of the original health system and it can easily be called health. It represents how much more damage your bones and your body (as whole) can take. If this reaches 0 you die. This value doesn't regenerate.
Protection. This is your armor. I've been toying with the idea to have different kinds of armor (Kevlar against low-powered, flak-jacket against high-powered and Teflon vest against fire/heat) and reducing the importance of the armor (i.e. not the I got armor I am un-destroyable). Perhaps 75% armor equals a 75% damage absorbed, or 75% that the armor takes the damage. Recent addition to this value is that only some types of damages should be able to deplete it (bullets cant deplete it, but flames could easily). Some damage-types benefit from having protection, like fire.
Stamina determines how long-time you can sprint. If it is low it can affect other stuff as accuracy, and the melee damage. Takes about 10 seconds to refill while standing. If it is low your character/avatar breathes heavily and perhaps running a bit slower.
Consciousness determines how much stamina you can have. If this reaches zero you faint and stay out of control until it is filled, possible the world around is speeded so you only have to wait for about 5 seconds - max. When this is low it will be some visuals, perhaps a blurred screen. It should take about 20 seconds to refill while standing.
Blood. This is the amount of blood you have. When this reaches zero you die. This determines the level of Consciousness. It should take about (surprise!) 30 seconds to refill. With a low value you should see some visuals degradations, perhaps some more red-colors that usual. With a value somewhat lower than usual, you could hear your heartbeat pulsating.
The new time-damage I came to the conclusion that poison isn’t just something that you constantly loose health for some time and then you are fine. A poison temporarily changes your stats, and it may kill you. Having two different poisons in your body shouldn't kill you any faster (but it may), however pumping your body with one poison may seriously reduce your life-time. You may need to take an antidote, but your body may take care of it. That being said, how have I applied it to the health-system? Well, named it time-damage (since it may inflict damage over time). I got one value for each TD (actually I will probably load in TD definitions at startup) indicating how much TD there is (i.e. how much poison you have in your body, or how much you have left to burn before the fire goes out). Time may increase or decrease this value if it is above zero, or your actions may also alter this. Running and rolling around while being on fire makes you loose the fire TD-value faster and jumping into water sets it to zero. Between different values of the TD stuff may happen. Stuff like:
- Changing the maximum of the stats (body, stamina, consciousness, blood)
- Changing the stats overtime (this may be dependent on a few predefined values like "have I moved?" and "am I in air/water?")
- Override the original "what happens if this stat-value if below zero?" – some drugs may result that you can run for a longer time, but instead of getting tired, you die.
- Apply different effects
These effects may be selected randomly from an effect-list in the TD definition. The effects are predefined and affect the input and output to the user (among other things), some examples:
- The EAX "psycho" effect
- Less damage in close combat(you are weaker)
- The HUD displays wrong values
- Illusions (crawling spiders, people calling for help, fake enemies, fake sound of enemies)
- Simulating, ignoring and/or modifying input (suddenly your characters starts shooting, refuses to or starts to punch when you want to shoot)
- Multiplying the recoil value
- Your character starts to talk to someone in his imagination and a bar appears and you have to start "button mashing" to regain control.
- Strange being-high comments like "I am the lizard king", "Baby I got a hat" and "Juicy stuff"
Poison, Diseases, (Love? ;) ) and Drugs are all classified time-damages.
How I reasoned myself to these values Basically I listed all the damages that the character could be exposed to, and thought about how a movie/real life person would react to that kind of damage. So there is no science behind this "real-life" health simulation. Then I removed those values that would effect the game-play is a drastically bad way, like getting hit in the leg and walking/crawling at reduced speed to the nearest medic for hours. With these effects I grouped them and gave them a somewhat logical names.
Damage and modifier listPunch: loss of Consciousness and Body
Flash bang: Some visual effect, perhaps some “button mashing” to regain control of your chocked character, but this feels like a game-play killer.
Getting shot: Loosing protection and (then) Body. If Body is lost, you loose roughly one-second blood.
Sharp attack or slash from a knife: Same as Bullet, but perhaps more Blood.
Vampire bite: Lost of Blood and Body.
Smoke/Gas: Loosing stamina slow while coughing. This could be altered to add some TD, if the smoke is poisoned
Drowning: Drowning is implemented through time-damage. Loosing Consciousness and when it reaches zero you die.
Radiation: Yet another time-damage. Being radiated makes you loose Consciousness and Body really slow.
Fire: Being in fire adds to the fire-time-damage value. Loosing Body fast.
Acid: Similar to fire, but can’t be shaken of with movement. Also there are no flames coming from you, more like smoke (from your flesh).
Combined:Zombie bite: Zombie Poison + Slash
Explosion: punch and fire
Display of this health system Unlike my previous games, I want to hide the numbers by displaying the bars. However displaying 5 bars doesn’t sound like a great idea. It may frighten the casual gamer. I've come up with this: An advanced and a simplified view. The advanced view displays all the bars (5x) and the simplified combines some values. Protection and stamina are standard values so I display them with no modification. Health is computed by Body * Blood * (Consciousness * 0,5 + 0,5), assuming that all values range from 0 to 1. If you have come to this point I must congratulate you. I believe this is my longest post ever :)
So… What do you think? Have I overcomplicated things or could this system work, or perhaps event make the game more realistic but still keep the game-play? Do you have any suggestions that could make this system better? Or should I really ditch this new idea and use the old (boring) but classic hp/armor system like I always used to?