The limits of leafs and clipnodes have always been the most annoying to all mappers. Since with the new compile tools we are now more free with the leaf-limit, the clipnodes limit is the only one left that really blocks the mappers' way to much bigger and more
complicated maps than we have seen before.
I tried increasing the limit in the compile tools, to test if going over the limit can actually be handled by the engine, but occasionally some brushes are not solid, and you can fall outside map.
I want mappers to try this low clipnodes guide, not only so they can make their maps bigger, but also because too many clipnodes in one place can actually stress the game server, especially with many monsters around, which require lots of CPU capacity for pathfinding and the little thinking they have.
In order to achieve lower clipnodes, there are 5 major methods to use:
- The CLIP-Special-Texture
- A brush with the CLIP-Texture will overwrite any clipping information inside it and set it to clip.
- Clipping exists on 2 levels:
- Solid world brushes. (World clip brushes don't affect clipping information of brush entities)
- Brush entities. (Clip brushes can be applied to brush entities - they will only affect the applied entity then)
- Then again, clipping parts into 2 types:
- Collision hull: What blocks players and monsters.
- Wall: What blocks bullets and dropped ammo/weapons. This second type requires much less clipnodes, and therefore shall not be of relevant interest in this guide.
- The -cliptype HLCSG parameter
- -cliptype legacy: The old cliptype, which still is used as default, but is buggy.
- -cliptype precise: About 18% less clipnodes than you currently have with great increase of clipping quality. (most recommended)
- -cliptype smallest: About 15% less clipnodes than you currently have with horrible clipping quality. (not recommended)
- -cliptype simple: About 20% less clipnodes than you currently have with great increase of clipping quality, but with one disadvantage:
- Players are shifted up a bit on sloped ground.
- -cliptype normalized: Less than 3% less clipnodes with minimal clipping improvement.
- The zhlt_noclip keyvalue
- If applied and set to 1: All collision hull information is stripped from the entity. However, if the entity is not designated to have its clipping information stripped (E.g.: func_illusionary), it will still block bullets and everything which falls into the collision category of these.
- If applied and set to 0: Collision hull information will be applied. Warning: If set on a func_illusionary, collision hulls will explicitly be calculated for the func_illusionary, but not work in game. Doing that you actively waste clipnodes.
- The new phlt_copy_brush entity that comes with the new compile tools
- Disadvantage: When decals appear on one existence of an appearance, they will appear on all of its clones as well. This is a general disadvantage of this entity which has nothing to do with the amount of clipnodes. Just mentioning.
- Ask yourself: "Does this really have to be that complex/be here?" on every detail in your map.
From the above, the first method to try is the -cliptype parameter. Not only does it lower clipnodes, but also it does improve clipping, so there are less places to get stuck on.
The next method, which you should even use when you have plenty of clipnodes left to use, is clip brushes. Principally you put clip brushes on complex details which are likely to cause many clipnodes. If that detail is an entity, you must add the clip brush to the entity, other-wise your clip brush will be calculated within the solids' world. If you are using railings or any other similar solid-rendered structures which one is meant to be able to shoot through, but not walk through, tie the assembly of clip brushes which make the collision hull to an entity and add a null textured brush, so the map will still compile. The effect in game will be same,
but if clip brushes are tied to an entity (func_wall is fine), they won't interfere with the world clipping unnecessarily, which causes more clipnodes. Of course you can only do this when you have left some capacity on the model limit.
Anyway, it is a fact that often people use the clip texture wrong and then end up wondering why they hit the clipnodes limit even faster. You can learn how this works by trial and error. Make a clip brush, save and export to map, compile. You can already see the final amount of clipnodes after HLBSP is done with BSP Generation. You don't have to wait till HLVIS is done. Basically, the
CLIP-Texture is simply overused most of the time. When putting a clip brush around a detail, make sure to wrap the detail into the clip brush as tight as possible. Don't have any parts of the clip brush protrude. Even if its just a simple pipe, adding a rectangular clip brush will lower clipnodes.
The phlt_copy_brush method is pretty much self explanatory. Making clones of an existing appearance will obviously not create any additional clipnodes. However, the game engine will have to calculate the clones' taken appearances' hulls as well.
The zhlt_noclip keyvalue can reward you with especially surprising results. Many details aren't reachable for the player, so you can simply strip the clipping information. The fun fact is, that the object will still block bullets. Just as a side-note: When you are standing inside such an object and shoot, the bullet will fly out of it. That way the detail will still appear as if it was actually there. However, if you are very close to the clipnodes limit, you can still make those details func_illusionaries and maybe lay a null-textured func_wall rectangle over the detail, to at least retain a bare illusion of solidity.
If all the above methods do not help, there is only the chance of simply removing details or making these less intense, and ultimately, your map smaller.
Hope this helps, even if 90% of the people will skip the long text and only try the -cliptype parameter.
Rate this tutorial
4 / 5 (1 votes)
Comments & discussion