Check out Half-Life Re-imagined competition results!
Check out Skewing textures in Hammer, our newest tutorial!
Say hello to timadam, our newest member!


Site Stuff






Feeling Blue

What's your favourite shade of blue?














5 mins


11 mins


37 mins

Instant Mix

45 mins


47 mins


56 mins


57 mins



A gaming and technology blog by TWHL admins Penguinboy and Ant. A music blog by TWHL users Ant and Hugh.

Hammer Beta

By Chris 'autolycus' Bokitch

This document contains the latest information on the Hammer 3.5 public beta! Download the beta, then come back and post your feedback and suggestions.


Be sure to read the changelog and notes, below. The Hammer beta file below contains a copy of hammer.exe. It should be copied over your old Hammer executable. If you need to revert to the original version of Hammer, you can download the original executable here. Make sure you also download the updated FGDs.


This is the current changelog. It must be stressed that this is a work in progress, not a final release, so your comments and feedback are quite valuable.

  • added model rendering in the 3D view
  • added pointfile viewing to the 3D view
  • modified Half-Life and DoD FGDs to add model viewing support
  • improved the texture application tool and advanced compile mode dialog UI
  • separate pitch, yaw, and roll angle compasses added to entity properties
  • "animate models" toggle in 3d options
  • adjustable viewdistance for models in 3d options
  • selectable animation sequences
  • customizable 3D view background color
  • more to come


  • The angle compasses in the entity properties still don't work. They have not been hooked up yet. Note, though, that you can rotate models in the 2D views in the same way that you would rotate a brush model. To easily disable the default 15?, hold down Shift while you rotate an object.
  • There is an issue that occurs when you load a second map in Hammer. As explained by Matt, the textures aren't being re-generated for opengl (glGenTextures), so the models think they have a texture loaded and call glBindTexture, but get nothing, as the textures arent in there. Just something to be aware of, if you run into the problem.
  • To make model preview work, you must use the Half-Life FGD (or modify your mod FGD as outlined below) and unpack your PAK file's models folder to Half-Life\valve\models (or the applicable mod folder). You can find PAK file utilities in the Half-Life Utilities page. You must also make sure the Mod and Game Directory settings in your Game Configuration settings (accessible throught Tools -> Options) are set correctly.
  • The new masked-texture model format is supported. The masked areas of these models will be transparent in the editor.

FGD modification

Making Models Appear

To make a model appear in the 3D view, three things must be done. First, the "Game Directory" (and/or "Mod Directory") property in Tools / Options / Game Configurations must be set. Second, the models must be unpacked into the proper folder. Third, the entity definition in the FGD must include the studio() helper. This is done one of two ways.

case 1:
@PointClass studio() = entity_name
     model(studio) : "Model"

In this case, the entity initially appears as the flatshaded box we've come to know and love, until a model is specified for its "model" property, at which time the model is then displayed in the 3D view.

case 2:
@PointClass studio("models/some_model.mdl") = entity_name []

In this case, the model is explicitly defined in the entity properties, and will always appear as this model in Hammer's 3D view.

Note that in either case, the model must be present in the specified folder or it will simply appear as the flatshaded box.

Setting Model Animation Sequences

To enable the ability to set the animation sequence of a model in the 3D view, a "sequence" property must be added to an entity. The value of "sequence" is an integer corresponding to the animation in the model. For example, the monster_hgrunt_dead entity in the FGD has the following property added to it:

sequence(Choices) : "Animation Sequence (editor)" : 44 =
     44 : "deadstomach"
     45 : "deadside"
     46 : "deadsitting"

This could just have easily been setup as an integer, as the Choices variable type just lets you give a list of integers with descriptive names to choose from.

Note that the animation sequence setting only affects the display of the model in the editor, not in the game. This is mainly useful for differentiating between things like monster_scientist, monster_sitting_scientist, and monster_scientist_dead, which would otherwise all show the same model, plus it will greatly aid in the placement of scripted sequences.