Límites de los mapas en Source: brushes, entities y tamaño explicados
Límites de los mapas en Source de un vistazo: espacio de coordenadas, brushes, entities, displacements y lightmaps, errores MAX_MAP típicos y cómo evitarlos.
Un mapa de Source está limitado en varias direcciones: en el espacio de coordenadas (±16384 unidades por eje), en el número de brushes, brush entities, caras, displacements y overlays y, en tiempo de ejecución, en el número de entities. Garry's Mod ha subido varios de estos límites muy por encima de los valores por defecto de Source SDK 2013. Si superas un límite, el compilador aborta con un mensaje como MAX_MAP_BRUSHES, o el juego crashea al cargar o durante la partida. Las principales contramedidas son usar props en lugar de brushes y agrupar entities.
Los límites más importantes de un vistazo
| Límite | Garry's Mod | Source SDK 2013 | Qué cuenta |
|---|---|---|---|
| Espacio de coordenadas | ±16384 unidades por eje | ±16384 unidades por eje | todo el mapa, incluido el skybox 3D |
| Brushes | 65535 | 8192 | cada brush, incluidos los func_detail y los brushes dentro de entities |
| Brush entities | 4096 | 1024 | cada entity hecha de brushes, como func_door, func_brush o los triggers; el propio mundo ocupa un hueco |
| Planos, caras, vértices | 65536 cada uno | 65536 cada uno | la geometría compilada |
| Displacements | 16384 | 2048 | cada cara de displacement |
| Overlays | 8192 | 512 | cada info_overlay |
| Datos de lightmap | sin máximo en la tabla de uso | 16 MB en el header, sin máximo en la tabla de uso | todos los lightmaps juntos |
| Edicts en tiempo de ejecución | 8192 | 2048 | entities sincronizadas por red en la partida en curso |
Para los límites de compilación, la columna de Garry's Mod muestra lo que las herramientas de compilación propias de GMod indican como máximo en su tabla de uso (versión de septiembre de 2026). La tabla no da ningún máximo para los displacements, así que 16384 es la cifra de la wiki de Valve Developer Community, confirmada por una compilación de prueba. El límite de edicts también es el que esa wiki indica para GMod. La columna del SDK recoge los valores por defecto del código fuente de Source SDK 2013, que son los que suelen citar las listas antiguas. Los compiladores de la comunidad vuelven a diferir. Lo que manda siempre es la tabla del log de tu propio compilador, descrita más abajo.
Qué significa el espacio de coordenadas
La cuadrícula de Hammer termina a 16384 unidades en cada dirección. Por tanto, un mapa puede medir como máximo 32768 unidades de largo, de ancho y de alto. A unos 1,9 centímetros por unidad, eso es algo más de 600 metros por lado. Fuera de ahí no se puede crear geometría.
En la práctica rara vez chocas primero con este muro. Los mapas muy grandes y abiertos fallan antes por el cálculo de visibilidad y por los FPS. Los paisajes amplios se simulan mejor con un skybox 3D, que se construye a escala 1:16 y por eso ocupa poco espacio.
Cómo notas que te acercas a un límite
- Errores de compilación: VBSP o VRAD abortan e indican el límite afectado, por ejemplo
MAX_MAP_BRUSHESoMAX_MAP_PLANES. Cómo encontrar esos mensajes lo tienes en Cómo leer un compile log. - La tabla de uso: Al final del log de VRAD hay una tabla que muestra, para cada sección de datos del BSP, la cantidad usada y la máxima, además del nivel de llenado en porcentaje. Cuando un valor se acerca a su máximo, el compilador marca la línea con
VERY FULL!. Las secciones sin máximo fijo, comodispinfosy los datos de iluminación, muestran ahí un 0 y nunca se marcan. Mira esta tabla antes de cada publicación. - Crash en el juego: Si en tiempo de ejecución se agotan todos los edicts, el juego se cierra con un mensaje como
ED_Alloc: no free edicts. A menudo solo pasa con el servidor lleno, cuando muchos jugadores spawnean props. - Hammer se niega: Los objetos no se pueden mover más allá del borde de la cuadrícula.
Si no sabes cómo interpretar un mensaje, pega el log en el Map Scanner. Detecta causas raíz y errores derivados en los logs de VBSP, VVIS y VRAD. Los mensajes conocidos también están en la base de datos de errores.
Contramedidas para la geometría
- Props en lugar de brushes. Barandillas, tuberías, muebles, arcos y otros detalles con muchas caras van en modelos. Un
prop_staticno cuenta ni como brush ni como entity en tiempo de ejecución, porque se escribe en el BSP de forma permanente. - Simplifica el brushwork. Mejor unos pocos brushes grandes que muchos pequeños. Los restos troceados que deja la herramienta Carve disparan el número de brushes y de caras sin ningún motivo.
- Entiende bien
func_detail. Reduce visleafs y portales y con ello acorta VVIS. No alivia el límite de brushes, porque un brush de detalle sigue siendo un brush. Más en Optimizar el rendimiento de un mapa de GMod. - Usa los displacements con moderación. Usa pocas caras grandes en lugar de muchas pequeñas y no más resolución de la necesaria. El terreno lejano pasa al skybox 3D o a un modelo.
- Descarga los lightmaps. Sube el lightmap scale en las caras grandes que no necesitan sombras nítidas. Las herramientas no indican un máximo fijo para los datos de iluminación, pero hacen que el BSP pese más.
Contramedidas para las entities
- Agrupa brushes en una sola entity. Diez cristales de ventana como diez entities
func_brushocupan diez huecos. Si los seleccionas todos y los conviertes juntos en una sola entity, ocupan uno. Si no necesitan ninguna función de entity, pasan a serfunc_detaily no ocupan ninguno. - Da prioridad a los props estáticos. Todo lo que nunca se mueve pasa a ser un
prop_staticen lugar de unprop_dynamico unprop_physics. - Deja las luces sin nombre. Un
lightsin nombre se integra en los lightmaps y deja de existir como entity en el juego. Ponles nombre solo a las luces que de verdad quieras encender y apagar. - Cuenta los efectos. Sprites, cuerdas, partículas y fuentes de sonido son inofensivos uno a uno, pero se notan en grandes cantidades. Algunas entities crean entities auxiliares adicionales en el juego.
- Planifica una reserva. En un servidor se suman jugadores, armas, vehículos y props spawneados. Un mapa que vacío ya está cerca del límite no funcionará de forma fiable en producción.
Preguntas frecuentes
¿Cuánto puede medir como máximo un mapa de GMod?
El espacio de coordenadas va de -16384 a +16384 unidades en cada eje, es decir, 32768 unidades por lado. Equivale a algo más de 600 metros. Los mundos más grandes solo parecen más grandes gracias a un skybox 3D.
¿Cuenta func_detail como brush?
Sí. Un func_detail cuenta para el límite de brushes, pero no para el de brush entities ni como entity en tiempo de ejecución. Su utilidad está en el cálculo de visibilidad.
¿Qué significa VERY FULL! en el compile log?
La marca aparece en la tabla de uso del final del log e indica que una sección de datos del BSP está casi llena. El mapa sigue funcionando, pero apenas le queda margen para más contenido. Reduce la sección concreta que indica esa línea.
¿Puedo subir los límites?
No con ajustes en el mapa. Los límites están definidos en las herramientas de compilación y en el motor. Garry's Mod ha subido varios de ellos en sus actualizaciones, por ejemplo el límite de overlays a 8192 en marzo de 2024. Lo único fiable es construir el mapa de forma que quede por debajo de ellos con una reserva.