Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
A.Gamma

Question on one-sided linedefs

Recommended Posts

Just a quick question out of curiosity, what happens when a one-sided linedef is facing outwards i.e., facing into void space?

Share this post


Link to post

Depends on the engine.



In both cases, ZDoom and GZDoom, a projectile goes through the wall.

ZDoom displays a HOM, even worse after a projectile passed through the wall.



GZDoom displays it as if everything is normal.



But try it for yourself to see what happens.

Share this post


Link to post

After playing around with this for a bit in prboom+, I found two differences from the one-sided linedefs facing inwards:

1) Such linedefs get the wobbling effect. Maybe you've noticed before that when you run towards a normal wall and touch it the weapon sprite stops, but when you run towards a grate or something similar the weapon sprite continues wobbling even after you touch the wall and you don't lose the momentum. That's what happens here too.
2) Projectiles fly through such walls (when shot from the back side which doesn't exist).

Share this post


Link to post

Made a quick test map and tried it in different ports:

1)Gzdoom: Looks just fine, projectiles go through the linedef.

2)Zdoom: Same as GZdoom.

3)Prboom+: Same as Zdoom and Gzdoom, also no wobbling effect.

4)GlBoom: Massive HOM, projectiles fly through the wall and has wobbling effect

5)Doom Retro: Everything looks fine, projectiles act normal on the inverse linedef, it crashes when you try to use the wall.

6)Chocolate Doom: Crashes on start, I suppose vanilla does something similar.

This was a fun little experiment, would be cool if the port gurus explained this effect in-depth.

Share this post


Link to post
A.Gamma said:

1)Gzdoom: Looks just fine, projectiles go through the linedef.

2)Zdoom: Same as GZdoom.

3)Prboom+: Same as Zdoom and Gzdoom, also no wobbling effect.

4)GlBoom: Massive HOM, projectiles fly through the wall and has wobbling effect

5)Doom Retro: Everything looks fine, projectiles act normal on the inverse linedef, it crashes when you try to use the wall.

6)Chocolate Doom: Crashes on start, I suppose vanilla does something similar.

7)Zandronum: Crashes with an error message :( Damn "advanced" port.

Share this post


Link to post
A.Gamma said:

3)Prboom+: Same as Zdoom and Gzdoom, also no wobbling effect.

4)GlBoom: Massive HOM, projectiles fly through the wall and has wobbling effect

No way, the game mechanics in prboom and glboom should be exactly the same, the only difference between them is in the graphics. You must have made a mistake somewhere.

Share this post


Link to post
Memfis said:

No way, the game mechanics in prboom and glboom should be exactly the same, the only difference between them is in the graphics. You must have made a mistake somewhere.


That's what I observed, I used the same map and everything.

Also adding 2 ports:

8)Eternity: Refuses to load the map, it does not crash, it just won't load the map.

9)Legacy: Same as Gzdoom and Zdoom.

Share this post


Link to post
A.Gamma said:

This was a fun little experiment, would be cool if the port gurus explained this effect in-depth.

From the guru point of view, there isn't much to say. Such a map is simply invalid and broken, and different node builders will do different things, and different ports will do different things -- including crashing on the invalid data.

There are maps out there (one in 10SECTOR.WAD iirc) which use a one-sided linedef for a special effect, in a place where a two-sided linedef should be. In vanilla DOOM it would create a "one sided window" trick, you can see through the back of the one-sided line (since there is no segs on it), but the linedef is unpassable to players are monsters (since it still exists in the blockmap).

At one stage I had code in glBSP to detect and handle that trick, but it caused more trouble than it was worth (since numerous maps, even in the DOOM 2 iwad, have one-sided lines in wrong places -- MAP14 for example). So glBSP now only handles the trick when a special option is given.

Share this post


Link to post

Are people talking about the same effect? The OP wasn't exact. It can be:
- a linedef missing its front sidedef but having back linedef (is considered malformed and should just crash or error Doom).
- a normal, valid wall linedef, but vertices flipped.

Share this post


Link to post
printz said:

- a normal, valid wall linedef, but vertices flipped.

That.

The linedef itself is valid, but the nearby sector (and map as a whole) is not valid and hence causes undefined behavior.

Share this post


Link to post
andrewj said:

From the guru point of view, there isn't much to say. Such a map is simply invalid and broken, and different node builders will do different things, and different ports will do different things -- including crashing on the invalid data.

There are maps out there (one in 10SECTOR.WAD iirc) which use a one-sided linedef for a special effect, in a place where a two-sided linedef should be. In vanilla DOOM it would create a "one sided window" trick, you can see through the back of the one-sided line (since there is no segs on it), but the linedef is unpassable to players are monsters (since it still exists in the blockmap).

At one stage I had code in glBSP to detect and handle that trick, but it caused more trouble than it was worth (since numerous maps, even in the DOOM 2 iwad, have one-sided lines in wrong places -- MAP14 for example). So glBSP now only handles the trick when a special option is given.


EDGE Engine shows the wall texture.
Missiles, plasma and BFG balls can pass though. Bullets are blocked.

I did several tests with something like this:





Removing the wall texture allows to see from the sector to the left to the smaller sector at the right. There is NO HOM, but I can see though both walls.

With that configuration, missiles pass though big room's wall, and end up colliding with the small room's wall, as you can see here next:





Then, I turned over the small room's ldef to get a construction like the next one:



In this case, the missiles are able to pass through both walls just straight to the poor imp, that will be guessing from where that missile came from:




In either case, the imp in the other room doesn't see the player, even if I remove his wall's texture.

Share this post


Link to post
andrewj said:

At one stage I had code in glBSP to detect and handle that trick, but it caused more trouble than it was worth (since numerous maps, even in the DOOM 2 iwad, have one-sided lines in wrong places -- MAP14 for example). So glBSP now only handles the trick when a special option is given.

As you know, Doomsday's node builder was originally based on glBSP 2.24 and came across the same issue. This has since been fixed however and now "one sided window" map hack detection is always done. Visually, it looks much like Yokai's pics from EDGE.

I'm still working on support for overlapped linedefs, though. Its improved significantly but ZDBSP still fairs a bit better with such constructs.

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
×