Jump to content
  • Advertisement

Archived

This topic is now archived and is closed to further replies.

Knarkles

Space strategy damage model

This topic is 5284 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

We are creating a real-time space strategy game focused solely on combat (ie. not base building or resource gathering). The combat needs to be a bit more tactical and have more depth than a "normal" RTS since it''s the main element of the game. I have been thinking about the weapon and damage model of the game. I wanted it to be: 1) Complex enough to provide enough variety and not be too predictable 2) Simple enough to present so the player is not overwhelmed with information (the player will be controlling a large number of ships) 3) Free of hitpoints (ie. no ships with 150/200 floating above them) Here''s what I have thought. I''d welcome comments, opinions and suggestions. Each ship has a number of subsystem. Each subsystem is located in a level (inner, outer or surface) of the ship, which affects how easy it is to damage. Eg. weapons and engines are always on surface, command center and reactor will usually be in the center of the ship. Each subsystem also has a size, which affects the probability it is hit. Each weapon is also a subsystem. When a weapon hits a ship, first the ship''s armor (and maybe some subsystems such as shields) detracts from the damage based on armor thickness and the weapon''s armor penetration rate (maybe I should also take the hit angle of the weapon into account?). The remaining damage is assigned to a random subsystem. Based on the amount of damage and damage type, there''s some percentual chance that the subsystem is damaged (eg. an explosive round would do more internal damage than an armor piercing one). There are a few different damage levels for each subsystems, such as "None", "Minor", "Moderate", "Severe", "Critical" and "Destroyed". If there is enough damage left, other subsystems might also be damaged. Here are some concerns and things I haven''t yet decided: - How is the amount of damage mapped to damage levels? Maybe each damage type should have a table of percentages for some damage levels. Such as: >10 damage: 5%, >20 damage: 10% etc. But this just doesn''t seem right. Or maybe have a specific amount of damage cause the damage levels, eg. 10 damage = minor, 20 damage = moderate etc. This also doesn''t seem right... - How to present this to the player? I have a few ideas: First, different subsystem types could have a colored bar which shows the average condition for that type subsystems (eg. green bar for full health, orange bar if half of the subsystems are destroyed). The ships could also show damage graphically, ie. fires spewing out, sparks, smoke, burn marks etc. Any other ideas? -Jussi

Share this post


Link to post
Share on other sites
Advertisement
quote:
Original post by Selkrank
When a weapon hits a ship, first the ship''s armor (and maybe some subsystems such as shields) detracts from the damage based on armor thickness and the weapon''s armor penetration rate (maybe I should also take the hit angle of the weapon into account?).



Why not have two stats for weapons penetration and damage, if penetration > armors resistence then the weapon penetrated the armor and caused damage. If its less then the weapon doesn''t pierce the armor and causes damage to the armor instead.


quote:

Here are some concerns and things I haven''t yet decided:
- How is the amount of damage mapped to damage levels? Maybe each damage type should have a table of percentages for some damage levels. Such as: >10 damage: 5%, >20 damage: 10% etc. But this just doesn''t seem right. Or maybe have a specific amount of damage cause the damage levels, eg. 10 damage = minor, 20 damage = moderate etc. This also doesn''t seem right...



You could have a simple scale from 0 to 11.
0 = no damage
1 = minor
3 = moderate
6 = severe
10 = critical
11+ = destroyed

Then damage consist of Power, Size and type, where:
Power = the strenght of the weapon
Size = the size of the weapon impact.
Type = the kind of damage the weapon inflicts

so a laser might look something like this 5SE10, 5 = power, S = size - small, E = type - energy, 10 = penetration.

Then you compare it to the subsystems resistence and size. You then compare the weapon size to the subystem size, and adjust the base damage level accordingly.

Weapon Size compared to subystem size
2 or more lower - minor
1 lower - moderate
= - severe
1 higher - critcal
2 or more higher - destroyed

Then you make compertive test comparing weapon power to subsystem resistence. Every Two success the weapon gets over the subystem increases the damage level one level, each two success over the weapon the subsystem gets decreases the damage level one level.

That gives the final damage which is then applied to the component. Damage is cumaltive, so two moderate injuries would total six damage points and the subsytem would have severe damage.


And example hit would look like this.
Weapon Laser 5SE10
Subsystem Engine 10L

Step 1
base damage is adjusted to minor.

Step 2 competive test
Laser gets 3 success
Engine gets 1 success

Step 3
Final damage of moderate is appiled to the engine.

quote:

- How to present this to the player? I have a few ideas: First, different subsystem types could have a colored bar which shows the average condition for that type subsystems (eg. green bar for full health, orange bar if half of the subsystems are destroyed). The ships could also show damage graphically, ie. fires spewing out, sparks, smoke, burn marks etc. Any other ideas?



You could have a cross section of the ship where each subsystem is clearly visable, and color coded according to its damage level.


-----------------------------------------------------
"Fate and Destiny only give you the opportunity the rest you have to do on your own."
Current Design project: Ambitions Slave

Share this post


Link to post
Share on other sites
In WWII, one of the biggest advantages the American fleet had over their Japanese counterparts was the skill, dedication and organization of their damage control teams.

If a fire reached a major magazine, it was usually game over for the ship, but a dedicated damage control team can prevent fires from speading.

Managing your damage control teams could add a lot of depth to the battle. Do you have them bring a weapon back online, or get them to put out a fire near a reactor?

Share this post


Link to post
Share on other sites
This is interesting. I would go for a hyper-realistic approach to this game. Lasers are instantaneous and hyper-accurate but very weak and consume tons of energy, armour can be dark (and thus difficult to study) or glossy (and thus laser resistant). Repairs/replacements done on the fly. Hypervelocity cannons rip through the hull where they hit, but are less accurate and instantaneous. Railguns fire microscopic projectiles at superhigh velocities, but are astronomically energy expensive to fire - their main use is for picking off systems buried deep within an enemy ship. Nuclear weapons are increadibly powerful, but can be simply shot down with light hypervelocity cannons or laser fire.

As I understand what you're describing, you physically model the ships as layer upon layer of destructible components - many of them unimportant features like armour, water resevoirs (used both for lifesupport and fusion fuel). For example, the main laser core is internal, but has pathways to the surface of the ship via sets of mirrors, and a mirrored actuators on the surface aim them. You can destroy the mirrors or dig your way through the enemy ships with heavier fire to try and break the internal mirrors or the main laser assembly. Rather than simple "armour layers" you could just use tons and tons of small, destructible subsystems that are of varying importance - many of them like armour have no importance at all but pentration resistance. Maybe even allow players to design these ships themselves, physically building them out of blocks of parts.

Some thoughts on physics: due to bizarre quantum effects, lasers technically have negative temperature on the inside of the assembly (from a quantum perspective, not a newtonian perspective). Thus, they are sometimes used for coolant in the real world. This would be a cool effect for your reactor. Next, use real inertial physics. It would be fun to have to worry about having enough thrust energy to brake your rotation.

Be realistic - if you can see the surface, you can see what's on the surface. Any system on the surface of an enemy ship can be identified and thus blasted. So, you conceal what you can and show your cards when you need to. Rotation is a big concern - this isn't a boat where the'res a "this side up" - you will have to consider which side of your ship you present to your enemies. Thruster orientation is a similar issue. If a ship was armed with a powerful reverse thruster, they could fly at their target, turn around, and then drop heavily armoured nuclear bombs while thrusting away and the inertia carried them towards the target.

Moving will be a massive asset. While you will not be able to prevent your ship from being hit by hypervelocity projectiles, such projectiles will be fired at specific surface targets, so a little jinking will keep them hitting harmless space. Lasers are more problematic, which could be balanced out by making them weak and keeping your enemy busy with large numbers of small nuclear missiles that their lasers must shoot down.

Large area thermal weapons (plasma cannons, nuclear flak missiles) could be interesting, being able to bath the outer surface of the ship in low-level damage, possibly picking off external weapons. Ships would have to be able to hide or withdraw their weapons, or have replacements ready to pop up as needed. Alternately, there is the possibility of surface repair robots, but they could be easily destroyed by laser fire. Anything small and weak is laser bait. Perhaps rotate your damaged side away from the enemy while your men do repairs?

For GUI - I'd go for external view focussing on subsystem selection of your ship. I would think to be able to view your currently selected ship as a wireframe with its components displayed showing damage and other attributes via colour and small bars, so you could select deep-in components like the reactor and suchlike. Then, have a queuing/macro system so you can make complex commands and save them. Last, but not least, some system for creating "triggered events" - like selecting components of an enemy ship and telling your laser weapons "if this becomes visible and you have enough energy, fry it" since your reflexes may not be good enough to pick off the enemy components for the fraction of a second they are visible. The external view is left for ships you don't have selected and enemy ships.

Then, see if you can command three of these things at a time. Make the weapons and reactor rates really really sluggish so players have plenty of time to think and contemplate their doom.

[edited by - Pxtl on June 1, 2004 3:52:35 PM]

Share this post


Link to post
Share on other sites
quote:
Original post by Selkrank
1) Complex enough to provide enough variety and not be too predictable



I''m convinced for this that you''ll need facing and terrain, otherwise all battles will turn into turning battles or combat where units just sit next to each other and fire until someone dies.

quote:

2) Simple enough to present so the player is not overwhelmed with information (the player will be controlling a large number of ships)
3) Free of hitpoints (ie. no ships with 150/200 floating above them)



These two go hand in hand. What I need to know as a player (and what HP tells me at a glance is) how long can I keep using this unit, and if there is a choice to repair, how close am I to needing to consider it. However you make this happen, if there are multiple units and this is real-time, it has to be at a glance.

quote:

Each ship has a number of subsystem. Each subsystem is located in a level (inner, outer or surface) of the ship, which affects how easy it is to damage. Eg. weapons and engines are always on surface, command center and reactor will usually be in the center of the ship.



Just a tweak here: What about an armored shell where the engines and weapons are imbedded in the center of the hull, just like everything else. An arterial system of magnetic tubes moves both beam plasma and thrust from the center to the exterior of the ship. The exhaust ports can be hit, but new ports can be opened, thus making the engines and weapons safe (though less efficient). Under this scheme, all parts have a more or less equal chance of being disabled, but you''ve got to get through all that bulky armor.

quote:

When a weapon hits a ship, first the ship''s armor (and maybe some subsystems such as shields) detracts from the damage based on armor thickness and the weapon''s armor penetration rate (maybe I should also take the hit angle of the weapon into account?).



The way I''m going to do this is to consider facing direction and then probability of a strike into a port vs. hull. If your enemy hashave big, open engines on the back of his ship, it will be highly likely that you can send a shot right up their tailpipe. However, strikes from the front would never do this (unless it was something like a missile that passed the ship then exploded, or a weapon that ignored facing).

Then I do a penetration and material test vs. the type of weapon.

quote:

The remaining damage is assigned to a random subsystem.



If you do facing, it would be nice to group subsystems into quarters, and do damage only to quarters (or eigths or whatever) to give players a strategic reason for putting components in one place or another.

quote:

- How to present this to the player? I have a few ideas: First, different subsystem types could have a colored bar which shows the average condition for that type subsystems (eg. green bar for full health, orange bar if half of the subsystems are destroyed). The ships could also show damage graphically, ie. fires spewing out, sparks, smoke, burn marks etc. Any other ideas?



Ideally, I''d do physical damage textures to the model, and an icon system around or above the ship, with colors of red, yellow and green indicating health.



--------------------
Just waiting for the mothership...

Share this post


Link to post
Share on other sites
Thanks for excellent ideas and thoughts.

quote:
Original post by Pxtl
As I understand what you''re describing, you physically model the ships as layer upon layer of destructible components - many of them unimportant features like armour, water resevoirs (used both for lifesupport and fusion fuel). For example, the main laser core is internal, but has pathways to the surface of the ship via sets of mirrors, and a mirrored actuators on the surface aim them. You can destroy the mirrors or dig your way through the enemy ships with heavier fire to try and break the internal mirrors or the main laser assembly. Rather than simple "armour layers" you could just use tons and tons of small, destructible subsystems that are of varying importance - many of them like armour have no importance at all but pentration resistance. Maybe even allow players to design these ships themselves, physically building them out of blocks of parts.


Actually, I was thinking of only modeling the "important" subsystems. Maybe I should also make it possible for the shot to miss the important subsystems altogether. The same as with bullets hitting people: an armor piercing bullet that goes right through your body without hitting any vital parts (such as heart or lungs) isn''t very deadly, although it can be painful. But ships don''t feel pain.

quote:
It would be fun to have to worry about having enough thrust energy to brake your rotation.


I already have Newtonian physics implemented with a simple AI that can go to navpoints by only applying forces (main thrusters) and torque (simulating maneuver thrusters) on itself. It even works with any initial velocity and angular velocity.

quote:
Be realistic - if you can see the surface, you can see what''s on the surface. Any system on the surface of an enemy ship can be identified and thus blasted. So, you conceal what you can and show your cards when you need to. Rotation is a big concern - this isn''t a boat where the''res a "this side up" - you will have to consider which side of your ship you present to your enemies.


I was planning to do something like this. I don''t think the AI is going to be very easy to implement, however. I''ll try.

quote:
Thruster orientation is a similar issue. If a ship was armed with a powerful reverse thruster, they could fly at their target, turn around, and then drop heavily armoured nuclear bombs while thrusting away and the inertia carried them towards the target.


The ships are going to have equal strength forward and reverse thrusters so that the AI doesn''t have to turn around to brake. IMO, that would make things too complex. AI with Newtonian physics is hard enough as it is.

quote:
For GUI - I''d go for external view focussing on subsystem selection of your ship. I would think to be able to view your currently selected ship as a wireframe with its components displayed showing damage and other attributes via colour and small bars, so you could select deep-in components like the reactor and suchlike. Then, have a queuing/macro system so you can make complex commands and save them. Last, but not least, some system for creating "triggered events" - like selecting components of an enemy ship and telling your laser weapons "if this becomes visible and you have enough energy, fry it" since your reflexes may not be good enough to pick off the enemy components for the fraction of a second they are visible. The external view is left for ships you don''t have selected and enemy ships.


Well, I didn''t mention the scale of the game. A typical battle will have tens of ships, even over hundred per side. The ships are controlled as "task forces", so the player never commands single ships (even huge ships will have smaller ships as escort). Your (otherwise nice) queuing system etc. won''t work in that scale.

-Jussi

Share this post


Link to post
Share on other sites
quote:
Original post by Wavinator
I'm convinced for this that you'll need facing and terrain, otherwise all battles will turn into turning battles or combat where units just sit next to each other and fire until someone dies.


We will have facing. And formations. And weapons with different optimal ranges and other characteristics. And ships with different acceleration and maneuverability. I'm convinced we'll get it more tactical than point-blank shooting.

quote:
These two go hand in hand. What I need to know as a player (and what HP tells me at a glance is) how long can I keep using this unit, and if there is a choice to repair, how close am I to needing to consider it. However you make this happen, if there are multiple units and this is real-time, it has to be at a glance.


Of course. There must be some type of bar, such as one showing the average health of the ship's components. Or the average health of the task force's ships. Or something like that...

quote:
The way I'm going to do this is to consider facing direction and then probability of a strike into a port vs. hull. If your enemy hashave big, open engines on the back of his ship, it will be highly likely that you can send a shot right up their tailpipe. However, strikes from the front would never do this (unless it was something like a missile that passed the ship then exploded, or a weapon that ignored facing).


Hm, good idea. Maybe have a percentual chance for each facing (front, back, top, bottom, left and right) of the ship for a "critical strike" which ignores armor. Of course, engines and weapons already are "surface components" which are not protected by armor.

quote:
If you do facing, it would be nice to group subsystems into quarters, and do damage only to quarters (or eigths or whatever) to give players a strategic reason for putting components in one place or another.


Good idea, again.

-Jussi

[edited by - selkrank on June 2, 2004 1:06:39 AM]

Share this post


Link to post
Share on other sites

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!