Hints are not func_viscluster nor areaportals.
The sole purpose of hints is to give vbsp “hints” to where it needs to make visleaf cuts in cases where it might not make the best decisions to make a cut. vbsp doesn’t always follow the recommendations of hint brushes, but it will in most cases.
An example usage would be a 45 degree hint brush in a 90 degree angled hallway.
Here in exhibit A, we have a 90 degree angle in a corridor without optimization. In most circumstances this creates 3 visleaves, which the edges of the visleaves are marked with blue wireframe boxes (the corridor the terrorist is in is the first visleaf ,the 90 degree angle is the second visleaf and the corridor the crate is in is the third visleaf.)
Drawing a visibility line from the terrorist, we can see that it intersects all three visleaves. This means that the terrorist will have to render everything that is in all three visleaves, which is not very ideal, especially if the area is much more complex in nature than this simple demonstration.
Here in exhibit B, we have a right triangle wedge with a 45 degree angled wall textured with hint (only the face that’s doing the cutting needs to be textured with hint, the rest need to be textured with skip, or it will make unnecessary cuts.) Since this creates two extra leaves that are redundant, we also make a copy of the triangle and texture it with trigger and turn it into a func_viscluster to make the three visleaves into one bigger visleaf.
In this situation, the terrorist can see the visleaf he’s in, and the newly created triangular visleaf, but he now can’t see the visleaf that the crate is in, which is a more ideal situation.
Putting random hint brushes outside is not a good idea, unless you have some complex geometry that can’t be optimized or turned into func_detail. It can create dozens or hundreds of redundant leaves that can exponentially increase compile times and cause rendering issues ingame (poor frame rates, null world faces, etc.)