henry.jarske.net

Writings

Half-Life level design: Basic detail

This is a quick tutorial teaching you to create some of the basic detail and entity functions in Half-Life mapping. These items are very simple to make, and it takes less than a minute to do each of these after you've learned the techniques.

Index

Round hole

basicdetail_roundhole.gif

Tools used: Vertex manipulation or clipping tool

  1. Create a square hole.
  2. Add two small brushes into one corner.
  3. Use the vertex manipulation tool or the clip tool to remove one face from both of the brushes.
  4. Manipulate the vertices so that they make the 90 degree corner look like an arch. See the above image for pointers.
  5. Do the other corners by copying and rotating the brushes.

Joined pipes

basicdetail_joinedpipes.gif

Tools used: Clipping tool

  1. Create two pipes.
  2. Move/resize them so that their joining ends are fully overlapping.
  3. Use the clipping tool to cut a piece off both of them, in a 45 degree angle, so that the pipes won't overlap each other anymore.

Stairs with rails

basicdetail_stairs.gif

Tools used: None (basic brush manipulation)

  1. Stairs
    1. Create a stair, which is just one simple block. Note that the max step height in Half-Life is 16 units.
    2. Copy-paste or clone it as many times you need, each time placing the next block after the previous one and at a different altitude.
  2. Rails
    1. Create blocks to be used as the support pieces for the rail. You might want to convert these to entities (press Ctrl-T and select func_wall) to prevent face splitting when compiling.
    2. Make a long block, and then skew it to fit in between the support blocks. Resize the rails until you're happy with them, so they won't look as bulky as the above example image.

Arched doorway

basicdetail_arch.gif

Tools used: Vertex manipulation or clipping tool

  1. Create a simple square doorway.
  2. Add some blocks to the corners, just like in the round hole part.
  3. Manipulate the blocks to make the corners look round.

You might want to create one side first, then copy-paste and mirror it. It'll be easier and you can make sure that the resulting arch is symmetrical.

Rounded corner

basicdetail_roundedcorner.gif

Tools used: Generic tools

  1. Make the surrounding corner area and leave some space for the actual rounded part.
  2. There are 2 quick ways to create the corner:
    • Create an arch that is 90 degrees long. This is the method I used for the picture. The benefit is that you can easily make both sides of a rounded hallway using arches.
    • Create a cylinder and use the clip tool to cut it so that only a 90 degree slice of it is left.
  3. Now, for the polygon count's sake, parition the floor like it's presented in the picture. Using a separate brush for the corner part helps to limit the face splitting that will occur at the corner area.

Double door

basicdetail_doubledoor.gif

Tools used: Generic tools

  1. Make the frames for the door and place in the brushes for the two (or more) doors.
  2. Select either door and tie it to a func_door.
  3. Change the desired properties and in addition, change the "Name" variable to "door" (without quotes).
  4. Repeat steps 2 and 3 with the other door(s). Basically the only difference would be the direction where any extra doors open.
  5. To open the doors together, you'll need to create another entity right in front of the doors (as shown in the picture). Use the AAATRIGGER texture for this one.
  6. Tie the new brush into a trigger_multiple (or trigger_once if you want the door to open only once).
  7. Then just change the "Target" variable to "door".

Breaking items when C4 explodes in Counter-Strike

basicdetail_c4blow.gif

Tools used: Generic tools

  1. Create an item you want to be destroyed when the C4 explodes. I used a crate as an example, but windows or walls are just as easy.
  2. Select the crate and tie it to func_breakable (by pressing Ctrl-T, for example).
  3. From the entity properties, find the variable "Name" and set it to "crate" (without the quotes).
  4. Then you need to create a bomb target using a brush based entity. Use the texture named AAATRIGGER and tie the brush into a func_bomb_target.
  5. The only variable it has is called "Target (when bomb blows)". Set it to "crate" (once again, without those quotes) so it will trigger the breakable you just created.
  6. If you want to add more breakable items, just give them the same value for "Name" as your first one ("crate" in this example).

You can also enhance the explosion effect by using an env_explosion with an ambient_generic in conjunction with the func_breakable. For more information about these entities, browse through the entity info pages at Valve ERC.