Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Cauã Godinho

Why Infinite height monsters Exist?

Recommended Posts

There´s some reason behind for this mechanic to exist? the mechanic is trying to improve in some way the design level or the perfomace of the game? what was the intentional to put this on the game? really? which was the intentional? because this mechanic is so fucking bad that seems more be a bug.

Share this post


Link to post

It originally existed for optimisation so the CPU doesn't need to check for height of each entity.

But as a mechanic it's used to force the player to kill the enemies before being able to advance.

Share this post


Link to post

Doom does check height for collision between projectiles and other things because that's relatively easy, all you need to check is a binary "did it hit or did it not." But when you have collision between monsters you have to figure out how they collide. Is one standing on top of the other? If the one on the bottom walks away, does the one on top fall down? If the platform they're standing on moves up/down, do they move with it? Suddenly it's more complicated and filled with edge cases, and for Doom they decided it just wasn't important enough to deal with. The height check would be implemented for Heretic, Hexen, and Strife, but that has its own problems; I remember monsters getting stuck in each other fairly often when playing Heretic.

Share this post


Link to post

I hate infinitely tall actors and disable them immediately in every port allowing it, unless the mapper has explicitly mapped with them in mind. More than I think any other mechanic it feels artificial and frustrating—there is no way I can imagine that it makes sense for Doomguy to stop dead in his tracks and become immobilized because of a bunch of lost souls 500 feet above him, or get magically bit to death by pinkies in a crevasse 500 feet below. I don’t doubt it was necessary, or at least desirable, for performance reasons in the early 90s, but I’m certainly grateful it’s something I can disable now.

Share this post


Link to post
Posted (edited)

True ultimate answer: So nothing in Doom has infinite height, this is a (annoyingly constant) misunderstanding brought upon by shit Youtube videos and GZDoom's horribly named settings. This even includes lines themselves, in which the height is actually a defined part of the sector reference, the organization of which is to reduce the amount of work needed for the renderer to calculate draw lists. Height collisions can be observed in many things such as projectile and hitscan collisions, item pickups, and general movement around geometry (this isn't just some weird camera trick, that would make multiplayer impossible). Heights even come into play for decorative objects such as trees, they all have a height of 8! You can't move over them because they are solid, but projectiles aren't and pass right over them unless you fire a projectile at the same level as them.

 

What is obviously not possible that you may notice is you can't walk over enemies. If everything in Doom has height, why is that? While testing X/Y movement, if both objects are flagged as solid then the collision check explicitly ends early. This is to prevent a problem observable in later game releases on Doom's engine, very notably Strife: the physics has no way to reconcile what happens if an actor is pushed vertically into another actor. The keyword is pushed, such as a sector being raised. In Strife if this happens, the two actors become stuck inside eachother as the Z movement is never rejected.

 

This is a problem that persisted even in Quake, Quake2 and Half-Life, but with a different outcome. Because brushes can move along arbitrary vectors (and thus an actor can be pushed in any direction) a different solution was needed, however in this case it's now "just crush the actor". You'll see this notably on some lifts, if an object lands on top of another (say an enemy jumps and lands on your head) while on a lift that's moving up, the middle entity (i.e you) gets immediately crushed to avoid having to resolve the recurrent collision.

Share this post


Link to post
1 hour ago, Edward850 said:

True ultimate answer: So nothing in Doom has infinite height, this is a (annoyingly constant) misunderstanding brought upon by shit Youtube videos and GZDoom's horribly named settings. This even includes lines themselves, in which the height is actually a defined part of the sector reference, the organization of which is to reduce the amount of work needed for the renderer to calculate draw lists. Height collisions can be observed in many things such as projectile and hitscan collisions, item pickups, and general movement around geometry (this isn't just some weird camera trick, that would make multiplayer impossible). Heights even come into play for decorative objects such as trees, they all have a height of 8! You can't move over them because they are solid, but projectiles aren't and pass right over them unless you fire a projectile at the same level as them.

 

What is obviously not possible that you may notice is you can't walk over enemies. If everything in Doom has height, why is that? While testing X/Y movement, if both objects are flagged as solid then the collision check explicitly ends early. This is to prevent a problem observable in later game releases on Doom's engine, very notably Strife: the physics has no way to reconcile what happens if an actor is pushed vertically into another actor. The keyword is pushed, such as a sector being raised. In Strife if this happens, the two actors become stuck inside eachother as the Z movement is never rejected.

 

This is a problem that persisted even in Quake, Quake2 and Half-Life, but with a different outcome. Because brushes can move along arbitrary vectors (and thus an actor can be pushed in any direction) a different solution was needed, however in this case it's now "just crush the actor". You'll see this notably on some lifts, if an object lands on top of another (say an enemy jumps and lands on your head) while on a lift that's moving up, the middle entity (i.e you) gets immediately crushed to avoid having to resolve the recurrent collision.

Let me see if i understand. 
1 everything have the height of 8.
2 This mechanic exist to not make subjects coexist in the same place.

So what is exactly the name of the mechanic then? the name "infinite height monsters" still make sense and explain a lot, of course not a lot of details how ya said now.

Share this post


Link to post
2 minutes ago, Cauã Godinho said:

1 everything have the height of 8.

No, decorations like torches and trees have a height of 8, but monsters, the player, etc. have proper heights.

Share this post


Link to post
Just now, Cauã Godinho said:

everything have the height of 8.

No. Only decorations such as trees have a height of 8, so you can shoot past them. Regular things like players and enemies have normal heights so you can hit them.

 

1 minute ago, Cauã Godinho said:

This mechanic exist to not make subjects coexist in the same place.

So solid actors can't be stacked.

 

2 minutes ago, Cauã Godinho said:

So what is exactly the name of the mechanic then? the name "infinite height monsters" still make sense and explain a lot, of course not a lot of details how ya said now. 

"Allow walking over monsters" would be a more correct setting name for explaining the right problem to the average laymen which would prevent needing this tired thread over and over.

Share this post


Link to post
2 minutes ago, Edward850 said:

No. Only decorations such as trees have a height of 8, so you can shoot past them. Regular things like players and enemies have normal heights so you can hit them.

 

So solid actors can't be stacked.

 

"Allow walking over monsters" would be a more correct setting name for explaining the right problem to the average laymen which would prevent needing this tired thread over and over.

Ah in other words the hitbox of enemys are "there" to help ya hit them, and the objects and decoratios have a exactly number to allow players to have a smooth gameplay.
Yeah, i understand now (i guess) thanks mate.

Share this post


Link to post

To piggy back on what @Edward850 is explaining, I once asked Romero what the reasoning was behind this, and it was literally because they couldn't finish the collision in time, and found it didn't hurt gameplay dramatically. Same reason for any other cut aspect of Doom, such as vertical aiming, sliding doors, slopes (allegedly). The task was just too difficult at the time and would have delayed the game.

Share this post


Link to post
10 minutes ago, kevansevans said:

To piggy back on what @Edward850 is explaining, I once asked Romero what the reasoning was behind this, and it was literally because they couldn't finish the collision in time, and found it didn't hurt gameplay dramatically.

 

I'd have to disagree with him on this point. It was one of the few things that really pissed me off in the original game, usually when getting meleed by a monster I couldn't see. I actually hacked a fix for it into an early Doom port back in the day (probably MBF). I was never more than an amateurish hacker, and it really wasn't difficult.

Share this post


Link to post

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
×