bradharding / doomretro

The classic, refined DOOM source port. For Windows PC.
https://www.doomretro.com
GNU General Public License v3.0
698 stars 88 forks source link

[Feature Request] compat_useblocking MAPINFO support #762

Closed andrikpowell closed 1 year ago

andrikpowell commented 2 years ago

Hey Brad,

I'd like to ask if you could implement a new compatibility setting for MAPINFO. While fixing some issues with 200 Line Massacre in ZDaemon, it's come to my attention that MAP15 of 200lnm actually breaks if this compatibility setting isn't forced.

This is the compatibility setting:

All special lines can block (Yes/No) compat_useblocking (CVAR and MAPINFO) Restores Doom's original behavior of any special line blocking use actions. ZDoom corrects this so that walkover actions or scrolling lines don't block uses.

bradharding commented 2 years ago

Thanks Arsinikk. I'll see what I can do. :)

bradharding commented 2 years ago

Does 7408a78c031c57588152a1d612311525af839ce7 work for you?

andrikpowell commented 2 years ago

Does 7408a78 work for you?

This actually did not fix the problem. In the map you can still hit the switch before walking over the line.

Just to show what my RMAPINFO is:

MAP MAP15 { levelpic = "CWILV14" skytexture = "SKY2" partime = 120 exitpic = "INTERP14" enterpic = "INTERP14" next = "MAP16" nextsecret = "MAP31" music = "D_RUNNI2" compat_useblocking }

andrikpowell commented 2 years ago

Edit: compat_useblocking may have actually worked. I just tested GZDoom and you can hit the switch before walking over the line. I'm gonna see if I can test the map further and see what actually blocks the switch press.

andrikpowell commented 2 years ago

Edit: ok, so I did fix the setup in my map and tested it in GZDoom, and now the switch works correctly in ZDoom ports.

I can also confirm that by removing all other compatibility settings in GZDoom, it's just the compat_useblocking that is needed to fix the issue.

You can see the fix I did below. (I basically had a space between the lines). https://andrikarkane.com/doom/forums/troubleshooting/blocking-line-error.jpg

But in Doom Retro, it does not work correctly and you can still hit the switch before walking over the line. Not sure why in Doom Retro, adding that setting isn't blocking the switch press.

bradharding commented 2 years ago

Could you please tell me if 76c67bdd323b0f0f5eb540247692386b2b6bcfed fixes this?

andrikpowell commented 2 years ago

Could you please tell me if 76c67bd fixes this?

This did not fix it. I can still press a switch over a W1 line.

bradharding commented 2 years ago

Thanks, I'll keep looking.

andrikpowell commented 2 years ago

Thanks, I'll keep looking.

So what's strange is that I decided I would try to make a simple test map for you to make it easier for testing... The only problem was that my test map worked correctly in Doom Retro :/

So there must be a certain specific situation in my map that makes Doom Retro decides to ignore the compat_useblocking with that particular line and hit the switch.

Would it be useful to do a quick video of how the switch works and how it reveals itself? (I can test in GZDoom to show what it's supposed to do and then do Doom Retro).

bradharding commented 2 years ago

Yes please! I think that may help.

andrikpowell commented 2 years ago

Yes please! I think that may help.

https://youtu.be/cPLe21UHQkU HD may take a while :(

Hopefully this is useful. I go a bit into detail of how the map works. And I show in other ports how it works, and why it's bad if it doesn't work correctly.

I'm not surprised that it's a bit weird in this map, since the way this map works is almost black magick.

bradharding commented 1 year ago

Hey, watched your video and it was very helpful in better understanding the issue! :) Maybe I'm just confused and/or tired, but after spending a bit of time going on some wide tangent, does the simple commit 60e7fd6bd209e2add5baa3874d3c5ae43ecc3d71 fix this for you? It seems to fix it for me...