Valve Developer Union

Prop Types in the Source Engine

(October 3, 2017)


The Source engine differs from the GoldSrc engine in its use of props—3D models used to populate and add detail to the game world. As a general rule, anything more detailed than a window should be a prop.

Not all prop entities are created equal, however. Some props are available for the player to carry around, others aren't. Some are complex, multijointed physics objects, while others don't even block the player from moving through them. It's important to use the right prop entities for the model you're trying to put in your map, or else the compile tools will delete the prop from the map entirely.

Immobile props

Immobile props can't be moved by the player, and in some cases, don't collide with the player.

prop_detail

The simplest kind of prop is one that the player can't even touch. Detail props are non-solid and simulate shrubs and other tiny, innumerable details on a surface. Detail props can be 3D models, but are more likely sprites. Detail props can also warp to simulate the sway of plants in the wind. Although you can place a detail prop in the editor, they're more likely to be auto-generated on suitable surfaces by VBSP, so don't worry about placing a couple hundred shrubs by hand.

prop_detail shrubs on dm_runoff
prop_detail shrubs on dm_runoff

prop_static

Static props can't be moved by the player. Static props often take the form of machinery, tanks, equipment, and other such industrial materials. Static props also can cast and receive lightmap shadows, further increasing their realism and presence in the level.

prop_static sandbags on dod_flash
prop_static sandbags on dod_flash

Static props don't react at all to the Garry's Mod physgun, as they are not real entities after compiling. Static props instead become part of the world and act like normal world geometry.

prop_dynamic

Dynamic props are the only props that can be parented, meaning they move with the entity specified as their parent. Otherwise, they can't move around at all. An example of a use for a dynamic prop would be the facade of a train parented to an invisible func_tracktrain; the brush train (what you're actually standing on) moves, and the train model (what you think you're standing on) moves with it. Dynamic props are good for objects that occasionally need to move, but stay mostly static.

prop_dynamic train on d1_trainstation_01
prop_dynamic train on d1_trainstation_01
Tip

Specialty dynamic props

Multiple versions of prop_dynamic are available to mappers who have special use cases. prop_dynamic_override will function identically to the regular prop_dynamic, but will use the static, rigid models normally reserved for prop_static. Counter-Strike: Global Offensive mappers also have prop_dynamic_glow available to them. It works identically to the normal prop_dynamic, but with optional halo and glow settings.

Mobile props

Mobile props are simulated by the physics engine and are thus far more expensive to render.

prop_physics

Physics props can usually be picked up or moved around in some form by the player. These are what players normally consider props; barrels, tables, and junk, such as the can at the beginning of Half-Life 2, are all examples of physics props. Physics props can also be constrained and used in physics puzzles or as environmental hazards, such as the blade traps in Ravenholm. Physics props have their weight, material type, and other such physical features set in the model's QC file before compile. Physics props will cast dynamic shadows on the geometry around them.

prop_physics barrels on de_cbble
prop_physics barrels on de_cbble
Tip

Specialty physics props

Multiple versions of prop_physics exist too. prop_physics_override functions identically to the regular prop_physics, but works with models that have no physics data in them, such as prop_static models. The aforementioned physical features are instead specified in the entity's keyvalues. A special version of prop_physics, prop_physics_multiplayer, has simplified collision functionality so as to be less laggy over high-latency internet connections. If you're mapping for a game such as Counter-Strike: Source, use prop_physics_multiplayer.

prop_ragdoll

The most expensive type of prop, ragdoll props function like physics props, but are multijointed and can collide with themselves as a result. Ragdoll props are most commonly seen as dead bodies either placed in the editor or generated by the game on player death. Garry's Mod in particular has made fooling around with ragdolls a central part of the Source engine.

A player handling his own ragdoll
A player handling his own ragdoll

Keep your props straight when you're building your levels. It'll save you some confusion.