Page 1 of 3

Old Flying Physics for DOOM/BOOM Compatibility

Posted: Wed Nov 14, 2018 11:58 pm
by Megablast
Request to make flying monsters behave in a similar manner to vanilla/boom while using doom/boom compatibility in GZDoom.

Let me just start by saying I very much enjoy using GZDoom for modern Doom WADs and gameplay mods or just some casual play, but there is this one issue that keeps me going back to PRBoom+ for maps designed for Boom compatibility.. And that is flying physics/behavior in GZD (Boom compatibility).
You don't really notice how different GZDoom handles flying monsters until you play tight maps, slaughter maps or maps with flying monsters outdoors. Once you start rocketing Cacodemons swarms they will fly to the moon if the map allows it.. Don't even get me started about Pain Elementals in large environments.

Slaughter maps that include massive amounts of flying monsters in GZDoom just become a huge mess very fast with all the rapid height changes of the monsters, if the new flying physics could be flagged on and off to work like old Doom this port would 100% see more use on the massive amount of Boom content.
One of the most notable examples would be Sunlust map 30 finale, almost unplayable due to how the Pain Elementals behave in GZD.

Here's a few gif examples of the differences.
Simple Example: https://imgur.com/a/I7ePXly
Large Scale Example: https://imgur.com/a/J3tHIXg

Notice enemies are pushed around way more and like to fly upwards in GZDoom? It's not necessarily a good or bad thing and works well with freelook, however when playing maps with tightly designed gameplay around old monster behavior this will drastically change the way many fights play out.
Anyway, would love to hear if this would be a feasible change as it seem pretty straight forward from the outside but I know it may be hard to accomplish depending on how everything is laid out internally.

Maps used in examples if you want to test yourself as it's much more noticeable while playing.
https://www.dropbox.com/s/k14wal1mxk2b8 ... s.zip?dl=0

Re: Old Flying Physics for DOOM/BOOM Compatibility

Posted: Thu Nov 15, 2018 1:05 am
by Graf Zahl
That option already exists under "Compatibility options". Look for "actors are infinitely tall".

Re: Old Flying Physics for DOOM/BOOM Compatibility

Posted: Thu Nov 15, 2018 2:21 am
by Megablast
Kind of hard to explain.
I don't mean infinite height, that does indeed exist and works perfectly in GZD.

I'm talking about how flying monster move around the environment when when hit by the player or when fighting each other. In GZD they move completely different than in Vanilla or Boom.. In general flying enemies just end up flying much higher and spread out more changing the way encounters play out quite a lot between ports.

Re: Old Flying Physics for DOOM/BOOM Compatibility

Posted: Thu Nov 15, 2018 3:33 am
by Graf Zahl
I think that is a direct consequence of the infinite height thing. If not, I couldn't do anything because I have no idea what else may be different.
Most of this kind of changes were made long before I started working on it.

Re: Old Flying Physics for DOOM/BOOM Compatibility

Posted: Thu Nov 15, 2018 3:48 am
by _mental_
This doesn't seem to be related to infinitely tall things. In GZDoom regardless of compatibility settings flying monsters have noticeable vertical momentum when damaged. It's not the case in PrBoom.

Re: Old Flying Physics for DOOM/BOOM Compatibility

Posted: Thu Nov 15, 2018 3:58 am
by Graf Zahl
Sounds like a typical Randi-style "improvement" from the early years...

Re: Old Flying Physics for DOOM/BOOM Compatibility

Posted: Thu Nov 15, 2018 4:56 am
by _mental_
This behavior was introduced in ZDoom 1.14 if git blame skills serve me well.

EDIT: Some kind of old "physics" can be achieved by taking this code path. I guess it requires new compatibility flag.

Re: Old Flying Physics for DOOM/BOOM Compatibility

Posted: Thu Nov 15, 2018 5:14 am
by Megablast
Mental I applaud your efforts!
I was over here with like 15 github pages open for both ZDoom and Doom II pretending I have a clue what I'm looking for while trying to shed some light on this.

Re: Old Flying Physics for DOOM/BOOM Compatibility

Posted: Thu Nov 15, 2018 5:27 am
by Graf Zahl
Ugh. That godforsaken thing again.I would have obliterated it entirely long ago if it wasn't for some maps abusing this for 'rocket jumping'.
To be honest, this has been one of ZDoom's most problematic changes ever and one of the few I never touched for the sake of compatibility with a small number of maps depending on it.

What I'd like to do is to give A_Explode some option to fine-tune the behavior and disable this thing by default, except when affecting the player if he's also the shooter (so that the rocket jumping effect isn't lost.

And for vanilla purists there needs to be a compatibility option to fully revert to the classic formula, of course - not just for barrels and boss brains...


Just thinking about it, the mere fact that OLDRADIUSDMG even exists sends a clear message that this never was such a great idea to begin with. It obviously caused problems right from the start.

Re: Old Flying Physics for DOOM/BOOM Compatibility

Posted: Thu Nov 15, 2018 9:45 am
by StroggVorbis
Vertical momentum from knockback is not a bad thing per se, but the direction the monster in question is propelled to can be quite unpredictable, I guess it's because of square instead of spherical collision, no?

This and it's hard to approximate distance on a 3D plane with 2D graphics, I actually always found it hard to hit cacos with the rocket launcher and free look, taking both speeds and directions into account always becomes a wild guess.

Re: Old Flying Physics for DOOM/BOOM Compatibility

Posted: Thu Nov 15, 2018 11:29 am
by Graf Zahl
One funny example of what this can cause is if you hit a monster close to its feet. It may make a small jump as a result.

Re: Old Flying Physics for DOOM/BOOM Compatibility

Posted: Thu Nov 15, 2018 11:06 pm
by Megablast
So the explosion knockback is a major component and that alone would be a monumental step for vanilla gameplay but there is another factor at play here I want to look at a bit closer..

Whipped up another little test bed WAD with some flying monsters and a blocking line so you can safely watch them infight: Imgur Album | WAD DL Link
Both screenshots were taken after about 30 seconds of doing nothing but observing. I've been digging around the ZDoom source trying to find the exact cause, this looked interesting but I'm not versed enough in how Doom is put together to tell what's going on.

Flying monsters seem to want to move up when attacking(maybe just melee attacks?) each other so my theory is that somehow when two attack each other they get stuck in a loop and just go straight up together trying to get in range to attack.. Lost souls seem to be the greatest offender.

Edit: Would just like to note for all tests in (G)ZDoom I'm using Boom (Strict) so infinite height and all that is always enabled, this should all be repeatable regardless of comp settings though.

Re: Old Flying Physics for DOOM/BOOM Compatibility

Posted: Fri Nov 16, 2018 1:15 am
by Graf Zahl
Megablast wrote: Flying monsters seem to want to move up when attacking(maybe just melee attacks?) each other so my theory is that somehow when two attack each other they get stuck in a loop and just go straight up together trying to get in range to attack.. Lost souls seem to be the greatest offender.

Weren't they doing that in vanilla, too? I can remember from those early years that infighting LostSouls always tended to move towards the ceiling.

The part of code you linked only applies to monsters under gravity, not flying ones.

Re: Old Flying Physics for DOOM/BOOM Compatibility

Posted: Fri Nov 16, 2018 3:07 am
by Gez
Yeah, lost souls aim for their target's center point, but do not subtract their own half-height for this -- they're hitting with their lower jaw, if you want. So when two lost souls are infighting, they'll climb a bit with each charge.

Re: Old Flying Physics for DOOM/BOOM Compatibility

Posted: Sun Dec 02, 2018 12:36 pm
by Killer5
Sick I did not realize that vanilla flying monster behavior is already in gzdoom as this is the reason why I have not used the port.

Can you let me know the version of gzdoom and the flag I need to enable in order to enable vanilla flying monster behavior as described in the op of this thread?