Creating Brush Entities: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
m (moved Creating Primitives to Creating Brush Entities: Far more descriptive name)
(redone with a door instead of a breakable crate, which is of greater practical use)
Line 4: Line 4:
| zh-cn = Creating Primitives:zh-cn}} {{first room menu}}
| zh-cn = Creating Primitives:zh-cn}} {{first room menu}}


In Hammer, a [[Primitives|Primitive]] is a relatively simple [[brush]] object. Primitives can be world geometry or interactive entities subject to physics & damage. In this example, we will create an interactive primitive that can be destroyed by the player: specifically, a 32-[[unit]] [http://www.oldmanmurray.com/features/39.html crate].
We have already [[Basic Construction|created brushes]]. There is another side to them: the '''[[brush entity]]'''. Entities are objects which have behaviors, and which can (usually) be interacted with somehow.


[[File:Hammer primitive crate.png|thumb|none|Properly-sized cube with 32x32 texture.]]
In this example, we will create a brush that acts as a sliding door. When the player touches the brush, it will rise into the air and allow passage.


# Select the {{hammer block}} and create a cube in your map.
[[File:Door basic.png|thumb|none|A basic [[func_door]] entity.]]
# Open the [[Hammer_Texture_Browser|Texture Browser]] and [[Hammer_Texture_Browser#Filter|filter]] for '''dev crate'''.  '''Dev/dev_measurecrate02''' should be a 32x32 crate texture.
# Apply the '''dev/dev_measurecrate02''' texture to your cube. {{tip|If the grid on your 2D views is too large to get down to 32 units, press {{key|[}} or click the '''Smaller Grid''' button [[Image:Hammer_SmallerGrid.png]] to create smaller objects on the grid.}}
# Resize your cube using the {{hammer select}} until the texture fits properly on the cube.
# So far, creating primitives for world geometry and for interactive objects is the same.  In order to specify whether our crate is, indeed, world geometry or an interactive object, we must now select it and move it either [[Hammer_New_Objects_Toolbar#toWorld_.3CCtrl.2BShift.2BW.3E|toWorld]] or [[Hammer_New_Objects_Toolbar#toEntity_.3CCtrl.2BT.3E|toEntity]]:[[File:hammer_toEntityButton.png|none|frame|'''toEntity''' button ({{key|Ctrl+T}})]]
# With the crate selected, click the [[Hammer_New_Objects_Toolbar#toEntity_.3CCtrl.2BT.3E|toEntity]] button to tie a [[List_of_entities#Function_.28brush.29_entities|function]] to the primitive. This will bring up the [[Hammer_Object_Properties_Dialog|Object Properties]] dialog box: [[File:Hammer object properties.png|none|thumb|func_breakable object properties]]
# Select [[Func_breakable|func_breakable]] from the '''Class:''' drop-down menu.
# Under '''Keyvalues''', select '''Name''' and name your crate something descriptive.
# Under '''Keyvalues''', select '''Strength'''. The Strength value specifies how much damage the crate can take before breaking. Set the value to '''1'''.
# Under '''Keyvalues''', select '''Material Type'''. The material type specifies the sounds the crate will make and also what type of gibs it will break into.  Select '''Wood''' from the drop-down menu.
# Under '''Keyvalues''', select '''Physics Impact Damage Scale'''. This scales damage energy when the object is hit by a physics object. {{Note|A value of '''0''' means this feature is disabled. Set to 1.0 for materials as strong as flesh, smaller numbers indicate stronger materials.}}
# Click '''Apply''' and close the Object Properties dialog box.


==Crate Texture==
== Construction ==


Once our crate is correctly sized, we can apply a proper texture to it using the same technique we used previously.
# Select the {{hammer block}} and create a new brush. 128x128x16 is a good size, but anything will do. {{tip|If Hammer's grid is too large to get down to 16 units, press {{key|[}} or click '''Smaller Grid''' [[File:Hammer SmallerGrid.png|link=]] scale it down. Never disable snapping unless you really, ''really'' need to!}}
# Move the brush to an entity (also known as "tying" to an entity) using the [[Hammer New Objects Toolbar#toEntity_(Ctrl+T)|toEntity]] button or {{key|Ctrl+T}}:<br />[[File:Hammer toEntityButton.png|border|Hammer toEntity button|link=]]
# This will bring up the [[Hammer Object Properties Dialog|Object Properties]] dialog:<br />[[File:Hammer object properties.png|300px|Object properties dialog]] {{tip|If you need to access the dialog again later, select your brush and press {{key|Alt+Enter}}.}}
# Select [[func_door]] from the "Class" drop-down menu in the top left (you can search by typing into the box) and hit "Apply".
# Near the bottom of the main "Keyvalues" list, find "Move Direction". Either change its value to read <code>-90 0 0</code> or select "Up" from the drop-down list to the left of the black circle.
# Click "Apply" again, then close the Object Properties dialog.


# Open the [[Hammer Texture Browser|Texture Browser]] and [[Hammer Texture Browser#Filter|filter]] for '''crate'''.
You should now be able to compile your map and see the door working.
# Select '''props/woodcrate001a''' and apply it to your cube.  You may have to use the Face Edit Sheet to fit the texture to the cube. {{note|Ensure that the texture is aligned to '''Face'''.}}


And with that, we're done:
== Texturing ==


[[File:Hammer_primitive_crate2.png|thumb|315px|none|A textured, functional crate]]
Open the [[Hammer Texture Browser|Texture Browser]] and [[Hammer Texture Browser#Filter|filter]] for "door". Choose a material that you like and apply it to your brush as you would normally. You might also want to build a wall that connects the door to the edges of your map.
 
[[File:Decorated door.jpg|400px|thumb|none|But don't get too carried away!]]


{{Navbar|Applying_Textures|Your First Map|Adding Entities}}
{{Navbar|Applying_Textures|Your First Map|Adding Entities}}


[[Category:Level Design Tutorials]]
[[Category:Level Design Tutorials]]

Revision as of 05:59, 28 August 2009

Template:Otherlang2

We have already created brushes. There is another side to them: the brush entity. Entities are objects which have behaviors, and which can (usually) be interacted with somehow.

In this example, we will create a brush that acts as a sliding door. When the player touches the brush, it will rise into the air and allow passage.

A basic func_door entity.

Construction

  1. Select the Block tool Hammer block.png and create a new brush. 128x128x16 is a good size, but anything will do.
    Tip.pngTip:If Hammer's grid is too large to get down to 16 units, press [ or click Smaller Grid Hammer SmallerGrid.png scale it down. Never disable snapping unless you really, really need to!
  2. Move the brush to an entity (also known as "tying" to an entity) using the toEntity button or Ctrl+T:
    Hammer toEntity button
  3. This will bring up the Object Properties dialog:
    Object properties dialog
    Tip.pngTip:If you need to access the dialog again later, select your brush and press Alt+Enter.
  4. Select func_door from the "Class" drop-down menu in the top left (you can search by typing into the box) and hit "Apply".
  5. Near the bottom of the main "Keyvalues" list, find "Move Direction". Either change its value to read -90 0 0 or select "Up" from the drop-down list to the left of the black circle.
  6. Click "Apply" again, then close the Object Properties dialog.

You should now be able to compile your map and see the door working.

Texturing

Open the Texture Browser and filter for "door". Choose a material that you like and apply it to your brush as you would normally. You might also want to build a wall that connects the door to the edges of your map.

But don't get too carried away!