View previous topic :: View next topic |
Close enough to right? |
Yes |
|
50% |
[ 3 ] |
No |
|
0% |
[ 0 ] |
what?? |
|
50% |
[ 3 ] |
|
Total Votes : 6 |
|
Author |
Message |
My Personal Insanity Registered User
Joined: 03 Mar 2002 Location: Salt Lake City GUILD: US-V Posts: 2627
|
Posted: Fri Jan 16, 2004 3:27 am Post subject: Half Life Collision and Hit Detection |
|
|
This is, as near as I can glean from the rather sparse available
information, how things work. Please comment!
1. Collision Hulls (aka Clip hulls)
A collision hull is how the game determines if you are touching a wall or
another object (object being what I'll call an entity, with a model, that
moves about in all three dimensions). There are four hulls, the first of
which is generated at the time the map is compiled from the brushes in
the map itself. It doesn't follow the brushes exactly, though, but rather
extends out from each brush somewhat. (About one half of a player
size, but such varies depending on the complexity of the walls the mapper
lays down, as the compiler tries to smooth out the rectangular hulls to
decrease problems with getting stuck on complex surfaces).
The other three hulls are for objects, typically one hull is the size of a
standing player, the second hull is the size of a crouching player, and
the third is some small size for objects, like a small hull for grenades.
Because these hulls are simple boxes, they don't exactly match the
shape of the models, usually they are 'inside' the models by quite
a bit.
Finally, the hulls determine COLLISIONS only, i.e. "Has this object
smacked into a wall or another object?" They don't directly determine
if a weapon has hit or missed, which leads to...
2. Bounding Boxes (Aka Hitboxes aka MEDIC!)
Misleadingly enough named, bounding boxes are built around a
model to detect 'hits' from weapons. They are (again) simple rectangles,
no curves, that the model designer places around the visible model,
attempting to follow the actual shape of the model as best as possible.
Having many different hitboxes for each model allows the game to
adjust the effect of the hit to coincide with where it hit. (Thus the
difference between sniper headshots/body shots/leg shots in TFC, or
head/limb/body shots in DoD, etc).
Using these approximations of what the visual world is to calculate
collisions and hits leads occasionally to some odd circumstances:
With hulls, arms and legs might stick through walls, or a DoD player
standing on a prone player will appear to be floating above, since
the prone hull is the same as the crouching hull. With bounding boxes, a
shot just past the enemy's ear becomes a headshot, and you can
be hit "around corners" because even though very little or none of
your model is showing, just a bit of a hitbox poking around the corner
is enough to take damage (thus the imfamous "Toe Shot").
I've been trying to bring all this together in order to try to make sense
of a rant I've seen people speak ingame in DoD. It goes like this:
"Stupid DoD, using the same hull for crouching and prone, so those
@#%! KAR h00rs can headshot me even if I'm laying down behind
sandbags!!!!!!11111oneone"
As near as I can tell, this can't be: Your collision hull might be 3 feet
taller than you are, but since it doesn't care about weapon hits the enemy
can shoot at the top of it all day and all night; with your model's face in
the dirt, your hitboxes will be down there as well.
I think this perceived 'headshot 3 feet above my prone head' effect must
come from forgetting the dimensions of your model: If you're prone,
facing into a wall of sandbags, your legs are sticking out pretty
far, where they can take hits, especially if the shooter is not at the same
point on the Z axis as you are (since we all know snipers seem to like
to find high places to hide in). Since many DoD weapons do more than
100 damage with one unobstructed hit to the limbs (like the bolt action
rifles), what seems to be a cheating headshot is actually a toeshot.
Perhaps not much comfort to the person killed in that situation, but at
least it makes more sense. |
|
Back to top |
|
|
Potato-VS- Registered User
Joined: 16 Jul 2002 Location: Ontario Canada Posts: 1562
|
Posted: Fri Jan 16, 2004 6:26 am Post subject: |
|
|
Im currently programming collision detection in OpenGL - theres no easy solution and it seems that there are only about three ways to actually get collision detection to work in general and its the same for anything (be it opengl, direct x, glide, etc etc). From what Ive seen it appears that they have blended several different collision detecton methods and made something completly else then the usual plane/cyllinder collision detection (when you hit something such as a wall and you slide along it then thats a plane and when you hit something such as a cyllinder or prehaps even a rectangular object like a pillar, box, etc then you use cyllinders to deflect the player in another direction and stop them from traveling through the pollygone(s)). I actually think that they've done an excellent job at solving the progblem - no matter what any company as of yet has not actually figured out how to make a fast, stable and exact collision detection so I would say that valve has done an excellent job at it. |
|
Back to top |
|
|
Stevo Ville Supporter
Joined: 08 Dec 2002 Location: Orange County Guild: TVR Posts: 9514
|
|
Back to top |
|
|
My Personal Insanity Registered User
Joined: 03 Mar 2002 Location: Salt Lake City GUILD: US-V Posts: 2627
|
Posted: Sat Jan 17, 2004 1:09 am Post subject: |
|
|
Potato-VS- wrote: | no matter what any company as of yet has not actually figured out how to make a fast, stable and exact collision detection so I would say that valve has done an excellent job at it. |
I do think they've done pretty good, although I think some smarter
ways of rounding off the world-hull on complicated brushes might be
appropriate...
Of course, what I really hope for is HL2 to come out I wanna drive
that dune buggy. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|