Old Flying Physics for DOOM/BOOM Compatibility
Moderator: GZDoom Developers
Old Flying Physics for DOOM/BOOM Compatibility
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
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
- Graf Zahl
- Lead GZDoom+Raze Developer
- Posts: 49067
- Joined: Sat Jul 19, 2003 10:19 am
- Location: Germany
Re: Old Flying Physics for DOOM/BOOM Compatibility
That option already exists under "Compatibility options". Look for "actors are infinitely tall".
Re: Old Flying Physics for DOOM/BOOM Compatibility
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.
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.
- Graf Zahl
- Lead GZDoom+Raze Developer
- Posts: 49067
- Joined: Sat Jul 19, 2003 10:19 am
- Location: Germany
Re: Old Flying Physics for DOOM/BOOM Compatibility
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.
Most of this kind of changes were made long before I started working on it.
Re: Old Flying Physics for DOOM/BOOM Compatibility
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.
- Graf Zahl
- Lead GZDoom+Raze Developer
- Posts: 49067
- Joined: Sat Jul 19, 2003 10:19 am
- Location: Germany
Re: Old Flying Physics for DOOM/BOOM Compatibility
Sounds like a typical Randi-style "improvement" from the early years...
Re: Old Flying Physics for DOOM/BOOM Compatibility
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.
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
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.
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.
- Graf Zahl
- Lead GZDoom+Raze Developer
- Posts: 49067
- Joined: Sat Jul 19, 2003 10:19 am
- Location: Germany
Re: Old Flying Physics for DOOM/BOOM Compatibility
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.
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.
- StroggVorbis
- Posts: 866
- Joined: Wed Nov 08, 2017 4:23 pm
- Graphics Processor: nVidia with Vulkan support
- Location: Germany
Re: Old Flying Physics for DOOM/BOOM Compatibility
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.
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.
- Graf Zahl
- Lead GZDoom+Raze Developer
- Posts: 49067
- Joined: Sat Jul 19, 2003 10:19 am
- Location: Germany
Re: Old Flying Physics for DOOM/BOOM Compatibility
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
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.
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.
- Graf Zahl
- Lead GZDoom+Raze Developer
- Posts: 49067
- Joined: Sat Jul 19, 2003 10:19 am
- Location: Germany
Re: Old Flying Physics for DOOM/BOOM Compatibility
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
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
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?
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?