Eternity now has UDMF sector scroller properties; scroller fixes

Small quality-of-life change here, I decided to make some properties that let you scroll sectors without any line specials. Nothing is ratified yet, and I'd actually like to hear some input from one of the *ZDoom team, as this would be a nice feature that benefits end-users of both ports. Also, SCROLL_FLOOR AND SCROLL_CEILING VIA ACS WERE BROKEN BEFORE IN ETERNITY, THE SPEED IS NOW FIXED TO BE THE SAME AS ZDOOM'S.

 

Properties so far:

scroll_ceil_x: Double: A value of 1.0 is approximately one unit per second, using the same speed that ACS Scroll_Floor/Ceiling use (from ZDoom).

scroll_ceil_y: Double: A value of 1.0 is approximately one unit per second, using the same speed that ACS Scroll_Floor/Ceiling use (from ZDoom).

scroll_ceil_type: String: Either a value of "none" (default), "visual", "physical", or "both" (visual and physical)

scroll_floor_x: Double: A value of 1.0 is approximately one unit per second, using the same speed that ACS Scroll_Floor/Ceiling use (from ZDoom).

scroll_floor_y: Double: A value of 1.0 is approximately one unit per second, using the same speed that ACS Scroll_Floor/Ceiling use (from ZDoom).

scroll_floor_type: String: Either a value of "none" (default), "visual", "physical", or "both" (visual and physical)

 

The one thing I'm not hugely sure about is the type strings. Whilst I can't see us getting any more types of scrollers, it might be a tad short-sighted to have the "both" thing in there. A better name would be appreciated, if anybody can come up with one.

 

Also, scroll_ceil_type doesn't really work for carrying, as it was a think killough wanted it but never implemented. It's DSTINK and warn you if you try to do so at the moment.

 

Commit: https://github.com/team-eternity/eternity/commit/5b8638a6268a0df13c098da0692685e7d8dd7bda

 

Expect more small QoL changes to come in like this, as whilst UDMF is great for big sweeping changes (like our portals or ZDoom's slopes), I feel that both parties have neglected certain little things that can be done with UDMF properties.

 

EDIT: Fixed some stuff https://github.com/team-eternity/eternity/commit/b7dcdcdb64e1c483c7dbb0ee9d745a8680c34932

Might tweak Scroll_Floor and Scroll_Ceiling to be a bool at some point, which would choose whether or not to override or add on.

Edited by Altazimuth
1 person likes this

Posted (edited)

Share this post


Link to post

How do physical ceiling scrollers work?

 

I'll have a look at your implementation later, this should be relatively easy to port.

 

1 person likes this

Share this post


Link to post
7 minutes ago, Graf Zahl said:

How do physical ceiling scrollers work?

Sorry, didn't see your message until after I edited the first post, the case is there in the thinker, but nothing was implemented. Seems to be a holdover from Boom. Might just restrict the type to "none" and "visual".

 

In ScrollThinker::Think()

case ScrollThinker::sc_carry_ceiling:   // to be added later

 

Edited by Altazimuth

Posted (edited)

Share this post


Link to post

I think "ceiling" would be more consistent with other property names than "ceil" but that's not very important (and there are portal_ceil_* properties already anyway).

 

Having "speed" and "angle" properties might be more user-friendly (and in a way more consistent with the Heretic and Hexen sector types which offer set strengths in various directions), but mathematically the result is the same (polar vs. cartesian coordinates) and it can all be abstracted by the editor UI.

 

31 minutes ago, Graf Zahl said:

How do physical ceiling scrollers work?

They move things that hang from the ceiling?

 

Also I remember having to use a Vavoom-style 3D floor to have a scrolling effect on a 3D floor top before (see sectors #15880 and #15881 in ZDCMP2). It's good to remember that sometimes a sector's ceiling might turn into a floor elsewhere...

Edited by Gez
1 person likes this

Posted (edited)

Share this post


Link to post
38 minutes ago, Gez said:

Having "speed" and "angle" properties might be more user-friendly (and in a way more consistent with the Heretic and Hexen sector types which offer set strengths in various directions), but mathematically the result is the same (polar vs. cartesian coordinates) and it can all be abstracted by the editor UI.

I had considered the idea of angles, but angles in the Doom engine suck (in my opinion) and can be inconsistent with each other already, so I decided to go with what I felt was the more unambiguous solution. Any map editor considers x to increase as you go east, and y as you go north (same for co-ordinates in automap (usually? I dunno if any break that trend)).

 

40 minutes ago, Gez said:

They move things that hang from the ceiling?

Ideally yes, but making this work in practice is a lot harder than it might seem, due to stuff like friction. Your point about 3D sectors is an exceptionally good call, and one I didn't think of.

Share this post


Link to post
1 hour ago, Gez said:

They move things that hang from the ceiling?

Ha, ha.

Try as you want, but they need some entirely different implementation because ceiling-hanging things are not subjected to friction. (Which is why Boom never got to them in the first place.)

 

Share this post


Link to post

Any update on the *ZDoom front regarding this? I'm pretty much ready to make this feature actively documented if you're OK with it as-is.

Share this post


Link to post

This stuff is implemented but not fully tested due to lack of real-life maps.

 

Share this post


Link to post

Oh shit I forgot to send my test map. I fidgeted about with the values in the actual map and ACS script, tested them against ZDoom values as well to make sure that they're the same speed and such.

UDMF_Scroll.7z

Share this post


Link to post
On 2.8.2017 at 8:50 PM, Altazimuth said:

Oh shit I forgot to send my test map. I fidgeted about with the values in the actual map and ACS script, tested them against ZDoom values as well to make sure that they're the same speed and such.

I'll drop a note at the ZDoom developer forum to have it checked. Unfortunately, due to a new job I am extremely short on time right now and won't be able to do much work on Doom until I become better acquainted with the new employer.

 

1 person likes this

Share this post


Link to post

Don't work on it. My shit's broken. Fixing.

 

EDIT: I FIXED THAT SHIT. I feel like such a colossal fucking idiot.

Edited by Altazimuth

Posted (edited)

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now