Forums » Suggestions

Collisions

Dec 02, 2004 Celebrim link
There are a few things that all longtime players of the game can agree on. One is that the weapons are still not balanced. We may not agree on how to fix the problem, but we are pretty much all in agreement that a problem exists. But, that topic is for a long post on another day, preferably after my license levels get high enough that I can play with all the weapons again, get some PvP in, and so forth.

The other thing we can all agree on is that the collision resolution code is horrible. I think I speak for the entire Vendetta veteren community when I say I hate the collision code.

I have never been able to figure out what exactly is going on, even after having it partially explained to me by the devs. I even understand that if collisions are based on the server's understanding of your position, not the client's, that sometimes you are going to blow up when you didn't think you should (based on what you are seeing), and that sometimes you are going to escape with a small scratch when you should have blown up. All that's fine and understable in the light of the limitations of technology.

But even all of that doesn't explain the consistant backwardsness of the collision code. It might explain the occassional odd 'boom', but not that I could go head first into the face of a large slab sided roid at 160m/s+ and bounce off with minimal damage again and again, but that I clip something at 40m/s and take 100% damage. Maybe at one time you could partially explain this by the fact I was on a laggy dialup, but I'm on a cable and I only average about 60ms latency now.

Either there is a bug somewhere causing the code to behave in a manner that the devs both never intended and are completely unaware of, or else there is something seriously wrong in the design. I've died about 12 times over the past week or so. About half those incidents were collisions, and almost all of those involved impacts at under 65m/s. And yet I've survived several high speed impacts. The reason that the collision code is hated so much is not because it makes you spew to often, but rather that it seems to make you spew _when you don't deserve it_. This violates one of the basic rules of game mastering - never kill a character unless the player feels the death is fair. This means don't kill the character for things that they couldn't avoid (a random encounter), and make the mistake proportional to the punishment. For that reason, ANY system - even the most simple one we could devise - would be better than the current system.

Therefore, I'm listing in order of importance the things that I think most players would recognize as being piloting mistakes deserving of punishment.

1) The most important variable is relative speed. Players should see a direct and obvious correlation between how fast they are going and how much damage that they take. Only taking into account speed (and mass) to compute damage from a collision would be far better than what we have now. I ought to be able to conduct an experiment with a good flat surfaced ferrus 'roid, in which I take a bus and fly into the roid head on at ever increasing speeds until I find some range (say around 120 m/s) in which I always spew. If I fly into that same roid at half that speed, ideally I ought to take half (or less) that damage.

2) The second most important variable is angle of impact. Flying straight into something implies the biggest most asleep at the wheel sort of impact. Note that by angle of impact I mean direction of travel relative to the plane of the surface you impact, not the angle the ship makes with the surface. If I perform the bus experiment again, but instead of flying perpendicular to the face of the roid, I fly obliquely into it at 120 m/s, I ought to note that I almost always take major damage but generally survive. And I ought to note that if I fly into that 'roid with the same sort of oblique angle at a slightly higher speed, I always spew. If I flew into the 'roid almost exactly parallel to the face of the 'roid, I'd expect 'minimal' damage even at 200 m/s - every freaking time (tumbling aside, see below).

In the case of actual impact with an edge instead of a face, the face of the edge ought to be computed as perpendicular to the line that bisects the angle.

The distance between the point of impact and the nearest edge (or vertex), which I have sometime heard of as being part of the existing algorithm, ought to have nothing to do with it. Or, if it must for reasons of keeping calculations simple then I'd by far prefer it that the further you were away from an edge the more damage you took. Again, this appeals to the since of fairness. If you hit and edge, it was likely that you were at least trying to avoid the impact. If you impacted the dead middle of a face, then you've got nothing to complain about.

3) The third most important variable is the depth of the impact on the ship model. If I hit something head on, I expect to take more damage than I would if I only clip something. In the real world this isn't always true (because it depends on the interior structure of the ship whether clipping is actually catastrophic) but its mostly and intuitively true - which is the most important thing here. The further away the point of impact is from the centerline of my ship's motion, the less damage I expect to take. The effect ought not be as large as the effect of angle of impact, but it should be taken into consideration.

How small the period of time between impacting something and impacting something else is, which I've also heard floated around, should have nothing to do with it either. Each collision should be resolved without regard any other impact recent or otherwise. The only important effect of tumbling the ship after an impact should have is the _angle of impact_. AND, in every case, the energy my ship has after impacting should be REDUCED NOT INCREASED (as sometimes seems to happen when ships pick up a resonance and bounce to death). That means that a ship's angular velocity should not play the particularly big role in determining damage taken that it seems to. If I hit something, the damage to be taken by the sum of my angular velocity and remaining linear velocity ought to be lower than before the impact or something is seriously wrong with the physics modeling. Tumbling is fine - even desirable - but I ought to be losing a significant energy to all those unmodeled but presumed deformations, compressions, and shearing occuring to me and whatever I hit.

If there is any variable I'm missing in this discussion that seems to you to effect the 'fairness' with which damage is allocated in a collision, I'd like to hear it.
Dec 02, 2004 roguelazer link
Don't use a vult and you won't have these issues nearly as much...
Dec 02, 2004 Celebrim link
roguelazer: ARRRRGGGHHHHHHHHHH!!!

I'm sorry. I'll try to do better explaining myself in the future, but my fault or your fault, you have completely and totally missed the point.

It isn't about how often you have issues. I wouldn't necessarily mind if you had issues more often. It's about why you 'issue'.
Dec 02, 2004 roguelazer link
I understand the point. I'm just trying to lighten the mood.
Dec 02, 2004 Celebrim link
Ok. Sorry. Jokes are only understood if you put :) 's on the end so that I get it.

And in my case, I'm so frustrated with this that the joke I would appreciate more goes something like, "Maybe we could talk to the guys who programmed Asteroids. It was harsh, but you couldn't say it wasn't fair." :)
Dec 02, 2004 simondearsley link
I feel your pain Celebrim, but you need to ask yourself a question: Would you rather the devs spent a week reworking collision damage system, or spent that week adding more missions, fixing CTC, building more ship models etc.

I know its a pain in the arse, but its not that much of a pain in the arse ;)

For future reference, you post is excellent, as always.
Dec 02, 2004 Spider link
actually, the hornet is -very- front pained.

I discovered this when trying to play centaur-ball, and managed to issue myself completely in a front-on collission.

This is something I've done often with a prometheus, and it was two ships of about the same weight. With a prometheus as a racket though, the centaur can fly around 500m before it stops into a wobble. The hornet is a lousy paddle :(
Dec 02, 2004 harvestmouse link
I used to think that the collision code had something to do with feedback/ not enough dampening.

(1) If I clip my ship against a roid/station/beam/dock, I can often see a few flashes of red, as my ship is 'bouncing' against the object it collided into. the bouncing, due to feedback, magnifies until the ship blows up. Lighter ships have less "bouncing dampening", while larger ships have more dampening, so it is harder for the bouncing to magnify with large heavy ships.
The bouncing is worse when I'm in arcade, since the ship keeps trying to adjust itself.

(2)I imagined a vector pointing from the center of mass of the ship inside the ship to the point where the ship touches the object that it is colliding into. Another vector points out of the roid (this vector is normal to the surface of the roid), and when you hit the roid, it's like the vector from the roid is pushing your ship to make it spin. The angle between the roid vector and the ship vector will determine how much it spins. Bumping a roid head on with the nose of a bus will just make the bus bounce back, with little spin; bumping the roid from an angle will make the bus spin more. With torque and whatnot, it seems that, in vendetta, running straight into something causes less damage than "skinning" something as you pass it. might be the vectors.... shapes with sharp angles feel like they have vector problems too. (hornet nose = sharp, vult wing = sharp...)

those are my theories, anyway. anyone know how it -really- works in vendetta?
-_~ evoli
Dec 04, 2004 Soltis link
It doesn't work, which is the point Celebrim is trying to make.

This is a severe issue, since it's going to keep biting EVERYONE, players and devs alike, in the ass until fixed. Players because it makes the game unfair, arbitary and illogical: in other words, not fun; devs because they will lose players(or not gain new ones as fast) if players aren't having fun.

This isn't just a case of something lacking, or needing adjustment, this is active breakage.