Mapping y Hammer

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ímiteGarry's ModSource SDK 2013Qué cuenta
Espacio de coordenadas±16384 unidades por eje±16384 unidades por ejetodo el mapa, incluido el skybox 3D
Brushes655358192cada brush, incluidos los func_detail y los brushes dentro de entities
Brush entities40961024cada entity hecha de brushes, como func_door, func_brush o los triggers; el propio mundo ocupa un hueco
Planos, caras, vértices65536 cada uno65536 cada unola geometría compilada
Displacements163842048cada cara de displacement
Overlays8192512cada info_overlay
Datos de lightmapsin máximo en la tabla de uso16 MB en el header, sin máximo en la tabla de usotodos los lightmaps juntos
Edicts en tiempo de ejecución81922048entities 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_BRUSHES o MAX_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, como dispinfos y 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

  1. Props en lugar de brushes. Barandillas, tuberías, muebles, arcos y otros detalles con muchas caras van en modelos. Un prop_static no cuenta ni como brush ni como entity en tiempo de ejecución, porque se escribe en el BSP de forma permanente.
  2. 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.
  3. 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.
  4. 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.
  5. 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

  1. Agrupa brushes en una sola entity. Diez cristales de ventana como diez entities func_brush ocupan 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 ser func_detail y no ocupan ninguno.
  2. Da prioridad a los props estáticos. Todo lo que nunca se mueve pasa a ser un prop_static en lugar de un prop_dynamic o un prop_physics.
  3. Deja las luces sin nombre. Un light sin 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.
  4. 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.
  5. 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.