From Valve Developer Community
Revision as of 19:54, 3 September 2010 by Cfoust (talk | contribs) (Bug reports)
Jump to: navigation, search


Propper is an edited version of vbsp that outputs a model instead of a bsp.

Many mappers need to make props for their maps, but don't want to learn a separate modeling program. This tool allows them to make models in Hammer in a one-step process. It's also useful to modelers who work with mappers. Propper keeps texture mapping intact, and auto-generates a physics mesh.


  • Can create static props, dynamic props, or physics props
  • Generates a .qc file and automatically compiles the prop for use in your game.
  • Generates a working physics mesh.
  • Automatic material conversion--Turns map textures into valid model textures.
  • Distinguishes between real textures and "tool" textures.
  • Respects Hammer smoothing groups or autosmooth.
  • Configure your prop from within Hammer.
  • Displacement support--outputs any displacement surface you can make (not solid).
  • skins support--use multiple textures on the same prop.
  • custom gib support
  • $keyvalues support: cables, particles, and physgun interactions are available.

Future planned features

  • Output multiple models out of one map
  • Automatic culling of invisible faces
  • LOD support.


A public beta release is now available!



There are two versions of propper included. One is for the 2006 SDK, and the other works with both the 2007 and 2009 versions. A .fgd (Forge Game Data) file is included for both, to help you configure your props.

The folders in this ZIP file mirror the folders in the SDK. For best results, unzip the file to your steamapps\<username> folder, and let your zip utility keep directories intact.

After installing, you should change your game configuration a bit. Open Hammer under the game with which you will use Propper, and click Tools:Options.


Find the section for "Game Data Files", and click the "Add" button. Open propper.fgd when prompted (It will be right there if you installed correctly). Then Click OK or Apply to save the settings. Finally, restart Hammer so the settings take effect.

IMPORTANT: propper.fgd should be below your game's fgd in the list. If Hammer tries to load propper.fgd first, it will give you error messages. To do this, do the following.

Add the propper.fgd to your Game Data files in Hammer.

Apply this in Hammer, then close Hammer.

Now find your GameConfig.txt file. This will be located either here: "C:\Program Files\Steam\steamapps\<yourusername>\sourcesdk\bin\ep1\bin", or here: "C:\Program Files\Steam\steamapps\<yourusername>\sourcesdk\bin\orangebox\bin", depending on what version of the Source Engine you are using (replace "C:" with whatever drive letter you are using for SourceSDK, of course).

In GameConfig.txt, ensure that the "GameData" entry for Propper is numbered after that for the game you are working with. If Propper is listed as "GameData0" and your game (e.g. TF2) is listed as "GameData1", change this code.

Save and close GameConfig.txt. You're ready to go.

Making a prop

To use Propper, copy some geometry from your map and paste it into a new Hammer file. There are three included entities. The first, propper_options, is required for your prop to compile correctly.

Place one in the map and look at its properties:

NameThe name that other entities refer to this entity by. (not used by propper)
Origin (X Y Z)The position of this entity's center in the world. Rotating entities typically rotate around their origin.
Model NameThe directory and name of the finished model. Relative to <yourmod>/models The model will be created here, inside the "models" folder of your selected mod or game. The .mdl extension is not needed.)
Material pathWhere the model's textures will be. Relative to <yourmod>/materials. Make sure this folder exists before running! Propper extracts material files from your mod folder or game cache, and makes a copy in this location.
ScaleScale the model up or down by this factor.
Surface propertyThe physical properties of the model--affects impact sounds and weight for physics props.
Concave collisionsUsed to make a concave collision model. If you choose no, the model will be 'shrink-wrapped'.
Produce collisions?Picking Yes allows the prop to be solid.
Smoothing modeDetermines how vertex normals are computed for lighting.
Source folderWhere you want to keep your .qc and .smd files. The final directory will be <sourcefolder>/<modelname>. Make sure this folder exists before running! This folder path may be anywhere on your hard drive that is convenient for you.
Smoothing thresholdIf auto-smooth is enabled, Edges flatter than this angle will appear smooth. Pick from 0 to 180.
Snap to HammerCauses every vertex to be snapped to the nearest grid point.
Welding thresholdVertices will be snapped together if within this tolerance. A value of 0 is not recommended because there may be visible gaps in the mesh. Larger numbers will merge vertices together, and may be useful for optimizing your model.
Model OriginThe model's origin point defines how it is lit and is how the prop is positioned in a map. Auto-center puts the model's origin at the center of its bounding box and is recommended for physics props. For static props, put the origin somewhere that lets you align the prop easily.
Automatically compileBy default, propper will run studiomdl to compile the prop. You can disable this. Disable this to use Propper as a simple .smd exporter. Or you may wish to add options to the .qc file before compiling the prop.
Fix up materialsBy default, propper will make a copy of any material used in the prop and make it valid for use on a model. You can disable this.
Don't warp displacement texturesIn Hammer, when you move a displacement point, the texture moves with it. If you pick yes, the texture stay in place.

Example Path Settings: This user was building a brick archway model called "arch" for a map for submission during the TF2 Artpass competition. The geometry was built in Hammer using the "brick/brickwall001" material from TF2. In the propper_options entity, the following settings were used:

  • Model Name: artpass/arch
  • Material path: materials/models/artpass/arch
  • Source folder: C:/Program Files/Steam/steamapps/[username]/team fortress 2/tf/models/

The material ("brick/brickwall001") needed to be unpacked from the TF2 GCF and placed inside "/materials/models/artpass/arch".

Running Propper: You run Propper just like you would compile a map with vbsp. Pass it the current game directory and your vmf file.

propper.exe -game $gamedir $path\$file

Propper will compile the model automatically unless you disable that function.

You can run Propper from within Hammer. Just create a new Run configuration and run propper instead of vbsp.

Running propper.gif

You should now have a new prop available to you! If you are replacing an existing model, you may have to restart Hammer to see the changes.

Additional options

There's also the propper_physics entity. If you place this entity in your map, Propper will produce a physics prop. See Prop data for documentation on the following.

Name The name that other entities refer to this entity by. (not used by propper)
Origin (X Y Z)The position of this entity's center in the world. Rotating entities typically rotate around their origin. (not used by propper)
Health presetDictates how strong the prop is vs. different weapons.
HealthOverrides the prop's health. Setting this to 0 will make the prop unbreakable. -1 will use the default value from "Health preset"(recommended).
MassWeight of the prop in kg. Enter zero or lower to automatically calculate mass.
FlammableWill it burn? Picking this enables the 'ignite' options.
Ignite at half-healthJust like those barrels in HL2.
Ignite from explosionsWon't break right away if something explodes near it, but will ignite.
Explode damageDamage to do when breaking
Explode radiusRadius of explosion
GibsGeneric shards to spawn when the prop breaks
Gib countHow many gibs?
Gib skinWhich skin to use on the gib models, if applicable.

New in version 0.22 is propper_skins. Propper can create alternate skins by replacing a texture that is on your prop. If you have multiple textures on your model that you want to change, you can use this entity more than once.

NameThe name that other entities refer to this entity by. This is not used, but will be in the future.
MaterialPick a texture that's present in the original model. This will be skin 0.
Skin(1-14)This texture will replace the original when you pick skin #.

New Entities in 0.23

  • propper_attachments: add attachment points to a model (for cables and particles)
  • propper_cables: add ropes/cables to dynamic models!
  • propper_particles: attach particle emitters to dynamic models (2007 engine and later only)
  • propper_physgun_interactions: add custom behavior to physics props--eg. stick to walls, paint splatter, impale enemies
  • propper_gibs: pick custom physics models to use as gibs when the prop breaks


I can't find these prefabs I've heard about. Where are they?
Propper no longer includes any prefabs for the config entities. You should use the entity tool and find propper_options in the list of entities.

I can't find the new entities/the fgd won't work
propper.fgd needs to go after your game's fgd in the list of "Game Data Files". Some users have gotten success by editing propper.fgd: add this line at the beginning of the file:

@include "base.fgd"

My prop's collisions are wrong. It's solid where it shouldn't be.
There are some cases where two brushes get combined into one big collision piece. Try to avoid making brushes overlap and it should not be a problem.

I made a large building into a model and the lighting is not as good as a brush model. What gives?
Models in Source use rather simple vertex lighting, whereas brushes get radiosity lightmaps. What that means in simple terms is your map gets nice soft shadows and bounced light, but props don't. Buildings just look better when they're made from brushes.

In some cases, you can get better lighting on your props by enabling per-vertex lighting when you compile your map. In the command line of vrad, include -StaticPropLighting to enable that feature. Models that use normal mapping aren't compatible with per-vertex lighting, so open any .vmt file created by Propper and remove any instance of $bumpmap.

Propper quits with an error saying it can't open such-and-such file.
Usually this is a result of the EP1 version of Propper trying to write to a folder that doesn't exist. The OB version has no problem creating these folders. So browse to the folder mentioned in the error message and make sure it's there.

It might also be that the file exists, but is write-protected. Make sure it's not open in another program, and it's not set to read-only.

Why would I want to make a prop anyway?
It's also not uncommon for mappers to run into the brush/face/plane limits for a very large or detailed map. Props let you add detail to your map without pushing this limit. If a feature is used several times in a map, making it a prop will reduce the size of the .bsp and the system memory needed to run the map.

Models can be smaller and more precise than the stuff you make in Hammer. Plus there is the fun stuff Propper lets you do with physics models.

Hammer's a mapping tool! People who want to make models should learn a real modeling program like Blender or XSI.
I agree, but maybe they don't want to...

Bug reports

  • The EP1 version of the tool won't create the folders it needs, and will quit if you don't make them beforehand. So make them beforehand.
  • If you run the tool on a map with no brushes (displacements don't count), Propper will crash. This is an obscure bug from vbsp and I haven't managed to track it down yet. If you encounter this bug, just stick a nodraw, func_detailed brush in the map.
  • If you use the propper_skins entity, but only specify one alternate skin, the skin function will not work correctly. Specify two or more alternate skins to get it to work.


  • You can use visgroups to hide brushes; They will be ignored by Propper.
  • If you make any brushes func_detail, they will be non-solid in the finished prop. Using any other entity seems to cause problems, however.
  • If you use certain invisible textures (eg. clip, nodraw, sky), on a face, that face will be erased. You can lower the final poly count of your model by using nodraw on any face that the player won't see.
  • A good way to work is to make your visible model a func_detail, and then make a very simple collision model on top of that, out of nodraw brushes.
  • Hammer limits you to its one-unit grid while you work. However, you can make your model at a larger scale--say, 16:1--and then tell Propper to scale it down to the correct size. That would allow you to model objects as small as 1/16 inch. (You can also resize brushes within Hammer itself, as always.)
  • Don't set "materialpath" to the same folder as any of your map textures. The model materials may overwrite your map materials! It's best to follow the convention of putting model textures under "models\"
  • Propper will over-write files without asking, so make sure there are no files in your selected folders that you don't want to lose.

Left 4 Dead

Propper doesn't currently support Left 4 Dead. If you are mapping for L4D, you can try the following:

  1. Extract the materials (vmt and vtf files) you want to use from L4D using Gibbeds_VPK_Extractor and mirror them in an Orange Box game that you own (such as Episode 2).
  2. Run Propper from the Source SDK as normal.
  3. Take the files created by Propper and copy them into your L4D folder.

Source Code Patches

The source code for Propper is available as a patch to Valve's SDK code. (Since Propper is a hacked version of vbsp.exe, I don't want to release the entire code--most of it belongs to Valve).

First create a new mod through the Source SDK (either OrangeBox or Ep1). Find the project for vbsp. Visual C++ Express 2008 can compile this project with no problems. If you select the "Release" version, you will create a new vbsp.exe.

0.23 version patch is available if there is a demand!

Then download one of my patch files: for Orange box, or for EP1.

Follow these instructions for Setting up Tortoise SVN to apply a Patch, substituting the vbsp folder for the game code. Your vbsp source code is now the source code for Propper. Edit and compile it as you wish.


This program has been used with some success by community mappers. It's based on vbsp, which we all know and trust not to destroy our PCs. That said, use at your own risk. I claim no responsibility for damage to your computer of games that may occur while using Propper.

External Links

Steampowered forum thread on Propper

Some tutorials have been made to help with using Propper.

World of Level Design: Propper Tutorial (Part 1 - Basics) – By Oilcake

Youtube: Hammer Tutorial #24 Propper by rocketrascal34

Youtube: uber's tutorial series; making a prop_physics from brushes with the Propper tool by UBER069