Clip texture
For a list of clip textures, see Tool textures (Source)#Clips.
Clip textures are invisible tool textures that limit movement, typically of the player(s). A brush used with a clip texture is generally termed a clip brush. However, any unrendered brush or model can fill this role.
The practice of constraining the player
There are good techniques and there are bad techniques when it comes to using clip brushes to limit the player's movement.
Good techniques are the ones that keep the player away from possibly getting entangled and stuck in complicated brushwork such as in between a tree and a hill, or amidst the cracks of several rocks, forcing the player to restart. However, wedge-shaped clip brushes can also be used to prevent the player from getting stuck on small detail brushes like window sills or buttons while trying to run somewhere, and to prevent the player from jumping up on top of an all too narrow fence or window sill.
Bad techniques are known as invisible walls, that block the player from heading into a corridor that they are not "supposed" to enter. Apart from frustrating the player, this breaks down the illusion of an immersive world and reminds the player this is just a game. Instead, try designing visible blocks like furniture, rubble or locked doors. If this is necessary, use a visible warning to indicate to the player that this is not the correct way ahead. In
Left 4 Dead 2, there is a texture named wrongway_sign01 that is used in Dark Carnival to stop players from entering a small room where infected spawn.
Example
The fence on the right is enveloped by a toolsplayerclip tool texture for two reasons: First of all it prevents the player from getting caught on the brushwork when running alongside it, and second of all it prevents the player from jumping over something that would be at least cumbersome to climb over in real life. Be aware that the player could acquire physics objects and pile them up against the fence, and through this jump over the brush. If this is the case, you could consider extending this clip brush all the way to the roof of the map, but as this would create an invisible wall, it would perhaps be better to replace the entire fence with a solid wall instead.
Using clips
Available clip textures
In the
Source engine, the general dedicated clip texture is Clip, but alternatives are Player Clip, (Player) Control Clip and NPC Clip. These all share the same Clips VisGroup category.
| Texture | Solid to players | Solid to NPCs | Solid to bots | Solid for Nav Mesh | Solid to C4 |
Solid to hostages | Usage / Notes |
|---|---|---|---|---|---|---|---|
toolsclip |
Yes | Yes | Yes | Yes | Yes |
It intentionally is not solid to bullets or physics, it does not cast shadows and it is transparent, for both players as well as NPCs or bots. Thus, it does not cut visleafs. The texture is generally intended to be used on all sides of a world brush. It already gets all the aforementioned properties through its It is the most general clip texture to use, for example to clip level bounds with vertical walls or to simplify the collisions of props, the floor or other complex geometry. | |
toolsplayerclip |
Yes | No | Yes | No | Yes |
| |
toolsnpcclip |
No | Yes | Yes | No | No |
|
Clipping physics
The entity func_clip_vphysics is used to clip only physics objects like dropped weapons etc. Create a clip or nodraw brush and tie it to an entity of the aforementioned class. This means that if both players and physics should be clipped, you need two brushes inside each other, for example a clip world brush and a copy of it tied to a func_clip_vphysics entity.
Invisible Displacement
In some cases, clip brushes are not an option, or too difficult to make an accurate clip brush around props.
For example, Left 4 Dead often used displacement brushes using invisible textures to make something like a clip, which covers rubble props.
Env_Player_Blocker
Another useful, but very limited alternative are env player blocker entities. These are rectangular point entities that block players in it's volume. This entity is mostly used in "Cleanup" activities via the Commentary System or LMP file edits after a map has been compiled already.
Clips with Surfaceprop
One issue with the generic red clip texture is that it inherits the default $surfaceprop which plays concrete footsteps when walked on. This is why some games, like Counter-Strike: Global Offensive and Garry's Mod, have multiple red clip tool textures that use specific material surface properties, such as concrete, dirt, glass, etc. This allows the clips to sound different when stepping upon and also make use of the surface properties, like the very low friction of "SlipperySlide". Example uses of this is utilizing glass clips when working on glass catwalks, which would allow you to still hear glass noises when stepping onto the clip, whereas the generic clip texture would otherwise play a default concrete sound which would be out of place.
For games that do not have these clip textures, you could create your own or copy them from a game that has them. But that may not work in some games, as it will cause every single clip to use the surfaceprop of whichever clip your first interacted with. Left 4 Dead 2 for example causes this sound bug to occur.
Alternatively, you can (with more overhead) use the following workaround to avoid creating new material files: Build your brushwork for the clip using any texture that possesses the material properties you require. For example, glass/glasswindow007a, simply because it is glass. Turn the brushwork into a func_brush that is set to "Don't Render", "Always Solid", and "Solid BSP". This stops your brush from cutting Vis Leaves and becomes invisible, just like a clip brush would. However, depending on thickness, it will also block bullets and also physical props and projectile weapons, such as grenades, or arrows, because it is merely invisible brushwork.
You can also create your own material. For example, to get a wooden clip material, create a new text file ![]()
<game>/materials/tools/toolsclip_wood.vmt, reuse the clip texture (or create your own to be able to distinguish clips in the editor) and set the $surfaceprop appropriately.
LightmappedGeneric
{
$translucent 1
$basetexture "tools/toolsclip"
%compileclip 1
$surfaceprop wood
%keywords clip
}


