Compatability flag request for "actor hits floor" logic
Moderator: GZDoom Developers
- Cutmanmike
- Posts: 11353
- Joined: Mon Oct 06, 2003 3:41 pm
- Operating System Version (Optional): Windows 10
- Location: United Kingdom
- Contact:
Compatability flag request for "actor hits floor" logic
Hi,
I'm not sure how long ago this was changed but a certain behavior with the "Actor hits Floor" special actor is causing problems with a lot of older maps. This was reported as a bug a while ago but it got locked away before I had chance to chime in. This change actually breaks a large majority of MM8BDM's core maps, and plenty of custom ones too. As Zandronum started to migrate code over from newer Zdoom versions, this came to my attention. The Zandronum team probably won't make implement compatibility flag for something Zdoom doesn't so I have to request this here.
I request a compatibility flag which uses the old Actor hits Floor logic, which did not trigger when a player (or other actor if it was flagged for that) teleported to that sector. The reason that this is a big deal is because we have a LOT of maps that use two way teleporters that use the Actor hits floor actor. This is not a case of us abusing and old hack and finally getting punished for it, I think that the old behavior was correct as they are not "landing" on the floor (because the teleport spots have 0 z height).
I know the list of compatibility flags grows and grows but this is a pretty big deal for me and the rest of the dev team. A lot of older maps are going to be crashing, and while we can update the ones in the core version with some roundabout scripting, many custom maps we aren't responsible for are going to become incompatible.
I'm not sure how long ago this was changed but a certain behavior with the "Actor hits Floor" special actor is causing problems with a lot of older maps. This was reported as a bug a while ago but it got locked away before I had chance to chime in. This change actually breaks a large majority of MM8BDM's core maps, and plenty of custom ones too. As Zandronum started to migrate code over from newer Zdoom versions, this came to my attention. The Zandronum team probably won't make implement compatibility flag for something Zdoom doesn't so I have to request this here.
I request a compatibility flag which uses the old Actor hits Floor logic, which did not trigger when a player (or other actor if it was flagged for that) teleported to that sector. The reason that this is a big deal is because we have a LOT of maps that use two way teleporters that use the Actor hits floor actor. This is not a case of us abusing and old hack and finally getting punished for it, I think that the old behavior was correct as they are not "landing" on the floor (because the teleport spots have 0 z height).
I know the list of compatibility flags grows and grows but this is a pretty big deal for me and the rest of the dev team. A lot of older maps are going to be crashing, and while we can update the ones in the core version with some roundabout scripting, many custom maps we aren't responsible for are going to become incompatible.
Re: Compatability flag request for "actor hits floor" logic
In all fairness, if you're here, why can't you patch your own mod? 
Either way, I honestly think that the current behaviour is broken, anyway. ZDoom shouldn't be able to induce an infinite loop using two sector actions. That's too simple to happen.

Either way, I honestly think that the current behaviour is broken, anyway. ZDoom shouldn't be able to induce an infinite loop using two sector actions. That's too simple to happen.
- NeuralStunner
-
- Posts: 12328
- Joined: Tue Jul 21, 2009 12:04 pm
- Preferred Pronouns: No Preference
- Operating System Version (Optional): Windows 11
- Graphics Processor: nVidia with Vulkan support
- Location: capital N, capital S, no space
- Contact:
Re: Compatability flag request for "actor hits floor" logic
I have to agree. I started using floor triggers for most of my teleporters, because line actions will snag players that are moving over the teleport pad at a considerable height. (Flying, getting launched, walking across a bridge...)Cutmanmike wrote:I think that the old behavior was correct as they are not "landing" on the floor (because the teleport spots have 0 z height).
I can't think of another solution besides reverting the change. Worse, I can't think of a good reason to want the new behavior. If we could see some comparison of maps that benefit from the change vs being broken by it, I'm betting it would be heavily biased toward the latter.edward850 wrote:Either way, I honestly think that the current behaviour is broken, anyway. ZDoom shouldn't be able to induce an infinite loop using two sector actions. That's too simple to happen.
There's also Graf's input from that other thread:
Such a delay introduces other problems, though. (The most simple reason being that it's a pain in the ass to use a script where a direct special should be viable.)Graf Zahl wrote:I think the rules for 'actor hits floor' are stupid and too general, this really shouldn't trigger if a sector is entered by teleporting. This was just one of those stupid things that got reported as a bug and Randi dilligently changed it without thinking about the consequences. In any case, recursive teleports, like what happens in this setup are a surefire way to crash the engine, there's not much that can be done about it other than delaying the teleport with a script.
Last edited by NeuralStunner on Thu Jan 15, 2015 5:38 pm, edited 1 time in total.
Re: Compatability flag request for "actor hits floor" logic
I can't find any maps that actually use the new behaviour. If anybody knows any...NeuralStunner wrote:I can't think of another solution besides reverting the change. Worse, I can't think of a good reason to want the new behavior. If we could see some comparison of maps that benefit from the change vs being broken by it, I'm betting it would be heavily biased toward the latter.
- zrrion the insect
- Posts: 2432
- Joined: Thu Jun 25, 2009 1:58 pm
- Location: Time Station 1: Moon of Glendale
Re: Compatability flag request for "actor hits floor" logic
I cannot think of any applications of the new behavior that can't done be in more correct ways.
Re: Compatability flag request for "actor hits floor" logic
TBH I think this should be reverted entirely, with no need for a compatibility flag. Two-way teleporters using Actor Hits Floor is such an obvious use case that I'm legitimately surprised this is just now coming up.
Re: Compatability flag request for "actor hits floor" logic
I came across this again and put together a quick test wad illustrating that the crash still happens:
http://static.angryscience.net/pub/doom ... ecrash.wad
Interestingly, it only occurs if the player jumps on the pad -- just walking on it will not trigger the infinite loop due to the lack of downward velocity or somesuch (need to take a proper peek at the code still). IMO that makes the new behavior inconsistent, though I'm still of the opinion that this should be reverted to the old way by default due to the existing-map crash potential.
While we're on the topic, there's a related old feature suggestion regarding adding the "new" behavior as a separate set of actions (or ideally a flag a la STANDSTILL, IMO), since there's likely use cases for those. So long as it's opt-in.
I might submit a patch pull request myself since I'm back in semi-dev-mode, so this is all sort of a note-to-self.
http://static.angryscience.net/pub/doom ... ecrash.wad
Interestingly, it only occurs if the player jumps on the pad -- just walking on it will not trigger the infinite loop due to the lack of downward velocity or somesuch (need to take a proper peek at the code still). IMO that makes the new behavior inconsistent, though I'm still of the opinion that this should be reverted to the old way by default due to the existing-map crash potential.
While we're on the topic, there's a related old feature suggestion regarding adding the "new" behavior as a separate set of actions (or ideally a flag a la STANDSTILL, IMO), since there's likely use cases for those. So long as it's opt-in.
I might submit a patch pull request myself since I'm back in semi-dev-mode, so this is all sort of a note-to-self.
- Graf Zahl
- Lead GZDoom+Raze Developer
- Posts: 49230
- Joined: Sat Jul 19, 2003 10:19 am
- Location: Germany
Re: Compatability flag request for "actor hits floor" logic
I already added such an option some time ago. Sadly this is one of those cases where there is no solution that allows do do it right and not risk an infinite loop.
Re: Compatability flag request for "actor hits floor" logic
Enabling "Scripted teleports don't trigger sector actions" indeed prevents the lockup, but the fix being opt-in is inadequate. See my post above regarding inconsistency -- if the compat option is off and the player has no downward velocity when teleporting, the script still doesn't trigger, so the non-compat behavior isn't even useful for mappers at present. To get sane behavior, mappers have to explicitly enable a compat flag in MAPINFO.