Outerra forum

Outerra Engine => Technology => Topic started by: McArcher on August 24, 2010, 10:49:00 am

Title: Damage system
Post by: McArcher on August 24, 2010, 10:49:00 am
Will objects in Outerra's world be able to be damaged? I mean such objects as vehicles and buildings. Not just 1-to-0 damage like im many games, where object change the texture and draw a fire and smoke, but realistic physics instead.

Will they be able to break into parts with some physics simulation (maybe inverse kinematics or someting else)?
It would be great to have a simulation of different material types and "connections" between parts of object or particles to simulate destruction or damaging.

It may be useful for unreally realistic MilitarySim game to simulate differently armored zones of armored vehicles.

For example, for modern tanks we need a lot of types of objects:

1. Simple armor (which will be used to calculate, whether the projectile penetrates the armor or not) of different types (may have a "strength" parameter in "mm of steel xxx equivalent" which will combine thickness of the armor plate and its penetration capabilities);

2. ERA (explosive reactive armour), it is a plate or a box, which is "one-time-used" to defend from cumulative projectiles. After being hit, its box must be drawn damaged or may be thrown away or just deleted from the tank model, making this zone vulnurable to next hit into it.

And about tanks, BMPs, APCs and so on...
Many of them do not need many braking parts, they are not cars. They need, for example:

1. Two detachable tracks (which will make them not able to move) [cars need wheels with ability to be leaking the gas]
2. Hull (it can only change the texture, for example),
3. Optional ERA boxes and plates on hull which will dissappear or change model to damaged after explosion,
4. Turret, which will be able to fly away when there is explosion of ammo in tank (ammo is placed for example either in turret in american Abrams, or in tanks bottom and other places in other tanks),
5. Optional external optical and other systems damage (which will disable some features of tank crew).
6. Zone which when damaged modofy behaviour of a vehicle (engine zone, ammo, fuel tanks, ... )

External systems of a tank is another big question, and it can be discussed in separate threads, because modern tanks have gun, rockets, machineguns, smokes, Laser-detecting systems, IR-noise systems, thermal view, nightvision, counter-projectile systems ans so on  :)

Concerning buildings, parts maybe:

1. main walls, which hold a building,
2. secondary walls, ladders, roofs, which may be damaged without building falling,
3. windows
Title: Damage system
Post by: cameni on August 24, 2010, 03:13:03 pm
Clearly this goes beyond engine functionality, this is all specific for a war game.
Outerra mainly provides the space and detail for various planetary scale games, but we cannot possibly cover the functionality of those games. We could perhaps talk about the engine functions required for support of the features mentioned above, but that would be more technical discussion.
Title: Damage system
Post by: McArcher on August 24, 2010, 04:06:09 pm
I think for enabling damage, the engine needs to have special object models for vehicles and buildings.

All objects of Building_class or Vehicle_class will contain sub-objects. Type of connection between sub-objects will depend on their types. For example there can be 2 base subclasses: Dynamic_Parts and Static_Parts. This needs many examples to make it clear.

(Just an example)

1. Buildings will have 3 sub-types of those 2 types of objects, mentioned above (main walls, secondary objects and windows). Most sub-objects of a Building will be static, they won't move in ordinary life. They can be moved only after an explosion or collision with a heavy vehicle. Dynamic parts for buildings are very optional. For example, doors or windows that will move, slide and so on when they should (by a script or a code). One wall, for example can contain several sub-objects that will fall when "something bad" happens with this wall. The more sub-objects, the more realistic damage will be.

Building_class-> Static_Part_of_Building_class -> Main_Wall_class;
Building_class-> Static_Part_of_Building_class -> Secondary_Wall_class;
Building_class-> Dynamic_Part_of_Building_class -> Window_class;
Building_class-> Dynamic_Part_of_Building_class -> Door_class;

All the connections between sub-objects are made by a physics engine. I don't know, whether it will be in "clear" Outerra.

2. For vehicles, also 2 types: Dynamic and Static. Dynamic will be wheel, track, door, turrets, guns, special armored plates on windows and so on... Static are main body or hull, special armor types (ERA box) and so on. Here we can go much further, but it's not our task now.

For sub-objects of a static class, their position will be fixed in object's settings. For dynamic objects must be given "special points" for different objects. For example, door needs an axis to rotate, tank's track needs "wheels" to rotate around them and so on...

The Outerra engine must give a possibility to add own classes to dynamic and static classes and change their behaviour.
The damage process will be calculated by both objects collided, using their class actions. For example, a tank will have no damage if collided with a small auto, but an auto will be damaged.

Maybe, to simulate automobile damages, their body won't be static class as a tank's hull, or will contain several sub-parts, that will change connections between them after collision.

All I'm talking about is a phycics engine that will support sub-parts of an object of different types. All other things may be calculated by plugins/addons. For example, in fishing simulator the car will be able only to puncture tires, whereas in military simulator car can be made a tin can by a tank...

Will the physics engine (or its basics like sub-parts of objects) be in Outerra?
Title: Damage system
Post by: cameni on August 24, 2010, 04:26:49 pm
Yes the physics engine is integrated, because we need to provide effective collision checking with terrain. It can be used for the purpose you have described.
Title: Damage system
Post by: McArcher on August 24, 2010, 05:48:06 pm
I have one more question concerning behaviour of vehicles and buildings.
Will there be a possibility to simulate detached parts?

For example, I'm driving a car at high speed, then I open the door and it hits a street lamp or a tree at high speed. The physics engine calculates that the collision with the door was with the force, which is more than critical parameters for such door (stored is door object) and door object will be removed from vehicle's object (changing neccesary parameters). Door now becomes a part of environment, like stones, birds and rabbits :D and falls to the ground. So, vehicle looses an object and environment gains one, but with simplified parameters, because it is no longer part of a vehicle.

Is that possible?
Title: Damage system
Post by: RaikoRaufoss on August 24, 2010, 05:53:02 pm
Say that a meteorite or other heavy object falls to the ground and makes a crater.  Will Outerra simulate that as well?
Title: Damage system
Post by: cameni on August 25, 2010, 01:49:13 am
Quote from: McArcher
Will there be a possibility to simulate detached parts?
...
Of course it's possible, but the engine won't be universally managing these objects - the game has to decide which parts it keeps in the environment, as the object numbers may grow out of proportions, and memory and CPU cycles aren't free.
The engine just integrates the physics because for managing collisions within such large environment it's essential, but managing how the collisions are handled beyond standard rigid body physics is on the game code.

@RaikoRaufoss You mean simulation crater creation from impact vectors? No, unless there's a possessed crater guy giving us a chunk of money to just have it there :)
Others will have to settle for random parametrized crater creation.