Theres 6ish types of performance issues you might run into.
- Too many triangles being drawn
- Too much memory used by textures/models/animations/sounds
- Too much work done on shades (water, fancy refraction and transparent do this)
- Too much time spent thinking about what should be drawn (too many portals or gratuitous number of visleaves)
5) Script/physicals calculation lag - spend too long thinking about the game
6) network latency
To find out if you need them, turn on mat_wireframe and have a look around. IF you see lots of stuff being drawn which you can’t see and/or you get low FPS when looking in a certain direction its time to consider optimisation.
Its a balancing act really. Too many area portals cause lag because they need to caculate when/what to draw (4) but when they’re activated they save on stuff being drawn (1,3). If your tunnel is curved to the point where you can’t see the other side through it then use hint/skip instead. If your tunnel is straight imo use 1 area portal fading in the middle.
Not sure about performance of func details geometry vs static prop. The difference is lightmapped vs vertex lit and other other stuff like caching the model, shaders on the material and draw calls. IMO seems like an arbitary microoptimisation, I’d go with model since func detail still cuts up nearby geometry and makes a mess (and a few tris) and you’re limited by t-juncts.
Looking in opposite direction doesn’t draw geometry.
Someone once explained it to me thusly.
BSP turns the map into a mesh (triangles) and assigns them to visleaves.
VIS decides which visleaves can see other visleaves.
sometimes you have to help vis decide by splitting them different (hint and skip)