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

Need serious help with 3D midtextures

Recommended Posts

So to put things simple: I'm extremely lost. I have a midtexture in between two sectors that I want to make rise up into the ceiling when a line is crossed. I am using Doom in Hexen Format and please don't say use UDMF. That's all I hear over at ZDoom forums and I know it's possible to do this in Hexen format. I even know there's some vanilla trickery you can do but I'd prefer to figure this shit out.

I have heard you have to use Line_SetIdentification and Sector_Attach3dMidtex together but I cannot even understand what I have to do or which lines of my sectors get which special actions. Linked or attached sectors were also suggested to me, but the same problem is that I don't know how to use the specials.

Here's some pictures of what I'm trying to do. You may recognize the scene, it's Doom 64's MAP01.



Please someone explain how the hell to do this. It's seriously getting on my nerves because it's the only thing I can't seem to figure out for myself and I learned 3D floors within a minute of working with them.

Don't suggest the ZDoom wiki. I've been all up and down it and still can't make sense of where the specials are supposed to go.

Share this post


Link to post

What I would do is make a very narrow sector with that mid texture in it and then raise the ceiling of the sector, and the mid texture should go up with it. If you put no upper textures in that small sector, the hole in the roof should be invisible. If you want to make the line to block the player and then stop blocking the player, you will need another narrow sector that has both sides of all the lines pointing to the same sector, which is called a self-referencing sector and also called a crystal sector. When the crystal sector is closed like a door, it will be solid but see-through. Have the crystal sector open when the other one does. This is an old trick that works even in vanilla.

Share this post


Link to post

Consider that your linedef with the midtexture lies on the boundary of 2 sectors. If the linedef was NOT flagged "Lower Unpegged", the linedef's Y offset would determine the midtexture's fixed offset from the ceiling, particularly the lower ceiling of the 2 ceilings of the linedef's 2 neighboring sectors - therefore, if you triggered the sector with the lower ceiling to raise (or lower) its ceiling height, the midtexture would raise (or lower) along with it, to maintain the fixed offset from it. If the linedef WAS flagged "Lower Unpegged", the linedef's Y offset would determine the midtexture's fixed offset from the floor, particularly the higher floor of the 2 floors of the linedef's 2 neighboring sectors - therefore, if you triggered the sector with the higher floor to lower (or raise) its floor height, the midtexture would lower (or raise) along with it, to maintain the fixed offset from it. So, make sure that your linedef is flagged appropriately to your setup (you want to move the ceiling, so it should NOT be flagged "Lower Unpegged"), and make sure that (of the linedef's 2 neighboring sectors) it's the sector with the lower ceiling height that moves (if the linedef lies completely within one sector, it doesn't matter), and the midtexture will move along with the ceiling, naturally, without any further trickery.

Share this post


Link to post

Since you are using Doom in Hexen format you could use a 3D sector for that door and then raise the floor of the 3D sector, height of the real sector + 1. That way there is no need to deal with offsets or the like.

If you want an example let me know.

Share this post


Link to post

Found a solution that didn't require dummy sectors, self referencing sectors, OR Hexen special trickery.


I drew surrounding sectors around the midtexture (from the vertices of the midtexture against the wall, to avoid HOMs) that met 1 unit in front of the midtexture linedef. Made the midtexture upper unpegged.

Then I drew a 1 unit wide sector that spanned the sector in front of the midtexture and had a 1 unit margin between the walls and the midtexture. Lowered the ceiling of this sector to 8 units above the floor so it would create a transparent vanilla style invisible wall that could later be modified via scripting or other actions.

Then, when the time came, ran a script to lower the floors of the gate, raise the midtexture sector 128 units into the ceiling, and then raised up the blocking invisible wall.

Viola!

Share this post


Link to post
Graf Zahl said:

Sounds like you used a hack over a proper engine feature.

Maybe because the hack actually works and the proper engine feature is not only more difficult to understand than the hack but also poorly documented on the wiki and no proper examples. Maybe that would be something to work on.

Share this post


Link to post

What's so difficult there?

What you need is a sector to move (obviously), and a simple static assignment line to be put on one line of that sector. And the documentation can't be that hard. You need: the moving sector (obvious) the line ID of the 3dmidtex line (also obvious) and the plane to attach the moving midtexture to (again obvious). What's so complicated there? The sector tag can be entirely skipped as the docs say.

You have your sector, this sector certainly has some lines, and you certainly know what line ID your moving line has and which plane (floor or ceiling) you are going to move so from there it should be totally straightforward to set up.

Share this post


Link to post

I tried many multiple combinations of lineIDs and 3dmidtex specials on pretty much every single line in that area. Sectors were linked and the 3dmidtex was attached to the dummy sector that did the moving, but the damn midtexture NEVER moved.

Better yet, how about make an example WAD if it's so easy to do? Show a basic example of a room with a midtexture door using ONLY the aforementioned specials. No UDMF trickery, Hexen format.

Share this post


Link to post

Noob question (and unrelated) but. Isnt UDMF just a basically A more user friendly version of Doom in Hexen format?

Share this post


Link to post
jazzmaster9 said:

Noob question (and unrelated) but. Isnt UDMF just a basically A more user friendly version of Doom in Hexen format?

Not necessarily, at least I don't think.

Share this post


Link to post
jazzmaster9 said:

Noob question (and unrelated) but. Isnt UDMF just a basically A more user friendly version of Doom in Hexen format?


More advanced: yes. Greater ability for customization: yes. More user-friendly: debatable.

Share this post


Link to post

If you prefer crutches over explicit feature support, yes, it may be debatable.
If, on the other hand, you think that stuff like Line_SetIdentification or having to set sector colors through ACS are concepts that should rot in hell, yes UDMF is a more user friendly superset of Hexen format.

In clear English: UDMF can do everything Hexen format can, but it also can do most of the stuff directly that's a pain to set up in Hexen format due to the storage limitations. How anyone can consider that 'user friendly' doesn't make sense (well, maybe people who get quickly overwhelmed by a longer list of options will...)

Share this post


Link to post
Graf Zahl said:

(well, maybe people who get quickly overwhelmed by a longer list of options will...)

Pretty sure that's the point. I'm glad I started with a vanilla map, otherwise the amount of options would've freaked me out (alternatively, just look at any "my first ZDoom map!" to see what that amount of power causes, lol).

Still, oh man am I glad that UDMF is human-readable. More than once I've wrote dirty scripts to generate things on my maps when GZDoom builder kicked the bucket.

Share this post


Link to post
Albertoni said:

More than once I've wrote dirty scripts to generate things on my maps when GZDoom builder kicked the bucket.

If this is reproducible you should make a bug report.

[edit}
On second thought, even when not reproducible, make a bug report anywyas.
Include the GZDB version number and the malformed script.

Share this post


Link to post
Kappes Buur said:

If this is reproducible you should make a bug report.

"Hey, when your editor starts having to deal with 400000+ vertices, things start to get laggy, like ten or more seconds with each edit"

Not sure it's worth mentioning, really. >_>

Share this post


Link to post
Graf Zahl said:

If you prefer crutches over explicit feature support, yes, it may be debatable.

I prefer the engine tricks and stuff because I understand those. Trying to do this process with the other specials exploded my mind, so I gave up and went with the engine trick that I know works, and more importantly HOW and WHY it works.

Share this post


Link to post
Nevander said:

Found a solution that didn't require dummy sectors, self referencing sectors, OR Hexen special trickery. [...]

My idea was similar, but you didn't have to actually lower the ceiling down to the floor and raise it later. Instead, give the linedef a "Line Identification" action, and set "3D mid texture" in the Flags argument. This makes the midtexture blocking. Make sure NOT to give Lower Unpegged flag to the linedef (Upper Unpegged doesn't matter, because it has no effect on midtextures at all). Then when you make the ceiling above the linedef raise (both ceilings on both sides of the linedef must raise - possibly make a single 2-units-wide thin sector that "encapsulates" the linedef by 1 unit on each side), the midtexture will raise too, and it will be possible to walk below it.

Share this post


Link to post
scifista42 said:

Instead, give the linedef a "Line Identification" action, and set "3D mid texture" in the Flags argument.

I just changed it to behave exactly like this. Worked great, thanks. Now I can shoot through it too.

Share this post


Link to post

Unfortunately, by default, only hitscans can pass through 3D midtextures, not projectiles. To make projectiles pass through as well, you have to give "Projectile shoot-through middle texture" flag to the linedef. And I'm not sure if this is possible in Hexen format.

Share this post


Link to post
scifista42 said:

Unfortunately, by default, only hitscans can pass through 3D midtextures, not projectiles. To make projectiles pass through as well, you have to give "Projectile shoot-through middle texture" flag to the linedef. And I'm not sure if this is possible in Hexen format.

Well at least this is on MAP01, so the player won't have projectile weapons unless he cheats. There's not anything on the other side to shoot before it opens anyway. Thanks for the heads up though, if I have this problem in the future and wonder why I keep killing myself from a rocket shot at it I'll know why.

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
×