nyuuzyou/wikis huggingface dataset:
L4D2 Level Design/Witch Bride

In Left 4 Dead 2 the witch has a alternative version wearing a bridal dress. As seen in The Passing.
The only difference between this witch and the default is the model.
==Spawning==
The bride witch can be spawned in multiple ways, but every approach requires you to precache the model, else the map crashes.
To precache the model, add a prop_dynamic to a unreachable area in your map, using models/infected/witch_bride.mdl
If you do not have any viable unreachable location, create a hollow Nodraw block around the witch prop_dynamic and place it into the void.
===Via info_zombie_spawn===
The best way to spawn a bridal witch is using info_zombie_spawn.
Place it where you would like to have your bride spawned, call it WitchBrideSpawnpoint and use witch_bride in the "population" field.
Now you have a spawnpoint, but you need to actually spawn the witch now.
Any entity capable of firing outputs can spawn the witch, via the following outputs:
	Depends on entity	WitchBrideSpawnpoint	SpawnZombie	<none>	0.00	No
As a reference Valve had used the info_gamemode entity with the following outputs to spawn the witch in Coop and Versus, but not in Survival:
	OnCoop 	WitchBrideSpawnpoint	SpawnZombie	<none>	0.10	No
	OnVersus	WitchBrideSpawnpoint	SpawnZombie	<none>	0.10	No
===Via Missionfile===
One way of spawning a bridal witch is using the missionfile. Only drawback is that all witches on the map will be wearing bridal gowns.
Required Setup in missionfile:
 "1"
 {
 	"Map" "c6m1_riverbank"
 	"DisplayName" "#L4D360UI_LevelName_COOP_C6M1"
 	"Image" "maps/c6m1_riverbank"
 	"WitchVariant" "models/infected/witch_bride.mdl"
 }
==See also==
*Wandering Witch
*Infected Populations
Category:Left 4 Dead 2
L4D2 Sound Mod Creator

The Sound Mod Creator is a program made by "LUKeM a.k.a Neil - 119" over at the l4dmaps community, l4dmaps redirects to gamemaps but the tool can't be found. Its purpose was to simplify the creation of basic L4D2 sound mods. 
== How It Works ==
The tool scans for available Source games and enumerates a list of all available sounds for each game. Then, it allows the user to browse the sounds, filter by name, replace existing sounds with custom MP3s/WAVs/OGGs etc. Moreover, it handles all file type/length/bitrate conversions internally through ffmpeg. Lastly, the program can package VPKs for sharing sound mods with friends.
Category:Left_4_Dead_2Category:Third Party Tools
L4D Custom Music Tutorial

Category:Left 4 DeadCategory:Sound SystemCategory:Tutorials
This tutorial will go over how to customize the Music Director for your campaign using themapname_level_sounds.txtfile.
If you are planning on creating custom soundscripts as well, you should still follow this tutorial and append those scripts to the level_sounds.txt.
There are 9 steps to this method of adding custom music to your campaign: 
# Create a text file called mapname_level_sounds.txt in your add-on's maps directory.
# Copy ALL the contents from the example soundscript into that file.
# In the missions file of your add-on, find the NAME parameter and pick a short name that has no spaces.
# In notepad, press to find and replace XXXXX with the same name you used in missions.txt NAME field.
# Begin replacing any WAV files you choose in the script to reference your own files. (Do not include sounds/ in the paths, it's assumed.)
# Load up Left 4 Dead and turn off all add-ons except the one you are working on. (Other campaigns' custom sounds may cause trouble if you don't.)
# In the console, enter snd_rebuildaudiocache and wait about 5 mins for it to finish.
# Copy the _master.cache file from yourmaps/soundcache, place it in your add-on's maps/soundcache directory.
# Package your campaign into a VPK and test it out in-game. Your custom music should work!
== Custom Music Script File ==
This is the example soundscript you need to copy.
It is a stripped version of the game_sounds_music.txt to only include the Events you need to edit for your campaign.
It is highly recommended allowing a greater insight into what each section is for when deciding on what to change.
You may also opt not to change anything in the file, which will give your campaign the default music cues associated with the Airport campaign.
http://www.evolvedant.com/soundscript/example_script.zip
== Example Tips ==
If your campaign is called "Awesome" and contains maps such as l4d_awesome_forest, l4d_awesome_campsite, etc…
Your add-on's maps directory should contain l4d_awesome_forest_level_sounds.txt:
center|500px
The NAME parameter in your missions.txt would be "awesome" and look like this:
Here's how your sound script would look properly edited to make use of thriller.wav:
center|500px
== See also ==
* L4D Campaign Add-on Tutorial
L4D Glow Effect.h

Copy and paste this code into a file called ge_screeneffects.h into < your game folder >\game\client\
See also: L4D Glow Effect.cpp
///////////// Copyright © 2009, Goldeneye: Source. All rights reserved. /////////////
// 
// File: ge_screeneffects.h
// Description:
// Post process effects for GoldenEye: Source
//
// Created On: 25 Nov 09
// Created By: Jonathan White <killermonkey> 
/////////////////////////////////////////////////////////////////////////////
#ifndef GE_SCREENSPACEEFFECTS_H
#define GE_SCREENSPACEEFFECTS_H
#ifdef _WIN32
#pragma once
#endif
#include "ScreenSpaceEffects.h"
class CEntGlowEffect : public IScreenSpaceEffect
{
public:
	CEntGlowEffect( void ) { };
	virtual void Init( void );
	virtual void Shutdown( void );
	virtual void SetParameters( KeyValues *params ) {};
	virtual void Enable( bool bEnable ) { m_bEnabled = bEnable; }
	virtual bool IsEnabled( ) { return m_bEnabled; }
	virtual void RegisterEnt( EHANDLE hEnt, Color glowColor = Color(255,255,255,64), float fGlowScale = 1.0f );
	virtual void DeregisterEnt( EHANDLE hEnt );
	virtual void SetEntColor( EHANDLE hEnt, Color glowColor );
	virtual void SetEntGlowScale( EHANDLE hEnt, float fGlowScale );
	virtual void Render( int x, int y, int w, int h );
protected:
	int FindGlowEnt( EHANDLE hEnt );
	void RenderToStencil( int idx, IMatRenderContext *pRenderContext );
	void RenderToGlowTexture( int idx, IMatRenderContext *pRenderContext );
private:
	bool			m_bEnabled;
	struct sGlowEnt
	{
		EHANDLE	m_hEnt;
		float	m_fColor[4];
		float	m_fGlowScale;
	};
	CUtlVector<sGlowEnt*>	m_vGlowEnts;
	CTextureReference	m_GlowBuff1;
	CTextureReference	m_GlowBuff2;
	CMaterialReference	m_WhiteMaterial;
	CMaterialReference	m_EffectMaterial;
	CMaterialReference	m_BlurX;
	CMaterialReference	m_BlurY;
};
#endif
Category:Programming
Category:Left 4 Dead
L4D Level Design/Additional Finale Components

== Creating a Rescue Closet ==
Rescue closets can be placed anywhere in Left 4 Dead levels, not just finales. It's basically a room with a closed door and 3 info_survivor_rescue entities in it. The nav mesh can be marked with the RESCUE_CLOSET attribute, but this usually happens automatically when you analyze the nav.
Start by creating the room.
The room doesn't have to be any specific size or shape. It can even have more than one doorway. Most of the rescue closets in Left 4 Dead are closets or bathrooms.
Now, place a prop_door_rotating in the doorway. Open up its properties.
The only thing to note is that the Spawn Position should be "Closed".
Inside the closet, place 3 info_survivor_rescue entities. A maximum of three Survivors can be rescued at once.
Go to the Entity Tool and select "info_survivor_rescue" from the Objects drop-down menu.
Place 3 of these inside the closet.
Save and compile your level and run it in the game with .
Create the nav mesh for the rescue closet area.
Select the nav mesh inside the rescue closet () and use "mark RESCUE_CLOSET" to mark it with the RESCUE_CLOSET attribute.
== Adding a Minigun ==
Go to the Entity Tool and select "prop_minigun" from the Objects list.
Place it in the Camera viewport.
Done.
The optional fortification model is a prop_static with the World model called "props_fortifications/fortification_indoor_01.mdl". You can find it if you type "fortifications" in the filter.
Don't forget to modify the nav mesh where the minigun is placed.
Category:Left 4 Dead
Category:Left 4 Dead 2
Category:Level Design
L4D Level Design/Clip Brushes

Looking around the tutorial_standards.vmf level in Hammer, you may have noticed that some of the brushes placed do not actually render in the game version of the level.
Similar to the trigger_changelevel brush that you created in the checkpoint tutorial, all trigger brush entities are invisible in the game.
There are also clip brushes that can block survivors and infected.
You can use these to cover geometry that players can get stuck on. The railings for the stairs in tutorial_standards.vmf are a good example of this.
To make a clip brush, simply create a brush and attach the tools/toolsclip texture to it.
Brushes with this texture applied to them will block all players, npc's, and physics objects. They will not block bullets.
You can also just block players by using the tools/toolsplayerclip texture.
This is handy for above walls and fences that you want infected to climb over but you don't want players to accidentally get knocked over.
The exterior area shown here from tutorial_standards.vmf is a good example of this.
== Nav Blockers ==
Sometimes, you may want to block the nav mesh without adding a clip brush. You might even want to block the nav for just survivor bots or just infected. You can use a brush entity called a func_nav_blocker to block the nav.
In the tutorial_standards map, a func_nav_blocker brush entity has been used to keep the survivor bots from trying to use the ladder nav before the ladder has been raised.
To create a func_nav_blocker:
# Use the Block Tool to create a brush along the area of the floor that you want to block the nav.
#: 
# Apply the "tools/toolstrigger" texture to the brush.
# Use Tools > Tie to Entity to turn the brush into a brush entity and open the brush properties.
# Change the Class to "func_nav_blocker".
# Change the Name to something unique. In this case, I've used "ladder_nav_blocker".
# Change the Team(s) to block to "Survivor". If you want to block infected only, then change it to "Infected".
You can also unblock the nav that a func_nav_blocker is blocking by sending an input to it.
Add an output with the following:
* My output named: "OnFullyClosed" (This is set up for the ladder that gets raised.)
* Target entities named: "ladder_nav_blocker"
* Via this input: "UnblockNav"
Category:Left 4 Dead
Category:Left 4 Dead 2
Category:Level Design
L4D Level Design/Finale Events Part 1

The 5th map in each of the campaigns that shipped with Left 4 Dead had a finale where the survivors would need to call for help on a radio, fight waves of infected and tanks in one location, and escape onboard a vehicle. There is also an example of this in the tutorial_standards map.
== Final Event Components ==
There are several things that you need to make a finale work properly:
* A trigger_finale – the radio that you call for help from.
* An area of the nav mesh marked with FINALE.
* An escape vehicle that picks the survivors up (usually a prop_dynamic with an animation).
* A trigger_multiple to check if all the survivors have made it to the escape vehicle.
* Four info_survivor_positions for the survivors to teleport to when they're rescued.
Optional but standard things that you should place in a finale:
* Supplies (ammo stash, weapons to switch to, health packs).
* A point_viewcontrol_multiplayer which is a camera for the outro.
* Some env_fade entities to fade in/out the camera during the outro.
* An entity called "env_outtro_stats" for the credits to roll during the outro.
* A prop_minigun that the survivors can use for defense.
* A rescue closet – a small room with a door and three info_survivor_rescue entities inside.
== Placing a trigger_finale ==
Go to the Entity Tool and select "trigger_finale" from the Objects drop-down menu.
Place it in the Camera viewport and open its properties.
Click on the World model row and click on the Browse button on the right side.
Type "radio" in the Filter field.
Select the model "props\terror\hamradio.mdl" and click OK.
Change the Name to "radio".
Change the Disable Shadows field to "Yes".
This will allow us to send an input to "radio" or the trigger_finale and it won't allow a shadow to draw through the table.
There is also a Use Delay field that we use frequently. This is the amount of seconds before the finale will start after pressing the button. For now, just leave this as the default value of 0.
Save and compile your level with .
After the level loads, enter nav edit mode with .
Use "noclip" to fly to where your trigger_finale is.
Select the nav areas around the trigger_finale and grow the selection just like you did with the BATTLEFIELD areas in the Panic Event/Minifinale.
Use "mark FINALE" in the console to add the FINALE attribute.
Frequently used Nav attributes:
* PLAYER_START
* EMPTY
* CHECKPOINT
* BATTLEFIELD
* BATTLESTATION
* FINALE
* NOT_CLEARABLE
* NO_MOBS
* OBSCURED
* RESCUE_CLOSET
* RESCUE_VEHICLE
Category:Left 4 Dead
Category:Left 4 Dead 2
Category:Level Design
L4D Level Design/Getting Started

__NOTOC__ 
The first step is to launch Hammer, the map editor for Left 4 Dead and other Source games.
Open the Steam window, pick the Tools tab and double-click Left 4 Dead Authoring Tools.
If this is your first time launching the Authoring Tools, it will take a little time to download and install.
 
Double-click Hammer World Editor to start the Hammer level editor.
 
Once Hammer is loaded, you can start a new level by going to the New from the File menu.
 
A new window with four editing areas should appear. 
 
== Hammer Editor interface layout ==
 
Here is a basic description of the Hammer interface. You will learn how to use these items throughout this tutorial, so don't worry about learning about how they all function quite yet.
=== Map Views and Operations bars ===
These bars across the top of the window contain a variety of buttons to control the viewing of objects in the map, as well as controls for the grid and snapping tools.
=== Tools bar ===
The Tools bar switches the editor to different modes that allow you to select, build, place, texture, and manipulate different objects in your level. 
=== Selection Mode bar ===
The Selection Mode bar switches between modes of selecting objects in the map:
* Groups — You will select the whole sets of objects that have been grouped together.
* Objects — You will select an entire object even if it consists of more than 1 component.
* Solids — You will select individual components even if it has been joined with others to make one object.
=== Texture bar ===
The Texture bar allows you to see the currently selected texture and to browse for other textures by going into the Browse... button. 
=== Object bar ===
Used to place objects in your level that are not simple geometry. While brushes are the basic building blocks of levels, entities placed with the Object bar are pretty much everything else. You can place lights, props (models) and items using the Object bar. 
=== VisGroups bar ===
VisGroups are a way to organize your level. You can place any type of object into VisGroups and label them so that you can hide them or reveal them as a group. This allows you to see what you're working on in a much cleaner way than leaving everything visible.
=== Status bar ===
The strip along on the bottom of the interface gives valuable information while you're editing, such as the size of the selected objects and the current grid settings.
Category:Left 4 Dead
Category:Left 4 Dead 2
Category:Level Design
L4D Level Design/Nav Flow

The flow is a numeric representation of the distance from the starting checkpoint towards the ending checkpoint.
Flow values let the AI systems quickly decide who is "ahead" or "behind," when players are near the checkpoint, etc. The flow is determined by setting the attributes: PLAYER_START, CHECKPOINT, and FINALE.
To see the flow of the whole nav mesh at once, enter these commands:
 z_debug 1
 z_show_flow_delta 2
For z_show_flow_delta, "1" will show the delta for the area you point at, "2" shows the flow for the whole active area set.
If the flow is broken, the survivor bots will not be able to compute a path to the ending checkpoint and board elevators, there will be no wandering Infected, Tanks, or Witches and the rescue closets won't work correctly. Basically, the game will be broken.
Another way to tell if the flow is broken is to run the following:
 z_debug 1
 z_show_flow_distance 1
This will show two numbers on each area. The numbers represent Units Increasing Toward Goal/Units Increasing Away From Start.
If the numbers are -9999/-9999, then the numbers are invalid and the flow is broken.
If the flow appears to be broken, that means that Survivors can not reach the destination of the level (the end checkpoint or the finale).
This could mean a few things:
* The starting area (the PLAYER_START area or the starting CHECKPOINT) is not set up correctly
* The destination area (the end CHECKPOINT or the FINALE) is not set up correctly
* The nav mesh does not connect throughout the level correctly.
Double-check that your level has a PLAYER_START area or a CHECKPOINT at the beginning. The CHECKPOINT at the start must have the requirements mentioned in the Checkpoint Rooms Tutorial.
Double-check that your level has an ending CHECKPOINT area or a FINALE. The CHECKPOINT at the end must have the requirements mentioned in the Checkpoints and Checkpoint Rooms Tutorials. The FINALE must have the requirements mentioned in the Finale Events Tutorial.
You can perform a "nav_trouble_report orphan" check to see if the nav mesh does not connect throughout the level. It should also select the part of the map so that you can check the border area where it should connect.
== See also ==
* Sorting out navigation flow
Category:Left 4 Dead
Category:Left 4 Dead 2
Category:Level Design
L4D Level Design/Visibility

== Visibility basics ==
The file extension for the maps that are compiled is .bsp. BSP stands for Binary Space Partitioning. Basically, the game engine only needs to draw areas of the level that are visible from where the player is standing. This helps with the performance of the level (how fast the frame rate is). To do this, the engine cuts up the level into chunks called leafs. If the player is standing in a leaf that sees into another leaf, then that leaf is drawn. Regular (non-entity) brushes determine where the leaf cuts get made. Brush entities, such as the func_ladder that we created in the previous section, do not affect where cuts are made.
So why would you not want brushes to cut up the level into more leafs? If you have more brushes that cut up the level, the engine has to do more work to calculate visibility and more cuts in the map also mean a higher number of faces to draw.
Any brush that you create that will not block visibility effectively should be a brush entity called a func_detail. These func_detail brushes are still solid in the world, but are ignored for visibility calculations.
* This is a very basic explanation of the game engine's visibility system. For information on BSP and visibility drawing in greater detail, see Visibility optimization.
== Create tutorial03.vmf ==
In Hammer, open the map file tutorial02.vmf that you created in the previous tutorial if it's not already open. This should be located in the tutorial mapsrc folder, by default: 
 C:\Program Files\Steam\steamapps\common\left 4 dead\sdk_content\mapsrc\
Now we'll make a new version to work with:
* Go to File menu and choose Save As...
* Change the name to tutorial03.vmf.
== Creating a Platform ==
Sticking with our level called tutorial02, let's create a platform that extends the upper floor where we created our ladder.
Using the Selection tool, duplicate the back wall brush that we extended out to create the upper story in the last tutorial by -dragging it. Reshape it to be a platform that extends out from the upper story on one side.
It should be 368 units wide, 176 units long, and 16 units deep.
Feel free to re-texture the bottom of the platform so that it matches the ceiling and floor.
Now, go to the Tools menu and choose Tie to Entity. You can also use the + keyboard shortcut.
The default Class for a brush entity is func_detail.
If you see something else under the Class drop-down menu, you will need to change a setting in Tools > Options > Game Configurations tab.
Make sure the Default SolidEntity Class field is set to "func_detail".
That's it. You're done! You just created a brush that will not cut up the BSP into more leafs.
== Run the map ==
Press to open the Run Map dialog and click on the OK Button to compile the map and run it in the game.
== Good candidates for func_detail brushes ==
So how do you know to make a brush a func_detail or not?
Details such as:
* Columns and beams
* Trim
* Frames
* Small platforms
* Posts
* Furniture
* Trusses
Category:Left 4 Dead
Category:Left 4 Dead 2
Category:Level Design
L4D Level Design Basics Tutorial

A step-by-step guide on creating Left 4 Dead levels using the Left 4 Dead Authoring Tools. 
Once complete, you may wish to look at Level Design Category for more advanced articles. 
 A similar step-by-step guide for new L4D2 features and an overview of L4D2 level creation are also available.
== See also ==
* Level Design Category
* Introduction to Editing
* Level Design Video Tutorials
* L4D2 Level Design - Additional Features in the Sequel
* Left 4 Dead Level Creation
* Left 4 Dead 2 Level Creation
Category:Tutorials
Category:Left 4 Dead level design
Category:Left 4 Dead
Category:Left 4 Dead 2
LIN

Linear Pointfile formerly known as Pointfile helps you find leaks in your map, a brush that doesn't close the void, or a func_areaportal that does not fully close a room. 
This file is created if your map contains leaks, a file with your map's name will be created in the VMF's location, using a .lin extension (e.g. my_map.lin). When a map is no longer leaking, the file will be deleted next time VBSP runs.
== File format ==
Each row of numbers are points and location (coordinates) in . The first row is the starting point and the last row is the end point.
64.000000 576.000000 -16.000000
126.000000 576.000000 64.000000
126.000000 128.000000 128.000000
126.000000 56.000000 112.000000
== See also ==
* Hammer Map Menu - Load Pointfile. To load this file into Hammer, open your map in hammer and then load the file by using the Map>Load Pointfile option, a red line will appear in the 3D main view port which will go from a random point in the void through the leak in your map to the nearest entity to the leak.
lin
lin