Al cabo de un tiempo tu mapa se puede convertir en un cúmulo de sólidos bastante complicado; por cada sólido que no conviertes en una entidad, el proceso de compilación tratará de determinar qué es lo que el jugador puede o no puede ver cuando este mirando a ese sólido. Cuando tienes una pared solo, pues no importa demasiado, pero imagina que tienes un nivel muy complicado con un gran número de sólidos (escaleras paredes, ventanas…) es obvio que el jugador no puede ver a la vez todo, luego no sería necesario tanto cálculo, sin embargo y desafortunadamente, el programa no es listo, no tiene capacidad para saber que es lo qué estás viendo y que no estás viendo, realizando solamente los cálculos necesarios, si no que lo calcula todo.
Como ya veremos en el siguiente punto; el programa compilador divide nuestro mapa en varios visleafs, los cuales aumentarán cada vez más si no tenemos cuidado a la hora de crear nuestro mapa.
Como siempre esto se traduce en una enorme pérdida de tiempo, puesto que se están realizando cálculos para algo que el jugador no va a poder ver. La única manera de evitar esto es usando la entidad func_detail. Esta entidad no afecta a la visibilidad ni a la estructura del mapa ofreciendo así una mayor rapidez a la hora de compilar. En resumidas cuentas, le quitas trabajo al programa compilador.
No existe un límite de func_details para un mapa; el motor Source puede procesar hasta 2048 entidades dinámicas a la vez, y los func_detail no cuentan como una entidad dinámica. Además tienen la ventaja de que puedes agruparlos y combinarlos como quieras; puedes convertir 300 sólidos en un solo func_detail o solamente 3; aunque normalmente la agrupación depende del interés del propio creador del mapa.
Una vez explicada la teoría, pondremos una serie de ejemplos:
Comparemos la primera imagen con la segunda; una representación gráfica de los visleafs:
Pero, ¿Qué es lo que ha pasado? Fácil; las herramientas de compilación han intentado dividir los pilares en visleafs causando un auténtico desastre. Sin embargo, convirtamos los pilares a func_detail:
¡Menudo cambio! ¡1 solo visleafs frente a más de 20 de la anterior imagen!
Representación de los visleafs:
Misma representación; ahora usando func_detail:
Existen tantos ejemplos como mapas, así que seguir con ellos sería un poco estúpido. No olvides la combinación textura nodraw+func_detail ¡da excelentes resultados!