nyuuzyou/wikis huggingface dataset:
WiseAPC

==Introduction==
The request for this tutorial was: APC comes barreling in, stops, and begins an attack against the player.
In this tutorial we are going to:
#Use the Valve HL2 “apc_on_path” prefab.
#Fire events with a trigger.
#Our finished project will be a tiny HL2 map, when the player first steps forward they will activate a trigger, the APC will come barreling in, stop and begin to attack. Even for a tiny little HL2 map it’s going to work great.
Let’s begin.
==Creation==
First create the trigger. You can make your triggers any size you want, open a few of the sample maps Valve has provided us with and look at the ways they use and . Our trigger only needs to fire once, so let's use trigger_once. Make sure the Clients flag is checked.
Now we’re going to insert the HL2 “apc_on_path” prefab. (I’m going to give the step by step for those who are not sure how to do this.)
#Click on the Entity tool. (Looks like a Chess piece)
#On the right side of Hammer click on Categories and select “Prefabs HL2”.
#In the Objects list select “apc_on_path”.
#Place your mouse in the Top 2D view port and then left click to set the location.
#Make adjustments in the Top and Side 2D view ports then click “Insert original prefab” or press .
#While these objects are grouped place them exactly where you want them by clicking on the Selection tool and then moving them with your mouse in the 2D view ports. You can rotate this group of objects at the same time by clicking once on the group in the Top 2D view port so you now see 4 white handles instead of 6, now hold and drag one of the 4 corners to rotate the entire group. Holding constrains the group to precise angles, which is very helpful if you need objects at 45 degree angles. Click on it twice again in the Top 2D view port to return the 6 handles.
With your “apc_on_path” HL2 prefab still selected ungroup all of the objects by pressing . We can now make individual changes. Notice the rollermine floating in the air? That’s our APC driver, . Those blocks on the ground are the path for our npc_vehicledriver. The APC itself is a . We are not going to create any inputs for this; our npc_vehicledriver will do all the work.
Now that they are no longer grouped alter your APC and it's path as needed.
Now let’s create a few outputs in the trigger_once we placed in front of Gordon.
	OnTrigger	apc_1_driver	StartForward		0.00	No
	OnTrigger	apc_1_driver	StartFiring 		2.50	No
That’s it. Compile the map and run it in HL2. In this same example I’ve added three crows: . The crows are triggered with the APC and then they fly away. The crows are just a bonus; they have nothing to do with the prefab we used.
WiseAiSound

==Introduction==
 is an entity that makes sounds, or smells, that can be sensed by NPCs. The player can’t smell of course but they also will not hear these sounds. (In this project I've also included a sound the player can hear, to be played at the same time.) This entity is used to cause reactions from nearby NPCs.
https://web.archive.org/web/20060226222438im_/http://www.akilling.org:80/akg/assets/wiseAiSound02.jpg
==Creation==
In this project I’m using a with random timer settings to alert the NPCs in the area. The two citizens in this project will continue to warn Gordon, move out of the way of danger and even cower. 
The Sound and Smell types available are:
*Combat: Causes most NPCs to become alert.
*World: Causes most NPCs to become alert.
*Danger: Causes most NPCs to move away, can also warn Gordon.
*Bullet Impact: NPC Alert
*Carcass: Unknown, un-tested.
*Meat: Unknown, un-tested.
*Garbage: Unknown, un-tested.
*Thumper: causes antlions to run away briefly
Three levels of readiness cause NPC Player companions that can sense this to be ready.
*Readiness: Low
*Readiness: Medium
*Readiness: High
This entity has a special property named Location Proxy. You can specify another named entity, or even the . This new object will be the proxy location for the AI sound. ai_sound can also be parented, which can come in handy for many map needs. Take for example the moving sound of an incoming missile.
You have to name this entity to use it. The input it receives to alert NPCs is InsertSound, with a parameter for volume (1-100) which influences detection radius.
The Sound Type property I’ve set for the ai_sound in this project is Danger. When the logic_timer triggers the input it will alert the NPCs. This is a handy entity for any project involving NPCs. It’s simple to use and provides the random NPC actions that spice up a level.
https://web.archive.org/web/20060226222420im_/http://www.akilling.org:80/akg/assets/wiseAiSound01.jpg
==See also==
*Example VMF
*Example VMF backup
WiseAltpath

When using on 's it’s often handy to have an alternative path. Imagine a train that is on a track, the player has to stop the train and push a button, then once back on the train it follows another set of tracks.
In this project I’ve used a Roller_Spikes.mdl parented to a func_tracktrain.
The roller will follow a triangular path on the left side of the screen for 3 loops. It will then switch to a triangle on the right side for three loops. This will continue indefinitely. 
This is down with 5 path_track entities with one of them acting as a track switch. I’m using a math_counter to change the track but the very same effect can be achieved with triggers, buttons, etc. When the map loads the train will be moving from the start. Each time it passes switch01 I’m adding a value to a math_counter. When the math_counter gets to 3 it will switch the track.
Give each of the path_track entities a name that reflects their role. This helps as you are working on your map.
The math_counter:
*Name: math01
*Initial value: 0
*Min legal value: 0
*Max legal value: 3
	OnHitMax	switch01	ToggleAlternatePath	 	0.00	No
	OnHitMax	math01 	Subtract 	3	0.50	No
The path_track, switch01:
*Next stop target: path_a1
*Branch Path: path_b1
	OnPass	math01	Add	1	0.00	No
When the train gets to path_track switch01 an output will add the value 1 to the math_counter.
When the math_counter gets to 3 it will fire an output to ToggleAlternatePath which will instantly change the train to the alternate path.
WiseAttachment

==Introduction==
In , NPC’s can hold things like tools, weapons, and clipboards. To do this you first need to find the attachment points for the NPC you’re working with. To find the attachment points load the model viewer, from the SDK launcher. From the File menu load the model for your NPC. Click on the Attachments tab and you can now view the valid attachment points for this NPC.
Look in the image to the right where hat is currently highlighted. Attachment hat is one of the valid attachment points for this NPC. The three attachment points we’ll use for this project are hat, ladel_attachment and cleaver_attachment. You can close the model viewer after you have made a note of this information.
==Creation==
In this example I’m using a to place the tools in the NPC’s hands and the hat on the NPC’s head. The first thing we need to do is add the tools and hat and make sure the Parent of each is our NPC. Give the NPC a name. I’ve named this cook. The hat, cleaver and ladel are all .
The three models are:
*models/chefHat.mdl
*models/props_lab/Cleaver.mdl
*models/props_lab/Ladel.mdl
The outputs for the logic_auto are all pretty predictable. When OnMapSpawn (map load) fires, it sends cleaver01 (the cleaver prop) the input SetParentAttachment with the parameter cleaver_attachment (one of the attachment points from above). Vice Versa occurs for the ladel and hat. Now when the map loads the tools will be in the NPC’s hands and the hat will be in place.
==See also==
*Example VMF
*Example VMF backup
WiseBoards

They’re a fairly common sight in HL2, boards that block your indented route but can be broken to get past. This will be a short tutorial because these are really easy to create. This is what the example I’ve created looks like in HL2:
The pallets you see are used in this example so you can know how to create the same effect but where the wood can not be moved or broken. The boards blocking the door can be blown to bits. You should experiment with the flags for the effect you desire but for this tutorial I’m going to show the settings that I used for a standard need, just block the passage but allow the player to break their way past.
The only flags checked are Start Asleep and Break on Pressure. I have also disabled Shadows for these boards, clumped like that the shadows would probably just be a waste of system resources.
The only other setting I’ve changed, and it is not the same for each of these boards is: Health Level to Override Motion. Experiment with these numbers. The objects you use can have their motion disabled until their health reaches a certain about of health. So for example these boards could start to fall just before they fall apart.
The pallets in this example are all and in this example I don’t want them to take damage or move so these are the flags I set: Start Asleep, Don’t take physics damage, Motion Disabled, Not affected by rotor wash, Prevent Pickup.
The model I used is: models/props_junk/wood_pallet001a.mdl And the only setting that you need to pay attention to is Health.
You can do some pretty amazing things with these two entity types in HL2. Our pallets for example could all have the same name and be triggered to go away in the event of an input as the result of an explosion. If that didn’t make sense just imagine pallets in a room that blows up, when the dust clears the pallets are gone but they didn’t take damage up until that point. Just a thought.
==See also==
*Example VMF
*Example VMF backup
WiseBreakableIce

==Introduction==
In this project:
*Snow is falling on a winter day.
*Player spawns on ice.
*Will break through the ice, in center, or can shoot the ice to break it.
*Once in water player will have the illusion of being under an ice hole.
The ice in this project is created with default HL2 SDK materials for snow and glass.
Ice in a frozen lake like this doesn’t need to be specular so you can easily create your own ice materials or import materials from the original Half-Life mods.
==Creation==
To create the hole in the ice I covered the entire body of water with a normal brush 4 units thick and then used the Clipping tool to cut a hole in the center. This hole can easily be shaped any way you want. Once you have made your cuts with the Clipping tool select all of the pieces that will become the breakable section, do this by holding as you left-mouse click on them. Once all of these sections are selected press and convert them to func_breakable. Once they are func_breakable you can adjust the properties as needed. For these I’ve chosen all of the settings for breakable glass. By changing the Prop Data of our func_breakable to Glass.Window and a Strength of 20 it can now be broken by damage, like the shotgun.
I’ve also added a trigger_once in the center of the ice to send this output to the func_breakable:
	OnTrigger	ice01	Break		0.25	Yes
When the player gets to that trigger it will break the ice one quarter of a second later. You could easily play a groaning sound and maybe even a few cracking sounds before breaking the ice.
The material I used for the upper ice layer is nature/snowfloor002a. On all other faces of the breakable section I’ve used tools/toolsnodraw. On the side faces of the normal brush used for ice I’ve applied glass/glasswindow070a. These are the faces that will show when the breakable section is gone.
To get the illusion of being dark under the ice I’ve used normal brushes with the tools material tools/toolsblocklight. When you use normal brushes textured with tools/toolsblocklight its important to experiment with the size of your brushes. Typically they will work best at blocking light when they are 16 units thick. In this project that would look odd, the shadows wouldn’t match the body of ice. I ended up making the tools/toolsblocklight brushes under the ice 4 units thick and the ones around the sides 8 units thick. They ended up casting a nice dark section of the water under the ice.
Another effect I added to make the water darker was using one of the cheap water materials. These are easier for system to render and also come in handy for project like this. The water material I used is nature/water_dx70.
In the center of the water under the ice I’ve created a brush shaped like the hole that can be broken through the ice and converted it to env_bubbles. The env_bubbles is completely textured with tools/toolsnodraw and the keyvalues are:
*Bubble density: 1
*Bubble frequency: 7
*Speed of current: 7
Above the entire map is a func_precipitation brush. The properties I’ve used are:
*Density: 6
*Color: 100 100 100
*Precipitation Type: Snow
==See also==
*Example VMF
*Example VMF backup
WiseCanisters

==Introduction==
These canisters are awesome because Valve packed tons of effects into them. When you begin working with them you’ll notice there are more than the usual inputs and outputs plus additional properties and flags. We can just stick these canisters in the ground and then they can be triggered to come rocketing out of the sky, crash with sound and smoke then spawn headcrabs. There are many ways to use these and lots of effects that you can use with them.
==Creation==
For this tutorial we’re going to build the one in the image. In the game it will come down from the air. Trust me.
Create an partially stuck in the ground, with these properties:
*Pitch Yaw Roll: (Use the “Point At” button to point at the spot of origin.)
*Name: cannister01
*Which Headcrabs to spawn: Normal headcrabs
*Headcrab count: 3
*Flight Speed: 2700
*Flight Time: 1.5
*Impact Damage: 100
*Smoke Duration: 60
*Flags: No Launch Sound, Land at Initial Position, Wait for Input to Open, Wait for Input to Spawn Headcrabs
Now place three s on the ground around the env_headcrabcanister.
*Hint: Headcrab Burrow Point
*Node FOV: 180 Degrees
*Start Hint Disabled: No
*Minimum State: Idle
*Maximum State: Combat
Next place s all around the canister. Placement is not important, these are hints the headcrabs can use but they will also bypass these to attack or burrow in the info_node_hints above. Place about 6 of these around the canister. Don’t check any of the flags and there’s nothing to set, just place them and forget them.
Create 3 s and place them around the canister. These are not needed but they add a nice effect.
*Name: exp01 (All three, same name)
*Magnitude: 85 (85-100 is typically enough)
*Limit to Entity: cannister01
Create and place an .
*Name: canister01_sound
*Sound Name: d1_canals_05.canister_open
*Volume: 8
*SourceEntityName: cannister01
*Flags: Start Silent, Is NOT Looped
Place a in the map.
*Name: relay_exp
*Start Disabled: No
(Porter's note: I decided to omit wisemx's detour into how to make a trigger because it was really off-topic.)
All the map events start with a . It has one output: when the output OnStartTouch fires, it targets cannister01 (the env_headcrabcanister) with the input FireCanister.
WiseCanister canister io.png|Outputs for the env_headcrabcanister.
WiseCanister relay io.png|Outputs for the logic_relay. Note that while relays do have purposes, this one did not serve much of any real purpose in this isolated situation.
==See also==
*Example VMF
*Example VMF backup
WiseColumns

==Quick explanation==
#Create three cubes with the texture you will be using on the columns.
#Place the cubes end to end like blocks.
#Select all of the outside faces and create displacements with the power of 3. Do not select the end faces, only select the 4 sides of each of the three cubes.
#Click the Subdivide button.
#Delete the two end cubes, they are no longer needed.
#Stretch the remaining cube to the height/length required.
In the image above all of the displacements were stretched to size. The same method is used for vertical or horizontal columns.
==Detailed instructions==
Chose the texture you’ll be using and then create three cubes with the square dimensions of the width required for your column. In the image below only the cube in the center will be kept, the other two are used to make sure the center cube will be straight and smooth.
Open the Face Edit tool, click the Displacement tab and then select all of the outside faces of all three cubes by holding as you left click on them. (Leave the Face Edit tool open but out of your way.) Again, do not select the end faces, only select the 4 sides of each of the three cubes.
Click the Create button and chose a power of 3. (Use 2 for minimal smoothness and 4 for the maximum, 3 is typically best as it is better than 4 on system performance and smooth enough for most everything.) After you create the displacement surfaces click the Subdivide button. What remains is somewhat of a mess, but we’re going to delete those end cubes now, the stretch the remaining center cube to size.
WiseCustomSound

The sound file formats you can use in your maps are WAV and MP3. Custom MP3 and WAV files are both used in this project.
Notes:
#You can not preview MP3’s in Hammer.
#Keep the overall file size in mind, WAV files can be enormous.
#Use clever names for your sound files. i.e. mapnameWaterFall.wav
#Try to use your own folder to prevent conflicts.
#Please respect copyright laws.
The first thing to do is create the folder for your custom sounds. For this tutorial I’ve used a folder named akilling. The path under HL2 for my sounds is: \Half-Life 2\hl2\sound\akilling\. Notice that it’s \sound\ and not \sounds\. Now place your custom sound files in this folder. It’s important to do this before you load Hammer so the sounds will show in the browser. Because my folder is called \sound\akilling\ I can use the word akilling to filter for my sounds. (Porter's note: In most games, you actually HAVE to put your sound files under another folder in \sound\ or they won't work.)
Make sure when you use the Sound Browser that Raw is your current Sound Type. (Porter's note: You can choose to give your sounds a Soundscript entry to give you extra sound features, but for this you don't need to.)
https://web.archive.org/web/20060227093337im_/http://www.akilling.org:80/akg/assets/wisecustomsound01.png
Once you select the sound filename in your it should include your folder like this:
https://web.archive.org/web/20060227093343im_/http://www.akilling.org:80/akg/assets/wisecustomsound02.png
Remember you can not preview MP3’s in Hammer but you can preview WAV files.
A few things to consider are:
#How will you play the sound.
#Will it be looped.
#Can/Should the sound be heard everywhere.
In this project I’m playing the sound files from a . When the map loads the lights will come on and the Zombies will begin singing. When the song ends the lights go back out, clapping is heard and the Zombies leave.
https://web.archive.org/web/20060227093331im_/http://www.akilling.org:80/akg/assets/wiseCustomSound03.jpg
The colored Zombies in the image above are not a trick. I simply changed the FX type and color. You can play sounds automatically or with a variety of input methods. The logic_auto I’ve used here could just as well have been a trigger or button. Once you have your custom sound files playing in your map you will want to embed them into your BSP before distributing it.
==See also==
*VIDE
*Map Analyst
*Map
*Sounds
WiseDarkness

https://web.archive.org/web/20060209233352im_/http://www.akilling.org:80/akg/assets/wiseDarkness01.jpg
#A map with no lights, and no leaks, will be fullbright.
#Light entities, light and , have a Brightness property where in this example “255 255 255 200” 200 is the brightness.
#The entity sets the color and angle of the light from the sun and sky. When used with a skybox.
In the example file for this project I’ve created a series of rooms that show how to create ambient effects and pitch black effects. In the image below I’ve applied the texture tools/toolsblack. The other walls in the same room will react to light and cast shadows, you can use your flashlight in the game to light up the textured side of this same room but even your flashlight will not illuminate the tools/toolsblack side of the room, it will remain pitch black.
https://web.archive.org/web/20060209233343im_/http://www.akilling.org:80/akg/assets/wiseDarkness02.jpg
In the opening leading to the open skybox area I’ve placed a normal entity and have used these settings for it:
*Brightness: 254 216 146 8
*Appearance: Normal
*Maximum Distance: 0
I have also placed an in that area because as you know they are needed for proper transition of light. The area shown below needs proper transition of light.
https://web.archive.org/web/20060209233332im_/http://www.akilling.org:80/akg/assets/wiseDarkness03.jpg
In the image below you can see that I’ve created a skybox over half of this map and I’ve created a small skybox around an opening in the wall for a prop gate.
https://web.archive.org/web/20060209233337im_/http://www.akilling.org:80/akg/assets/wiseDarkness04.jpg
To create the outdoor light for this project I’ve placed a with these settings:
*Pitch Yaw Roll: -42 59 0 (Pointing down, use the “Point At” button.)
*Brightness: 175 230 239 50
*Ambient: 43 45 57 5
I’ve also changed the Map properties Skybox Texture Name to sky_day01_09. To view the available skybox textures use the texture browser with the keyword skybox. As you will notice many of the textures end with bk, dn, etc. When you type in the name for the skybox textures you want to only include the name, as in sky_day01_09 rather than sky_day01_09dn.
==See also==
*Example VMF
*Example VMF backup
WiseDoor

==Introduction==
There are many ways to create a door in the engine and it’s much easier now than it ever was. 
==Creation==
The first thing to do is create a and we’re going to use a HL2 door model for it. The door we are using has 14 skins, which means that with this same tutorial, you have 14 doors you can use. The door can also have a Lever or Pushbar style handle, which won't show in (unless using ) but will when you run the map.
*World Model: models\props_c17\door01_left.mdl
*Skin: 4
*Hardware Type: Lever
*Spawn Position: Closed
*Rotation Degrees: 95
*Speed: 80
*Fully Open Sound: Doors.FullOpen4
*Fully Closed Sound: Doors.FullClose4
*Moving Sound: Doors.Move3
*Delay Before Close: 30
*Damage Inflicted when Blocked: 10
*Health: 0
*Locked Sound: DoorHandles.Locked1
*Unlocked Sound: DoorHandles.Unlocked1
*Force Closed: Yes
*Flag: Uses closes
Experiment with these settings to fit your own needs, you may for example not want the door to close by itself.
===Door Placement===
There are a few ways to place your door, I find it easiest to put the door in place and then build the wall around it but that method doesn’t always fit the need.
In this example I’ve placed the prop_door_rotating and set the World model to the door model we are going to use, now I’ve placed it in the spot I want it and will create a few walls for this tutorial. If you do, you will probably want to create a door frame for most of your doors so allow enough space for the frame and the door, but for this example, it’s just a door and the walls.
Once I've created the walls around the door and applied the texture to my walls, which only takes a few minutes, our door doesn’t look too bad. Granted it would be improved if I took the time to create a door frame before I built the walls. You’ll find the method that works best for your needs.
Here are the 14 doors
Image:wisepropdoors0000.jpg
Image:wisepropdoors0001.jpg
Image:wisepropdoors0002.jpg
Image:wisepropdoors0003.jpg
Image:wisepropdoors0004.jpg
==See also==
*Example VMF
*Example VMF backup
*WiseDoorBreak
*WiseSlidingDoor
*WiseOneWayDoor
Category:Level Design