Buggy Z axis collision with +SOLID walking non-player actors

Forum rules
Please don't bump threads here if you have a problem - it will often be forgotten about if you do. Instead, make a new thread here.

Post a reply

Smilies
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :geek: :ugeek: :!: :?: :idea: :arrow: :| :mrgreen: :3: :wub: >:( :blergh:
View more smilies

BBCode is OFF
Smilies are ON

Topic review
   

Expand view Topic review: Buggy Z axis collision with +SOLID walking non-player actors

Re: Buggy Z axis collision with +SOLID walking non-player ac

by Graf Zahl » Sat Jun 04, 2016 9:37 am

Many original levels would not work without that flag. Been there, done that, mess ensued.

Re: Buggy Z axis collision with +SOLID walking non-player ac

by ZZYZX » Sat Jun 04, 2016 8:44 am

I don't quite understand why is there limited behavior in a newschool port without a compatflag, neither this limitation makes sense (at least for me), but okay, my bad, didn't know about that. Sorries.
Besides, are there iwads or mods that actually rely on this one-sided z blocking?

Re: Buggy Z axis collision with +SOLID walking non-player ac

by Graf Zahl » Fri Jun 03, 2016 5:44 pm

You should do some reading on the MF2_PASSMOBJ (CANPASS in DECORATE) flag. Without this, z-aware actor checks are intentionally limited.

Buggy Z axis collision with +SOLID walking non-player actors

by ZZYZX » Fri Jun 03, 2016 5:28 pm

Tested on zdoom-2.9pre-1000-g9cf1d96, but seems to happen since ancient times (at least ZDoom 2.5.0, probably earlier).

The way I found it, it's impossible to have a player and some other actor to occupy the same X/Y coordinates, no matter what, with infinitely tall actors DISABLED.
Even weirder, the player is able to move above the other actor, but the other actor can't move above/below the player.

Minimal example wad here:
http://www.mediafire.com/download/ticfx ... GGYNAP.wad
SetActorPosition() will fail on the barrel, and if you use "fly" cheat and try to hover above the barrel, it will stop moving on the scrolling floor (but you can still pass above it and it will continue it's movement).

Note that if I change the actor to something that is supposed to fly (i.e. a Cacodemon), it will be successfully teleported to above the player AND THE PLAYER WILL BE ABLE TO MOVE ANYWAY.

Top