Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
42PercentHealth

Annoying Blockmap Bug

Recommended Posts

Hey all,

 

I've finally been converted from a ZDoom player to a PrBoom+ player. Overall, the transition was pretty smooth, since I got into the habit of using Boom compatibility on ZDoom, and since I don't usually try punching mancubi or arachnotrons... It also feels like monster behavior is more predictable, autoaim does what I want more often than before, so I'm pretty happy with it.

 

The only thing that annoys me to no end is having my hitscan attacks pass harmlessly through monsters! For example, arachnotrons always die in three SSG blasts. This means that I can safely approach this wall while circle-strafing, because the monster will be dead right... about... now. AAAH! *Takes plasma to the face, dies.*

 

I know this bug has existed forever, but I don't often see it happen to the doomgods in their demos -- not as often as it feels like it happens to me, anyway. Is there any way known to Doomworld to minimize the probability of this happening? I've tried things like standing closer, aligning myself along the north/south or east/west axes, but without success.

 

Any insight would be greatly appreciated.

Share this post


Link to post

Your distance to the thing in question does not matter, unless you're bumping into the thing's "personal space", as far as I'm aware.

 

There are certain circumstances that make blockmap bugs more likely to occur, but I have yet to see someone provide a general rule of thumb that I could actually relate to.

 

At times it's narrow hallways, at times it's sufficient if things simply move, and when it comes to highly optimized demos, people played these maps for hours upon hours, thus they know where the bug is most likely to occur, and where it isn't.

EDIT: that aside, this forum has a search function which, if employed skillfully, would have provided you with lots of threads to dive into. ;-)

Share this post


Link to post

The monster's hitbox consists of its cross-section i.e. an "X" that connects the four corners of its supposed hitbox. (Excuse the crappy MSPaint edit) This "X" does not rotate at all, so it always faces NSEW.

 

xx.png.592866aa57325e717b5f7f5abb795f33.png

 

So what I suggest is to go at a 45-degree angle, aiming at one of the diagonal lines. That's where the "swingshot" myth came from.

Share this post


Link to post
6 minutes ago, Xyzzy01 said:

So what I suggest is to go a a 45-degree angle, aiming at one of the diagonal lines.

Interesting.... Still there is no way to shoot through the box without shooting through a diagonal of the box, so there has to be more to it than "missing" the diagonal. Still, I'll give it a try and see what happens. (I was seeing the bug a lot on HR map 7, so maybe I'll test it there.)

 

... Aaaaand I just made a pun worthy of the bad jokes thread. :-P

 

Quote

That's where the "swingshot" myth came from.

I'm not aware of the "swingshot" myth... could you explain? Thanks!

Share this post


Link to post

Quoting david_a from 2008:

 

Quote

Instead of lining up the gun before pulling the trigger, start at an angle and fire while "swinging" the mouse around.

 

This used to be some sort of strategy in DM.

Share this post


Link to post

Blockmap covers the whole map's area by a grid of square blocks 128x128 map units large. This grid can be viewed on the automap in the game by pressing G. Blockmap bug works like this: If a hitscan doesn't pass through the blockmap block in which the monster's center is located, collision between the monster and the hitscan will not be checked and the hitscan will pass through. Illustration:

 

d6COHIG.png

 

The picture is a top-down view onto a part of map. This part is covered by 4 blockmap blocks, the boundaries between them are drawn as orange lines. The monster's center is located in the bottom right block. The hitscan only goes through the left and top blocks, and never enters the bottom right block, therefore it will pass through the monster, even though it clearly intersects the monster's bounding box. The player and the monster don't have to be in directly adjancent blockmap blocks as in the picture, but can be arbitrarily far away from each other - the distance between them is irrelevant to whether the bug will take effect or not. However, if the player (who fired the hitscan) and the monster were both in the same block, the bug would definitely not take effect, because the hitscan definitely crosses the block it originates from.

 

To avoid the blockmap bug while playing, you need to watch where the blockmap grid is and where the monster is relatively to it, and avoid shooting into such a direction that the blockmap block containing the monster's center may be missed by your attack. Not sure how feasible this is to do while speedrunning (I mean, after playing the map hundreds of times and knowing every pixel of it), let alone casual playing.

Edited by scifista42

Share this post


Link to post

@scifista42 Thanks for the info! You're probably right -- keeping track of an invisible blockmap grid is probably not feasible. My ammo-efficiency make-every-tracer-count OCD is not going to like to hear that. :-P

 

Thanks again!

Share this post


Link to post
On 7/27/2017 at 11:06 AM, Xyzzy01 said:

The monster's hitbox consists of its cross-section i.e. an "X" that connects the four corners of its supposed hitbox. (Excuse the crappy MSPaint edit) This "X" does not rotate at all, so it always faces NSEW.

 

So what I suggest is to go at a 45-degree angle, aiming at one of the diagonal lines. That's where the "swingshot" myth came from.

I was astonished to learn this because I didn't believe it worked like that at all. Thanks for the explanation.

 

Related source code: link

 

Share this post


Link to post

To be fair, Xyzzy01 referred to it as "the monster's hitbox", but it's specifically just a hitscan-collision box. Collisions with other things (including projectiles) and with linedefs use typical square collision formulas, not an X at the square's diagonals.

Edited by scifista42

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
×