Compatability flag request for "actor hits floor" logic

Moderator: GZDoom Developers

Post Reply
User avatar
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

Post by Cutmanmike »

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.
User avatar
edward850
Posts: 5886
Joined: Tue Jul 19, 2005 9:06 pm
Location: New Zealand
Contact:

Re: Compatability flag request for "actor hits floor" logic

Post by edward850 »

In all fairness, if you're here, why can't you patch your own mod? :P

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.
User avatar
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

Post by NeuralStunner »

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 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...)
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.
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.

There's also Graf's input from that other thread:
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.
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.)
Last edited by NeuralStunner on Thu Jan 15, 2015 5:38 pm, edited 1 time in total.
User avatar
edward850
Posts: 5886
Joined: Tue Jul 19, 2005 9:06 pm
Location: New Zealand
Contact:

Re: Compatability flag request for "actor hits floor" logic

Post by edward850 »

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.
I can't find any maps that actually use the new behaviour. If anybody knows any...
User avatar
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

Post by zrrion the insect »

I cannot think of any applications of the new behavior that can't done be in more correct ways.
User avatar
Xaser
 
 
Posts: 10774
Joined: Sun Jul 20, 2003 12:15 pm
Contact:

Re: Compatability flag request for "actor hits floor" logic

Post by Xaser »

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.
User avatar
Xaser
 
 
Posts: 10774
Joined: Sun Jul 20, 2003 12:15 pm
Contact:

Re: Compatability flag request for "actor hits floor" logic

Post by Xaser »

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.
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
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

Post by Graf Zahl »

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.
User avatar
Xaser
 
 
Posts: 10774
Joined: Sun Jul 20, 2003 12:15 pm
Contact:

Re: Compatability flag request for "actor hits floor" logic

Post by Xaser »

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.
Post Reply

Return to “Closed Feature Suggestions [GZDoom]”