Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
plums

lifts that go below deep water

Recommended Posts

I'm trying to find out if there's a way to have a lift go below deep water in Vanilla or Boom, so that the lift floor texture disappears beneath the water. I thought I got it once using self-referencing sectors but when I resaved the wad the effect no longer worked, and I can't seem to recreate it, so maybe I was wrong.

Here's an example that's close, but you can still see part of the lift if you stand at the right place, and with freelook in GLBoom it's very easy to spot. Looks great in GZDoom though. Maybe someone can improve on this?

http://www.mediafire.com/download/c6dydzxfi4itbhp/deepwtr2.wad

Also, this gets full of HOM if the player goes under the water (try the switches to your left), but fixing that might be too much to ask for.

Share this post


Link to post

As far as I know, the design of BOOM deep water won't allow such things to work. The only reason it works in GZDoom is that it is a GL renderer and therefore uses proper geometric primitives to render the equivalent of visplanes. Don't know why the same doesn't apply to GL Boom; but there's probably a good explanation for it in the code.

Share this post


Link to post

If it helps your understand of what's happening here, the way I always look at Boom's Create Fake Floor and Ceiling effect is as follows: A sector under this effect will always act as it should, but the way that it is drawn (i.e. how it looks) is controlled by the control sector. So if your actual sector has a floor at height 0 and ceiling at 128, that is how it acts, but if the control sector's floor is at -640 and ceiling is at 128, it'll look like a deep pit but you'll float in the air when you walk over it. (You can see this in action if you lower the water level quite a lot in your wad). Should you go under/over the fake floor/ceiling height, then this triggers the "underwater" effects (which is basically just again basing how the floor and ceiling looks on properties of the control sector).

The reason why you are getting HOMs is because you've got untextured lower linedefs. Just like if you were raising the actual floor height in the pool instead of the fake one, you'd see a HOM where there are missing textures. For the sake of understanding, give the front sidedef on all of the lines that make up your pool a lower texture, raise the water above the height of the pool, and you will be able to clearly see the regions that previously led to HOMs.

Another tricky issue with untextured walls is "flat bleeding". When the game draws the screen, the floors and ceilings are drawn in the spaces that weren't covered by drawing the walls. When an upper or lower linedef is left untextured, the game wasn't told that these spaces have been covered up and so the flat being drawn directly above or below this space "bleeds" out over the space and you see that flat drawn instead of a HOM (HOMs happen when absolutely nothing gets drawn in that space, leaving behind what pixels existed in that pert of the screen in the previous frame). This is the concept that lets instantly appearing monster traps work, the monsters are hiding in a giant pit but you can't see them from far away because the untextured lower walls of the pit are covered by the nearby ground flat "bleeding" over them.

This flat bleeding concept is why your pool appears to have the lift go under the water from a distance but when you get up close you can look down and see it. There is actually no water over the top of the lift, but the untextured lower linedefs that should be surrounding that square below the water line are just bleeding the water flat over them instead of showing a HOM. Give the back sidedefs on the 4 lines that make up the lift square a lower texture and all will be revealed as to what's going on.

Now if you give one of the other 2 linedefs that make up your control sector the create fake ceiling and floor effect, and tag it two, then this will make your lift drawn as if it were the water and that issue of seeing the lift floor up close will disappear.... except your lift will then be totally invisible (because the way it is being drawn is how the water looks).

Now theoretically I bet you can fix all of your issues by giving the lift sector its own fake ceiling and floor and then use complicated voodoo-doll-on-a-conveyor-belt timing trickery to make the control sector move in line with the lift and also change its flat at the appropriate times. Sounds like a fun challenge, but it'll take a bunch of fiddling around and I haven't really got the time this week, sorry. (But apparently I have enough time to write this post :p )

If none of this makes any goddamn sense whatsoever then do let me know and I'll see if I can explain it better tomorrow.

Share this post


Link to post
Melon said:

If it helps your understand of what's happening here, the way I always look at Boom's Create Fake Floor and Ceiling effect is as follows: A sector under this effect will always act as it should, but the way that it is drawn (i.e. how it looks) is controlled by the control sector.

That's a good way to think of it. I can follow along directions well enough but it's still a bit hard to get intuitively.

The reason why you are getting HOMs is because you've got untextured lower linedefs.

My bad, that wasn't the HOM I was talking about, I know that is just from lazy missing textures. What I meant was if you raise the water level, then step into the water and lower the lift, then stand on the lowered lift while it and you are still underwater, you lose the colormap effect and get a whole lot of HOM, even with full upper textures. I'm quite sure it's because the lift sector doesn't have any fake-floor/ceiling effects on it, but I'm not sure how to remedy it, if such a thing is even possible.

Another tricky issue with untextured walls is "flat bleeding"... This flat bleeding concept is why your pool appears to have the lift go under the water from a distance but when you get up close you can look down and see it.



I've got flat bleeding figured out pretty well, and I did realize that's what was going on there. I was just hoping there might be some other tricks to hide it better. I was playing around with self-referencing sectors a bunch, and while I got sometimes different results compared to using property transfers, they weren't any better. My current solution in my non-test wad is just "make the lifts smaller", which works well enough.

Now if you give one of the other 2 linedefs that make up your control sector the create fake ceiling and floor effect, and tag it two, then this will make your lift drawn as if it were the water and that issue of seeing the lift floor up close will disappear.... except your lift will then be totally invisible (because the way it is being drawn is how the water looks).

Thought about combining this with the 3D-bridge technique using STEPTOP, but for what I'm working on it won't really do. Still something to keep in mind.

Now theoretically I bet you can fix all of your issues by giving the lift sector its own fake ceiling and floor and then use complicated voodoo-doll-on-a-conveyor-belt timing trickery to make the control sector move in line with the lift and also change its flat at the appropriate times.


I thought of doing this too, and then I immediately thought of not doing it, because ughhh. It would be a hassle for a single left, and a nightmare for a lot of them.

If none of this makes any goddamn sense whatsoever then do let me know and I'll see if I can explain it better tomorrow.

Everything made perfect sense, and I appreciate the thorough reply. thanks!

Share this post


Link to post

Isn't it possible even in vanilla Boom?

So you have such a lift. While it's above water, the fake floor moves simultaneously at the same height as the real floor. When it submerges, the fake floor remains at the height of the water, the lift only moving by itself.

Share this post


Link to post

But then the fake floor will rise before the real one. The only way to time it right with lifts is for the fake floor to always be the same height above the real one, which will look weird when the lift is not lowered. Unless there's something I'm not thinking of?

Share this post


Link to post

When the lift breaks the fluid surface, the tag on that sector has to be changed to avoid the Deep Water. The only way to do it that I have been able to guess at is to watch with a script and then change the sector attributes when the height gets above the fluid level.

I have wished to use such a lift myself, but knew of this problem, and I do not know of a Boom way to get around it. Either the sector tag must change, or the model sector floor textures and height must change, or the Deep Water linedef controlling it must change.

Share this post


Link to post

I'm stubborn and still working on this. So check this out!
http://www.mediafire.com/?ix2an92dz66ig4s

It uses superposed sectors for the lift; the one with the extra diagonal linedef is the lift, and the other one has the same properties as the surrounding sector including the property transfer tag.

In both prboom+ and glboom+ it works great! When you're above water, the lift disappears entirely underneath the waterlevel when you lower it. Below the water, the water surface stays uniform when the lift lowers(apart from an extremely tiny outline, something I can live with). At its lowest level the floor texture of the lift disappears but that's fine too. It even holds the colormap properly (not present in the above file).

Unfortunately this looks horrible in GZDoom's GL renderer with missing textures on the lifts, and still bad in the software renderer (and so probably in ZDoom as well). Such hacks were never meant to be supported I guess. I bet most other ports, especially GL ones, won't look good either.

Also, I had to use BSP-W32 to build nodes, and if I delete one of the unused control triangles (sector 7) everything gets ruined, presumably something to do with reordering sector indexes.

Share this post


Link to post

Thanks! I've been playing with overlapping sectors/linedefs/etc. a bunch since that last post, and it seems like there's a lot of uncommon effects that can be made with them, but most ports just don't support them. I get why, and probably most of the tricks can be done in something like ZDoom through other means, but it's still a bit sad.

Share this post


Link to post

"Superposed sectors are like ghosts: they can be seen but are not solid."

So could it be somehow possible to use this to create vanilla deep water that actually displays a water ceiling when you're beneath the surface?

Share this post


Link to post

I haven't found a satisfactory way to do that yet. You can have a ceiling that looks too small to walk under but isn't (though this still looks pretty funny) but not the other way around. I think that quote from the wiki is bad phrasing anyhow.

I feel like it's a bit unlikely that I'll discover any new tricks like this for Vanilla, but maybe I'll try at it some more.

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
Sign in to follow this  
×