Jump to content

Collision damage - workaround suggestions


TheRealBeowulf

Recommended Posts

I completely back NQ decision to have no collision damage in the game. Although cool, it very rarely works well with voxels, and it is never ever cheap in terms of calculations. Just look at the mess that is Space Engineers - any kind of collision and you drop frames like nothing I've ever seen before. 

Link to comment
Share on other sites

@semproser:

So you are basically saying, that weapon damage is also not going to work?

Because that is a planned feature and will also work with voxels ;)

 

I really don't want to offend anyone, but I start to feel like I'm talking about bananas while you are talking about apples - both are fruit, but don't have much more in common :)

 

Realistic collision damage is definitely not going to be in the game.

I totally agree with you, that this would be a huge problem for the server, that is why this post is about workarounds - I'll try to rename the topic :)

Link to comment
Share on other sites

 

Last but not least, the main reason for me to still hope for collision damage as a feature is the immersion and the engineering aspect of ship building:

-          No collision damage would also mean no fall damage for constructs. This could also lead to a very carefree piloting style, which is also not very immersive.

-          dropships (or drop pods and other single-use landing devices) could in theory just be simple “boxes” without engines, and would still fulfill their purpose. This would, in my opinion lead to some disadvantages for people who are more into proper built constructs with proper systems.

 

 

 

I'm not so sure that fall damage cannot be implemented if CvsC collisions aren't in the game, if that's what you're getting at. It seems that a calculation to determine impact with the ground could be simplified (impact speed > xxx amount = damage). Again--I'm not certain, but I think this is different than CvsC collisions and implementing voxels being destroyed, area of impact, destroying/editing construct/terrain based on impact, etc. 

 

Regarding collisions in general, I'm happy with the decision not to implement CvsC collisions. I forsee way too much trolling if that wasn't the case, especially when it comes to people flying ships into buildings. Additionally, if they were to implement a collision system that required massive amounts of armor that essentially made it not feasible (compared to other crafts), then why even have it in the game? If there is such a disadvantage to creating a 'ramming ship' (which I agree, there would need to be), only very few people will make one at all. At least, I think.  At that point--it seems better that the time/resources are spent elsewhere.

 

Just my .02. This is a great thread, and I appreciate the format you've established for the discussion. 

Link to comment
Share on other sites

@schoff:

 

Your idea for the fall damage is basically what I had in mind too, except that I would add construct mass to the calculation, so it would be more adaptive to the different ship sizes.

 

About the CvsC collisions: I don't know if we can look at them as different to fall damage, because everything in the game world, including planets are basically voxel constructs.

So I would assume that fall damage is not different from CvsC collision damage.

 

Like I said in my first post, the main reason why I actually hope for collision damage is not so much about the battle / ramming aspect, It's more about a general more realistic / natural gameplay feeling.

To me it would feel much more immersive if pilots would actually have to take care of where they are going.

I also think that it would add more aspects to engineering and scripting - not only for drop pods and dropships, also auto-pilot scripts would be a very good thing too, as they could help pilots with docking or avoiding collisions (no real need for that, if there's no damage...).

 

I generally would assume that the risk of taking damage trough collisions would lead to a ship building and piloting style, that's more like what you would expect it to be like for spaceships. Having lots of people just carelessly flying into every obstacle would most likely be kind of immersion-breaking to me... :)

 

The risk of heavily damaging your own ship would make ramming more like a last option than a common thing - which should be good thing in terms of balancing and would possibly make it too costly for trolls.

The tradeoffs in terms of armor, energy, maneuverability and weapon loadout would make ramming ships vulnerable to more nimble ships, so they would have serious downsides too and won't be some kind super weapon or the only ship type we would see.

 

I'm glad that you like the format :)

Link to comment
Share on other sites

About the CvsC collisions: I don't know if we can look at them as different to fall damage, because everything in the game world, including planets are basically voxel constructs.

So I would assume that fall damage is not different from CvsC collision damage.

 

Like I said in my first post, the main reason why I actually hope for collision damage is not so much about the battle / ramming aspect, It's more about a general more realistic / natural gameplay feeling.

To me it would feel much more immersive if pilots would actually have to take care of where they are going.

I also think that it would add more aspects to engineering and scripting - not only for drop pods and dropships, also auto-pilot scripts would be a very good thing too, as they could help pilots with docking or avoiding collisions (no real need for that, if there's no damage...).

 

 

 

I realize the terminology may not be correct, but it seems there is/should be a difference between fall damage and collision damage. The differences seem obvious enough, but implementing a system to differentiate collision vs. fall damage may be a  problem. For me, though,  it seems more important to implement a system to capture/inflict fall damage. As you said--you shouldn't be able to drop out of a ship and take no damage. This is where a simple 'fall damage calculation' could kick in. But then it becomes difficult to differentiate falling verse colliding. Maybe it's only when a player (not construct) hits a surface. Instead of looking at it on a construct level.

 

Regarding CvsC collision damage -- I completely agree that zero implementation would take away from players having to act with a certain level of care. Maybe they can come up with a more simple system to damage the functionality of certain aspects of the ship. For instance, if you hit your main engine (or in the area), your engine's maximum power would be reduced by a certain percent. This would scale down to a minimum level, depending on the amount of damage. So, no changes to voxels, but collisions still having an effect on a ship's performance. They could apply this to other aspects of the ship, like thrusters used for turning--damaging them would make you turn less effectively, or certain weapon systems (overheating, rate of fire adjustments, etc). Then, to address performance, you can make the collision system only process this calculation if the collision was hard enough. So, now the system isn't overloaded with minor collisions that would deal 0 damage. Just a thought.... and I have no clue if that's possibly to implement in a way that isn't too resource intensive. But surely, it's better (from a resource perspective) than having to calculate voxel damage/destruction.

Link to comment
Share on other sites

The only thing that worries me about not having any kind of collision damage is that it negates the need for skilled ship piloting. I can already see hundreds of players just bouncing their ships around in cities, spaceports, and starbases just for the heck of it... ick.

Link to comment
Share on other sites

@sualretav:

That's one thing I'm also a bit afraid of :)

 

@schoff:

I agree on the most points, but why only apply damage to elements and not to voxels, if the weapon damage model already supports voxel damage (from what JC Baillie said in the AMA video, this is what they are aiming for)?

If you can shoot a hole into a construct, why not let collisions do the same?

It may also be easier to just use this system, because it would not require much additional code.

 

I also agree that there should be a lower limit for collision damage, so that impacts below, let's say 10m/s, won't do harm - so you could safely dock or land.

Link to comment
Share on other sites

The only thing that worries me about not having any kind of collision damage is that it negates the need for skilled ship piloting. I can already see hundreds of players just bouncing their ships around in cities, spaceports, and starbases just for the heck of it... ick.

We minus well not have brakes. The asteroid/planet/that dudes ship is your brakes!

Link to comment
Share on other sites

I agree on the most points, but why only apply damage to elements and not to voxels, if the weapon damage model already supports voxel damage (from what JC Baillie said in the AMA video, this is what they are aiming for)?

If you can shoot a hole into a construct, why not let collisions do the same?

It may also be easier to just use this system, because it would not require much additional code.

 

This is where I believe it becomes too demanding on the client/server to process all of that information. You can imagine the physics needed to calculate the damage caused by CvC, especially when trying to simulate the result on a voxel level. Which is why I was suggesting a more scaled down version, that looks to certain components and changes their values, instead of making things graphic heavy. But, even with "my" system, it doesn't mean it's still doable from a technological perspective.

 

End of the day--of course they could implement CvC damage. But it would tank the server and performance. Just as a free-shooting system isn't really possible, and they need to instead use a target-lock system.  At least, that's they way I understand it.

Link to comment
Share on other sites

You can try having a mass to mass comparison between two ships to determine a "core overload" explosion happen.

E.G. if a starfighter crashes on a battleship, the starfighter explodes.

This mechanism can be used to "overload" the enemy ship.

If two same sized ships collide, both get obliterated. That's physics and it's realistic. 

The problem with that? No wreck is left behind, nothing can be salvaged.

If suicide attackers were to do so, they would have no ship to salvage. So, it's not a viable tactic.


But for war tactics, there need to be a skill points penalty when you die, so people will not abuse the mechanism without repercussions.

Link to comment
Share on other sites

@schoff:

Okay, now I get your point, but maybe you got me wrong on that point.

Voxel damage doesn't necessarily mean, that the engine would have to do additional physics-calculations (or physics calculations at all).

I'll bring back my original post on that to explain it:

 

Collision damage workaround idea – recycling code that already exists / is planned:

 

Caution! Another long post ;)

 

As NQ said, collision damage might still make it into the game, if a less-costly (in terms of calculation power) workaround is found.

My idea on this topic is: why not try use features that already exist / are planned for the game?

 

The following suggestion is not about an accurate simulation, but hopefully it’s easy to do.

As always: please correct me if something is wrong or has been changed!

 

First, what do we need:

 

 

- The game engine does collision checks anyways, enabling core gameplay features like walking on / landing constructs on the ground or other constructs (touching==collision) this has already been showed in multiple gameplay videos. -> So I’d suggest that collision points are basically already there :)

- The damage system JC talked about is relatively accurate for weapons, (specific points of constructs can be targeted). Also different values like material, shields, angle and player/weapon stats will be used to calculate the amount of damage, which will be applied by something like a “damage sphere” (radius might also depend on the said values). – also already planned :)

- Next thing: ship movement (direction, speed) - probably no problem to calculate

- Last but not least: the mass of the colliding constructs. As the mass is said to be used for flying-physics, I would suggest this is also something the game already “knows”

So, we should have the point of collision, the code for damage sphere calculation, relative construct speed and construct mass.

 

I suggest that the damage spheres are not only affecting one construct, but everything in their range (JC mentioned that players inside the damage bubble would also take damage).

If it’s like that, I would suggest using the mass of the smaller construct for the calculation (otherwise, for example the collision with a planet would always cause mass destruction J ).

 

So, you could basically use the relative speed and mass of the constructs to calculate a damage sphere, which is generated at the collision point – and that’s basically all.

 

This idea isn’t about a realistic simulation and doesn’t include realistic movement after collision, e.g. two ships drifting apart after impact.

Also, turning speed / movement wouldn’t really matter (-> a cruiser turning on point without moving in any direction could possibly wipe a nearby smaller ship away, causing no damage because V==0).

 

Additional Limitations

In addition to the above, I would suggest that setting some limits could be useful:

- Lower speed limit: collision damage might not be a thing below a specific speed (e.g. 10m/s), so that small collisions and docking maneuvers don’t do harm (reducing server load)

- Maximum damage limit: limits the size of the damage sphere / damage amount to a limit that the game can handle (collision of a death star and a planet would otherwise cause a lot of server load)

- Minimum mass: this could be used to prevent small projectiles / debris from doing any damage, so they won’t be an issue (-> should be below the minimal mass of a complete small ship to avoid unfair advantages)

Greetings

 

TheRealBeowulf

The weapon damage model Novaquark is aiming for has to be stable, even in large battles, with possibly thousands of hits per second, all potentially causing voxel damage - so I would assume this is not too costly in terms of calculation power (JC explains the plan in the AMA video at about 10:00).

My idea was to simply use that system, because if it is stable enough to handle thousands of shots, it should easily be able to handle a similar amount of damage points in collisions.

The amount of damage that weapons do will be defined by weapon stats and player skills - I would assume that just using relative speed and mass instead of these values shouldn't be a problem.

Collisions are also already checked by the game, otherwise ships would just fall through the ground or platform instead of coming to a stop - in one video JC landed on the space station, so I'd say this is confirmed too.

Ship mass will be used for flying physics, as this is necessary to determine how fast you can move with the engines you have, so it's also already there.

The game will also have to keep track of the ships movement vector, otherwise it wouldn't be able to determine where it is and where it is going, so the relative speed of two constructs should be very easy to calculate (basically just using two vectors).

 

So, for that you would not need any additional physics-calculations. This method is also not capable of calculating realistic movement after impact.

From what I've seen in the official gameplay videos, ships do already stop or slow down if they collide - the system I have in mind would simply add some damage, which is based on the weapon damage model, to this already existing feature.

 

So, no heavy physics calculations at all. :)

 

@captaintwerkmotor:

This core-damage model could also be an option.

 

In addition to the mass to mass comparison, you would need the collision point (to determine if the constructs are touching), and the relative speed to set the amount of damage (otherwise the constructs would also explode in collisions at walking speed).

Link to comment
Share on other sites

Besides the exploitable points I mentioned earlier - I have another objection (though it would be hilarious for me to do it)

 

Imagine a spacestation with lots of automated defenses or run by players. OFC there is a script running which detects criminals who damage the station/other players constructs/players in and around the station in order to flag them and kill them. I, as the bad griefer I am, would just wait for a good target (large ship, expensive cargo,...) and ram it. Will the script know that I did the damage initially? Or will it just kill us both? If it CAN distinguish that damage, then I just ram that ship so hard it gets flung at the station and does damage to the station - now he is flagged too, killed and I can loot him. Or a third character involved that is.

Link to comment
Share on other sites

a couple things, technically collision happens already (if it didnt you would go through what ever your not colliding with) the problem lies with scripting something other then stopping the moving object. this requires logging speed trajectory ect ect. what really bogs the server is then changing that info into damage. for instance if you just made the ship blow up when it touches something that would be not too labor intensive. what you want is the wing to come off though and that requires algorithms. 500 ships crashing into a death star at the same time is gonna cause bogging. 

actual workarounds might look like if 2 ships are within a reasonable threshold of eachother then they both blow up. not too labor intensive so far. if one ship is far smaller then the other is leaves damage equal to the diameter of the small ship in the larger, this would look like a grenade exploded on the surface. while this would make the best case scenario for optimal fps 500 grenades exploding  in frame would also be laggy.(albeit less) negative aspects are your wing hits a mountain your whole ship just blows up. among other odd looking things.

we are NOT going to have exactly what you guys want, its just not feasible until hardware increases (not even entirely a server problem at that point)

Link to comment
Share on other sites

The reason large scale battles can work is because it occupies a large space and tons of players. This means that a large battle will happen not on 1 single server but many, enough to calculate all the thousands of shots and voxel destroyed. Collision damage happens all in 1 place, 1 server and it creates a lot more load, since ramming 1 ship create multiple points of contact, it's not a single collision. It would be hard to make realistic and balance. Other than that, novaquark is going more towards a reactive type of combat, since the technical limitations on the update rate, and collision damage is not somehing you can react too.

As much as i would like to build my own torpedoes, for the moment I agree with nq

Link to comment
Share on other sites

@shynras:

I'm not that much into coding, but what makes you think that multiple collision points would be harder to calculate / balance then multiple hits caused by guns?

If the load of weapon damage can be shared between multiple servers, why should that not work for collisions, as the the cloud system of DU is very flexible? Also, there could possibly be hundreds of weapon hits on just one construct - how would that be different from collisions?

Large battles could also take place in a very limited space, so I don't see the difference - maybe you could explain your idea a bit more in detail, because I can't really follow you?

(no offense, I'm just really curious about that topic :) )

 

Also I would assume that a single collision does not cause as much collision / hit points as a battery of turrets potentially could.

 

A construct would most likely just stop once it hits another, so basically just the first point of contact would be used for damage calculation.

If there are multiple points, maybe there could be a max. number of collision points per second?

Link to comment
Share on other sites

@shynras:

I'm not that much into coding, but what makes you think that multiple collision points would be harder to calculate / balance then multiple hits caused by guns?

If the load of weapon damage can be shared between multiple servers, why should that not work for collisions, as the the cloud system of DU is very flexible? Also, there could possibly be hundreds of weapon hits on just one construct - how would that be different from collisions?

Large battles could also take place in a very limited space, so I don't see the difference - maybe you could explain your idea a bit more in detail, because I can't really follow you?

(no offense, I'm just really curious about that topic :) )

 

Also I would assume that a single collision does not cause as much collision / hit points as a battery of turrets potentially could.

 

A construct would most likely just stop once it hits another, so basically just the first point of contact would be used for damage calculation.

If there are multiple points, maybe there could be a max. number of collision points per second?

The fact that you mention not being into coding kind of undermines your argument, which really boils down to "how hard could it be?"

 

Without much coding experience, you and I have NO CLUE how hard it could/would be. So it might seeem like a small feat with no experience, however I've seen games that tried this, and that succeeded in their own ways, but are NOT stable with 8 players in one game.

Link to comment
Share on other sites

Combat is targetlock and doesnt have real projectiles if i understood correctly. You target a construct, a random voxel gets selected and an aoe around it damages nearby blocks. Alternatively you can target a specific element on the construct you're shooting at, and an aoe will spawn on them. So there's no calculations or collision involved in the actual combat tbh regarding positions and collisions.

Real projectiles would have been problematic as collision damage would.

Link to comment
Share on other sites

Combat is targetlock and doesnt have real projectiles if i understood correctly. You target a construct, a random voxel gets selected and an aoe around it damages nearby blocks. Alternatively you can target a specific element on the construct you're shooting at, and an aoe will spawn on them. So there's no calculations or collision involved in the actual combat tbh regarding positions and collisions.

Real projectiles would have been problematic as collision damage would.

Rust has this problem, as they track projectiles. When some "large" raids occur, the server gets some pretty serious lack from tracking projectiles alone!

Link to comment
Share on other sites

@wizardoftrash:

Okay maybe I should have explained that a bit more in detail...

By saying "I'm not that much into coding", I actually meant, that the terminology of programming languages is something I'm not good at.

I do know how programming basically works, and I do understand the principles of vector math, functions, and variables.

I must admit that I have no idea of how voxels work in detail, but that might be true for the most of us, since nobody has described in detail why he thinks that this specific collision damage workaround would be such a problem.

Most of the comments just say its too costly, or just refer to other games, which use a completely different method.

 

Since the things that I'm talking about mostly involve features and code that are already in the game / are planned, I relly think I don't need to know how they work in detail, because in my suggestion they could basically be used as they are.

For example: I don't need to know how exactly the engine does its checks for collisions, It's enough to know that it does. And because it's a 3d environment, I am pretty sure it uses vectors and coordinates to achieve that, so there already has to be a coordinate for a collision point, that can be used as a starting point for damage calculations - same applies to the relative speeds.

It might seem to you, that I'm a bit stubborn at this point, but as long as nobody can tell me how else it works and proves me wrong, I don't know why I should think it doesn't work like that.

 

Until now, all other opinions on that matter were also just based on assumptions, and in my opinion that's absolutely okay for such a discussion at this time. This also probably won't change unless somebody from Novaquark decides to join the discussion :)

 

@shynras:

I actually watched the AMA video again to make sure I didn't get something wrong.

JC says that players will be able to aim at a specific point (not only element) and based upon some stats and calculations, a damage area is generated around this point - so this does actually mean that it is about a physically present damage area. He also says, that players which are in this area will also die / take damage - so I assume that the "damage sphere" will most likely damage everything that's in it.

So this could potentially be used as I said, you would just have to replace the point that the weapon is aiming at with the collision point.

Then you just need a way to define the amount of damage (maybe use relative speed and construct mass for that, as the vector calculations for that are basically simple), and that's it.

 

So, if you think that's not going to work, please tell me at which point of my suggestion I have made the mistake.

 

I really want to keep this discussion on a constructive level, but I still feel like we're talking past each other most of the time.

Link to comment
Share on other sites

@schoff:

Okay, now I get your point, but maybe you got me wrong on that point.

Voxel damage doesn't necessarily mean, that the engine would have to do additional physics-calculations (or physics calculations at all).

I'll bring back my original post on that to explain it:

 

 

The weapon damage model Novaquark is aiming for has to be stable, even in large battles, with possibly thousands of hits per second, all potentially causing voxel damage - so I would assume this is not too costly in terms of calculation power (JC explains the plan in the AMA video at about 10:00).

My idea was to simply use that system, because if it is stable enough to handle thousands of shots, it should easily be able to handle a similar amount of damage points in collisions.

The amount of damage that weapons do will be defined by weapon stats and player skills - I would assume that just using relative speed and mass instead of these values shouldn't be a problem.

Collisions are also already checked by the game, otherwise ships would just fall through the ground or platform instead of coming to a stop - in one video JC landed on the space station, so I'd say this is confirmed too.

Ship mass will be used for flying physics, as this is necessary to determine how fast you can move with the engines you have, so it's also already there.

The game will also have to keep track of the ships movement vector, otherwise it wouldn't be able to determine where it is and where it is going, so the relative speed of two constructs should be very easy to calculate (basically just using two vectors).

 

So, for that you would not need any additional physics-calculations. This method is also not capable of calculating realistic movement after impact.

From what I've seen in the official gameplay videos, ships do already stop or slow down if they collide - the system I have in mind would simply add some damage, which is based on the weapon damage model, to this already existing feature.

 

So, no heavy physics calculations at all. :)

 

This is a good point and leads me to believe that NQ's decision is heavily influenced by not wanting griefers, and less about whether it's possible from a resource/server stability perspective. I can't say I disagree with them -- but, as we discussed, I would love to see some type of damage model for certain aspects of the ship to avoid players flying around without a care.

 

Great chat -- I'm going to sign-off from this thread. Let's hope NQ sees this and does something of the sort!

 

 

o7

Link to comment
Share on other sites

Actually it sounds more like an Area of Effect. In your damage example, I dont see how that is a physically present thing.

 

AoE's dont have to be physical no?

Okay, my description may not have been the best one... :)

 

What I wanted to say is that this AoE is planned to physically affect voxels (-> voxel destruction), so it can blow a hole in a construct.

Link to comment
Share on other sites

Okay, my description may not have been the best one... :)

 

What I wanted to say is that this AoE is planned to physically affect voxels (-> voxel destruction), so it can blow a hole in a construct.

Aha I get that.

What I dont get is how you would use that for collision.

 

But aside the tech limitations on wich we are clueless. I think it might be more interesting to discuss what adding it would bring to the game.

 

I understand you dont want people to fly around like idiots. But most people are average and as such I think you would create a lot of frustration if something like landing would make you blow up.

 

Or having to continually repair your ship for something as trivial as bumbing into things.

 

:)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...