Difference between revisions of "Talk:Mancubus fireball clipping"

From DoomWiki.org

(The cause of this bug: source code: Not a full fix, not the only issue involved.)
m (The cause of this bug: source code: Oops formatting)
 
Line 44: Line 44:
 
: Killough was only half-right. Yes there's an unaccounted-for case here that makes the fireballs even more likely to clip when they're moving with negative velocities. However, even with this fix, fireballs still go through walls. Why? Because they are too small - their movement speed is larger than their bounding box. Doom's movement and clipping form a ''delta-based simulation''. The positions of moving objects are only checked at every delta-v position (with v = velocity) and if the object fits where it would be located after the pending changes in its position, then the move is allowed - regardless of the nature of all points between the destination and its current location (there is no form of "backtrace" checking).
 
: Killough was only half-right. Yes there's an unaccounted-for case here that makes the fireballs even more likely to clip when they're moving with negative velocities. However, even with this fix, fireballs still go through walls. Why? Because they are too small - their movement speed is larger than their bounding box. Doom's movement and clipping form a ''delta-based simulation''. The positions of moving objects are only checked at every delta-v position (with v = velocity) and if the object fits where it would be located after the pending changes in its position, then the move is allowed - regardless of the nature of all points between the destination and its current location (there is no form of "backtrace" checking).
  
So whether you fix this small issue or not, the problem will remain. Go ahead and try playing MAP07 in [[MBF]] or the [[Eternity Engine]], and eventually you'll get at least one clipping mancubus fireball. For this reason I cannot support the code above being described as the ''sole'' cause of the problem, nor Killough's tweak as a fix for it. --[[User:Quasar|Quasar]] ([[User talk:Quasar|talk]]) 22:05, 19 January 2015 (UTC)
+
: So whether you fix this small issue or not, the problem will remain. Go ahead and try playing MAP07 in [[MBF]] or the [[Eternity Engine]], and eventually you'll get at least one clipping mancubus fireball. For this reason I cannot support the code above being described as the ''sole'' cause of the problem, nor Killough's tweak as a fix for it. --[[User:Quasar|Quasar]] ([[User talk:Quasar|talk]]) 22:05, 19 January 2015 (UTC)

Latest revision as of 17:05, 19 January 2015

I'm pretty sure this bug is caused by the very thin projectile (width = 2*6 = 12) with very fast speed (20 pixels per tic). If it's 12 wide and moves orthogonally at 20 p/t, it will jump over 8 other points, those possibly including the wall. That's okay, but it means they CANNOT pass through any default Doom solid things. They're all 16 or more units wide, they can't be jumped by the Manc fireball.

Or am I actually wrong? Printz 22:42, 7 February 2008 (UTC)

The wording seems imprecise, as it is intended to apply to linedefs, not Things (see the example demo).  Opinions vary as to whether a complete lack of code excerpts in a bug article automatically makes it a stub.   :>     Ryan W 20:20, 8 February 2008 (UTC)

Source code[edit]

It appears that Lee Killough does get the credit for fixing (judging from MBF readme file, and from the timestamp in sourcecode comment). Anyone interested, look into MBF source - P_XYMovement in p_mobj.c (line 175 and beyond) - and attempt to outline this, as for me, it's completely incomprehensible. --Unmaker 15:56, 28 July 2012 (UTC)

Nice pic[edit]

That's a really good pic of the phenomenon. I intend to firm up some of the technical details about this glitch and get that stub header taken down soon. --Quasar 21:55, 3 October 2013 (UTC)

Fireballs from other monsters going through walls[edit]

I found a video on Youtube where an Imp's fireball passes through a wall. This is on version 1.2, but it is very hard to reproduce and videos exhibiting this bug are scarce. I saw it only one time when playing on nightmare on E1M4 of The Ultimate Doom when tons of Imps were shooting fireballs at me and I hid the other side of a corner.

The video is called "Random DooM WAD - 0.5 stars" from NoMac90.

It occurs at 4:50, it's hard to see because it's quick. Even a Cacodemon's fireball went through the wall.

--AXDOOM 7:37, 15 October 2013 (UTC)

The cause of this bug: source code[edit]

Hi people,

I was looking at a change in DoomRetro's source code (http://git.io/gwcQfQ) and I saw this interesting comment.

<source lang="C" line> // killough 8/9/98: fix bug in original Doom source: // Large negative displacements were never considered. // This explains the tendency for Mancubus fireballs // to pass through walls. if (xmove > MAXMOVE / 2 || ymove > MAXMOVE / 2 || xmove < -MAXMOVE / 2 || ymove < -MAXMOVE / 2) </source>

In the original Doom's source code, the condition doesn't check for a negative MAXMOVE value. I still have to confirm this, because the code before this change in DoomRetro is different, so I'll wait until the next release.

--AXDOOM 22:42, 18 January 2014 (UTC)

Killough was only half-right. Yes there's an unaccounted-for case here that makes the fireballs even more likely to clip when they're moving with negative velocities. However, even with this fix, fireballs still go through walls. Why? Because they are too small - their movement speed is larger than their bounding box. Doom's movement and clipping form a delta-based simulation. The positions of moving objects are only checked at every delta-v position (with v = velocity) and if the object fits where it would be located after the pending changes in its position, then the move is allowed - regardless of the nature of all points between the destination and its current location (there is no form of "backtrace" checking).
So whether you fix this small issue or not, the problem will remain. Go ahead and try playing MAP07 in MBF or the Eternity Engine, and eventually you'll get at least one clipping mancubus fireball. For this reason I cannot support the code above being described as the sole cause of the problem, nor Killough's tweak as a fix for it. --Quasar (talk) 22:05, 19 January 2015 (UTC)