Left 4 Dead 2

Left 4 Dead 2

View Stats:
What is the proper use/placement of Nodraw in the creation of a Saferoom?
First of all, to the people around the world who take time to read this post, view the links to the two videos that confused me, and comment & clarify my issue, let me take a moment to say thank you very, very much. We need more ppl in this world like you. I am indebted. Thank you for taking your time to help me.

Where exactly must nodraw brushes be placed in a saferoom?

I arrived at this question from watching a YouTube video that 'World of Level Design' posted (very good videos). Let me repeat, chronologically, the way in which I personally acquired my confusion because that might help you in your assessment of why I'm confused, where I'm at, and why I'm here now asking for guidance.

First I watched this video on YouTube. It is part 1 of 2. The topic is 'Creating a level/map change in L4D'. It's by 'World of Level Design':
https://www.youtube.com/watch?v=MrYMiTQbXPk

You may see an error when it comes to the nodraw topic. Or not. It might not be an error.


Following THAT video I watched part 2 of the series. This is the link to part 2 'Creating a Level/Map Change in L4D':
https://www.youtube.com/watch?v=MrYMiTQbXPk
At approx. 1:40 into part 2 is when he shows nodraw being implemented.


Part 1 and 2 have presented nodraw differently. In part 1, nodraw goes over the door only. In part 2, he states that nodraw surrounds the whole room.

1. Which is correct and why?
2. Should nodraw be placed on the inside of the brushes/walls or on the outside?
3. Where do the nodraw brushes go? Should one put nodraw over the door, above the door (in that little space above the door if there is a little space above the door), etc? Does each brush get a nodraw (does the ceiling, floor, each wall, and the doors too get nodraws?), or does nodraw only go on specific places?
4. Why/what is the purpose of nodraw?
5. Although the videos are for L4D, does this apply in L4D2?

Thank you very much for your time.

Sincerely,
Adam Bein
Los Angeles, California


< >
Showing 1-15 of 29 comments
AlwaysToast Mar 3, 2016 @ 5:02pm 
1. In the first video when he makes the trigger_level_change he made a mistake (or L4D handles it differently than L4D2). If you are building in L4D2 you should not be using Nodraw for that. Use the texture: Trigger. Which is the texture you use for most triggers in L4D2.

2. Any surface you (the player) can’t see while playing.

3. For brushes that make up the physical part of the world: Build everything in Nodraw, then texture the parts that are visible. If you are using a different toolbush (like clip or trigger) just build the whole brush out of that texture instead. Tool textures have different features and uses.

4. Instead of writing a long explanation of Nodraw I’m just going to tell you to watch TopHATTwaffle’s video’s on youtube. Start with basic optimization it should cover what you are asking. His videos are for source games in general.

5. L4D and L4D2 are both done in the source engine. So most stuff works exactly the same. However L4D2 has a bunch of features added to it that didn’t exist in L4D1. Generally building things for each source engine game is very similar, but they each have special little snowflake features and issues that make them work slightly differently. Stick with L4D information when it comes to change levels, finales, nav, zombie spawning, and handling the Director (cause those are all L4D1&2 specific). Anything else you can learn from a general Hammer tutorial.
Rectus Mar 5, 2016 @ 1:30am 
They don't show it of well, but in both videos the brush covers the entire room.

The brush they created in the video is a trigger volume. The idea with that one is that all the survivors must be inside it to trigger the transition to the next level, so the important part is to have it cover the volume where the survivors can be in the safe room.

Also, you should tie the trigger brush to an info_changelevel entity instead of trigger_changelevel, since the latter has issues in the L4D games.
Last edited by Rectus; Mar 5, 2016 @ 1:30am
❤️Liko❤ Mar 9, 2016 @ 5:11pm 
You. guys. rock. Tyvvm 'Always Toast' and 'Rectus'!
❤️Liko❤ Mar 20, 2016 @ 9:58pm 
I have made a spawn room and a saferoom. I have assigned 'trigger brush' to each wall, the ceiling, the floor, the area above each door, I'm not sure if each door tho'.

Currently the walls are transparent. I can see right thru them-except of course you see the words 'trigger brush'. What does one put on the walls to make it so one does not see 'trigger brush'? A decal? An overlay? An extra brush wall inside AND an extra brush wall outside (you end up with a sandwiching effect at that point).

Lets say I just want to make the room have some sort of brick look. What's the way to do this-keep in mind, the goal is to make the wall look like it's got brickwork on it but also retain it's 'trigger' capability.

I have taken a screenshot. I'll try to post that to my user page.

Tyvm for your time.

Adam

Link to my account/screenshot:
http://steamcommunity.com/sharedfiles/filedetails/?id=649641967&fileuploadsuccess=1
Last edited by ❤️Liko❤; Mar 20, 2016 @ 10:02pm
Rectus Mar 21, 2016 @ 1:12am 
You shouldn't make the walls of the rooms themselves into triggers. The trigger brush needs to be a separate brush inside the room. It's not a part of the level geometry and will not show up or be solid if it is tied to a info_changelevel entity.

There is an example map in \left 4 dead 2\sdk_content\DeadLine2\mapsrc\l4d_deadline01.vmf that shows a working safe room.

Valve also has a step-by-step tutorial on how to make it (checkpoints part)s: https://developer.valvesoftware.com/wiki/L4D_Level_Design_Basics_Tutorial
Evil Mar 21, 2016 @ 11:17am 
Not going to watch the videos, but i'll give you a few tips. As stated, create the walls with 'nodraw' (it's best to make every wall with this texture so the game registers it as a solid wall and not something temporarily blocking the path). Apply the wall texture you want to visible surfaces (with 'toggle texture application', not 'apply current texture'). Place info_landmark in the middle of the room (horizontal and vertical planes). Name it something. Next, create a trigger brush covering the floor of the safe room. Change the trigger class to info_changelevel and name it (change level trigger or whatever). Add the name of the landmark into the info, and enter the name of the transition level (without this, the level won't end).

It should be noted that no visible surface should have the 'nodraw' texture, or it will cause a direct visible (though not physical) leak to the skybox (creating that weird smearing texture when you move)
❤️Liko❤ Mar 21, 2016 @ 10:29pm 
Thanks you very much Rectus and Cemetra.

Cemetera,
1. I changed the walls from being triggers to being 'no draw'. Thank you for that. You can Rectus both actually.

2. I have made the walls of the safe room a brick texture. I used the 'toggle texture application' as you said. In doing so, the 'no draw' is no longer visible. Is the 'no draw' still there or it, like a texture would be, has been replaced?

3. I've got an 'info landmark' in the room. Thanks for mentioning that. You say middle. I think the 'World of Level Design' guy says to put it up above the heads of the characters. Maybe he does so because for his safe room, that spot is the horizontal and vertical middle of the room. Hmm...

4. Trigger brush: I see. Put the trigger brush on the floor. The World of Level Design guy has the trigger brush on the door too. I do NOT understand yet how ya' do that.

Rectus,
1. I assume that bold link you put in is found in what I've downloaded. Thank you for that-I'll take a look at it.
2. I've been reading that link/guide. It's just not detailed enough-or else I'm not grasping something.

Thank you both very much.
Evil Mar 21, 2016 @ 11:39pm 
The nodraw texture is still on the brush when you apply a new texture. Which does make me wonder how much information the surface saves, since i've had issues in that regard.

As for the landmark, I usually put it near the ceiling myself. It's just a good measure to start with center I guess. You need to do 1 of 2 things to transition smoothly. You can either save the map as a new name, or copy every non-physics entity in the saferoom (including the walls/ceiling/floor) and paste it to a new map. This will make sure the landmark transitions to the same spot in the next map. If you don't do this, all transitioned physics items will respawn incorrectly.

4. I haven't used that on a door, but I guess my safe rooms are generally a box shape. You're suppose to mark the nav mesh as 'checkpoint' in the saferoom, as long as you're on those squares when the door closes it should register.


Not surprised you didn't understand those guides. I re-read those things tons of times and could never actually achieve what I was trying to by reading them.
❤️Liko❤ Mar 24, 2016 @ 7:34pm 
@ Rectus,

Ahhhh. Yep, I see, you're right, the room is surrounded by a trigger volume.
Thanks Rectus!
AlwaysToast Mar 25, 2016 @ 4:32pm 
Originally posted by Cemetera:
You can either save the map as a new name, or copy every non-physics entity in the saferoom (including the walls/ceiling/floor) and paste it to a new map. This will make sure the landmark transitions to the same spot in the next map. If you don't do this, all transitioned physics items will respawn incorrectly.

You can also build the safehouse as a separate map fragment, and put it inside both maps using a func_instance. So if you do any future modifications to the safe house the changes will be identical, and you don’t have to do them twice.

However the landmark and trigger have to be in the main map not the func_instance, since you only want them on the map which ends there. You can easily line up the placement of the landmark on both maps by using a skip brush or two in the func_instance to show you where to put the landmark.
❤️Liko❤ Mar 26, 2016 @ 8:43pm 
Tyvm Toast. I have no idea what much of that means but I get the concept-you don't have to make the changes twice.
❤️Liko❤ Mar 26, 2016 @ 10:24pm 
Good. Lord. 4 hours later, here's what I've accomplished:
I have managed to put make 5 small maps. Ea. map has 2 rooms. In each map, room #1 is a spawn room, room #2 is the saferoom. FYI, each 'map' is one BIG room inside of which are 2 smaller rooms. The maps compile fine.
Each room has a landmark and ea. landmark is named properly-each is different than all the others.

I ATTEMPTED to put a trigger brush around my map #1 saferoom #1. It compiled fine, but when I attempted to go into the room the trigger brush wouldn't let me. O.O I bonked right into it. How rude! Ow!

I have made the walls thicker in the safe room. Inside each wall and floor I made a narrow brush that is a trigger brush.
Problem #1: Flickering. I can see the trigger brushes thru the wall. I think I need to pull the edge of the trigger brush further deep into the wall to eliminate this effect.
Problem #2: Does one put a trigger brush ON the safe room doors or is that not necessary?
Problem #3: In lieu of putting trigger brushes on ea. door (and probably in lieu of putting trigger brushes in each wall and the ceiling?) put just one and plut it on/in the floor?

Of course, label the trigger brush/es like one is supposed to, but that's later, once the brush/brushes are in place.

Thinking #1: I wonder if it is better to remove the 'room' and instead, simply go with an 'area' if you will. That'd eliminate the dynamics (which my be confusing me) of having a saferoom door.

Thinking #2: Does the safe room door activate anything? Is the answer to this a "Yes, but only if you assign it to act as a source of 'input' (kind of like a button is a source of input) itself. Thus, since I'm a noob, I shouldn't make my first door a source of input.

Anyone have any advice/thoughts?

Thank you for your time of course.
Rectus Mar 27, 2016 @ 1:02am 
Ok, simple step-by step to making the trigger:
1. Create a single brush with the trigger texture. Have it fill the inside of whole safe room. (Its easiest if you have simple square room.)
2. Select the trigger brush and press the Tie to Entity button on the right.
3. A properties window should pop up. Pick info_changelevel from the entity class dropdown.
4. Press Apply, and fill in the name of the next map and the landmark entity.

The trigger brush will now be invisible in-game and let you walk through it.

The idea with the info_changelevel trigger brush is that all the players will be inside of it before it transitions to the new level.

It doesn't technicaly have to be a room, but you need to have a safe room door and it needs to be the only way to get in (on the nav mesh). The game finds the safe room door and monitors it automatically, so you don't need to do anything with it except place it in the doorway. To transition, it checks if all the survivors are inside the info_changelevel and if the checkpoint door is closed.

If you're making a testing map, make sure to put a corridor between the stating and ending safe rooms, or you will get nav issues.
Last edited by Rectus; Mar 27, 2016 @ 1:02am
Evil Mar 29, 2016 @ 8:47pm 
TH #1 Once you follow what Rectus said, the trigger won't interfere. It's easiest to use the clipping tool to make door ways btw. Make a wall and select the clipping tool, click it twice so neither side of the clip is red. It's also handy to know that holding ctrl and left clicking will select multiple items. It also works in reverse, so you can hold ctrl and de-select one item too (from a clipped wall for example)

TH #2 Any rotating door can be a trigger. Say you want to have a door remain locked until it's unlocked by another door opening; you'd give both doors a name, you'd set the second door to 'locked' in flags (also starting it unbreakable is a good idea), and you'd give the first/saferoom door an output like: OnOpen - unlockingdoor1 - SetBreakable - Delay 0, OnOpen - unlockingdoor1 - Unlock - Delay 0:01.

Originally posted by Rectus:
Ok, simple step-by step to making the trigger:
2. Select the trigger brush and press the Tie to Entity button on the right.
3. A properties window should pop up. Pick info_changelevel from the entity class dropdown.
Spot on. Hitting ctrl+T is easiest though (just saying incase the o.p. gets confused)
❤️Liko❤ Mar 31, 2016 @ 8:03pm 
Hi. Hey you guys, if you would, please be so kind and check my work and thought process. I would be very grateful for your assessment and evaluation.

Here's my report. Thanks.
Adam

In the interest of understanding the concept of map changing I have created the following structure:
In one folder I've got all my maps.


1. Maps: I've got 5 maps. My maps are named:
StreetsOfNewYorkMap1
StreetsOfNewYorkMap2
StreetsOfNewYorkMap3
StreetsOfNewYorkMap4
StreetsOfNewYorkMap5


2. Each map is simple. There is only one big room inside of which there are only 2 rooms. 'Saferoom A' and 'Saferoom B'. Let's not use the term 'spawnroom'.


3. Each saferoom has one landmark in it. Thus, there are 2 landmarks in each map. There are, or will be, 9 or 10 landmarks total.


3A. However, I have NOT put a landmark in StreetsOfNewYorkMap1 Saferoom A.
Question:
3A: Should there be a landmark in Saferoom A? Saferoom A IS after all, the very, very first saferoom. As such, is a landmark needed or alternatively, is it a MUST that the landmark be omitted?
The landmarks are named, or will be named, as followed:
landmarkmap1saferoomA
landmarkmap1saferoomB
landmarkmap2saferoomA
landmarkmap2saferoomB
landmarkmap3saferoomA
landmarkmap3saferoomB
landmarkmap4saferoomA
landmarkmap4saferoomB
landmarkmap5saferoomA
landmarkmap5saferoomB


4. Each map has one 'info_director'. The 'info_director' is located in each map's 'Saferoom A'. There are, or will be, 5 'info_directors' total.
5. Each 'Saferoom A' is the spawn room on it's map.
6. Each 'Saferoom B' has a trigger brush in the middle of the walls, in the ceiling, and in the floor. There is no weird flickering, the trigger brush is well hidden/covered.


Here we go:
7. On StreetsOfNewYorkMap1 (SONYM1 let's call it), in Saferoom B, on the trigger, I have clicked the trigger and when the 'Object Properties:" box pops up, I chose a 'Class' of 'info_changelevel'.
Have I done the following correctly?
Questions:
7A. Name: I have put nothing under the 'value' column.
7B. New Map Name: I have put: StreetsOfNewYorkMap2
7C. Landmark Name: I have put: landmarkmap2saferoom1


I'm going to stop here and wait for your feedback on this. I want to make sure I'm on the same page as you guys with this.

Thank you very much for your time, analysis, and responses.

Adam in Los Angeles.


< >
Showing 1-15 of 29 comments
Per page: 1530 50

Date Posted: Mar 3, 2016 @ 2:42pm
Posts: 29