Mapping y Hammer

Probar un mapa de GMod con jugadores: un playtest en cinco fases

Probar un mapa de GMod antes de lanzarlo: cinco fases, de la pasada a solas a la partida con jugadores, con comandos de consola, checklist y reglas de feedback.

Prueba un mapa de GMod en cinco fases: compilación final, una pasada en solitario con la consola de desarrollador, una prueba en un cliente limpio sin tu contenido, una prueba en un servidor dedicado y, por último, una partida con jugadores reales. A solas en tu propio PC eres servidor y cliente a la vez y tienes todos los archivos en local. Por eso el contenido que falta, los ascensores que van a tirones, la escasez de spawns y las caídas de rendimiento con muchas entities solo aparecen en las fases posteriores.

Por qué no basta con probar a solas

  • Eres servidor y cliente a la vez. En el modo de un jugador, el cliente se salta la predicción. En un servidor, cada cliente predice su propio movimiento, y el servidor lo corrige cuando llega a un resultado distinto. Donde más se nota es en las plataformas móviles: en multijugador, las plataformas que se mueven en vertical se ven a tirones para los jugadores que van subidos en ellas.
  • Tu PC tiene todo el contenido. Las texturas, los modelos y los sonidos están en tu carpeta del juego, y a eso se suman los juegos montados. Un tester solo tiene lo que hay dentro del BSP o lo que el servidor le entrega.
  • Un servidor funciona sin cheats. Muchos comandos de diagnóstico necesitan sv_cheats 1, y en un servidor el valor es 0 por defecto. El análisis lo haces en local y el servidor lo usas para observar.
  • Más jugadores significan más entities. Cada jugador, cada arma y cada prop spawneado es una entity. Los spawns, las puertas, la tasa de fotogramas y el límite de edicts solo se ponen a prueba bajo carga.

El plan de pruebas en cinco fases

  1. Compilación final. Prueba solo el archivo que vas a publicar: VVIS completo, VRAD con -final, cubemaps generados, contenido empaquetado. La revisión del archivo en sí se describe en revisar un BSP antes de publicar. Dale a cada versión de prueba su propio nombre de archivo, porque el servidor rechaza a los clientes con un BSP distinto (Your map [...] differs from the server's.).
  2. Pasada en solitario. Carga el mapa en local, activa developer 1 y recórrelo entero: cada puerta, cada botón, cada ascensor, cada escalera de mano. Después lee la consola. Luego inicia una partida con varios slots y llénalos con bot. Así ves si los puntos de spawn son suficientes.
  3. Cliente limpio. Las opciones de lanzamiento -noworkshop y -noaddons desactivan temporalmente los addons de Workshop y los addons de carpeta. Eso sí, los archivos sueltos de la carpeta del juego y los juegos montados siguen en su sitio. Es más fiable un segundo PC o un tester que nunca haya tenido tu contenido.
  4. Servidor dedicado. Carga el mapa en un servidor dedicado y conéctate. Lee la consola del servidor al iniciarse el mapa, comprueba que el mapa y el contenido llegan al cliente (consulta FastDL y Workshop) y súbete a cada ascensor con ping real.
  5. Jugadores reales. Juega el mapa en el modo de juego para el que está hecho, con tantos jugadores como sea posible. Tú observas y tomas notas, no explicas nada.

Comandos de consola para las fases 2 a 4

ComandoQué muestraNecesita sv_cheats 1
developer 1mensajes adicionales en la consola y en la parte superior izquierda de la pantallano
cl_showfps 1tasa de fotogramasno
net_graph 1tasa de fotogramas, latencia y datos de paquetesno
cl_showpos 1posición actualno
getposescribe la posición y los ángulos de visión en la consolano
statusmapa, jugadores y conexionesno
report_entitiesentities contadas por clase, más el total con edictsno, pero solo para el host o en la consola del servidor
+showbudgettiempo por fotograma según el sistema del motorno en GMod (el requisito de cheats que indica la wiki de Valve se aplica a otros juegos Source)
mat_wireframe 1todo lo que se dibuja, en modo alambresí
mat_leafvis 1, r_DrawPortals 1visleaf actual y areaportalssí
r_drawclipbrushes 1, vcollide_wireframe 1clip brushes y modelos de colisiónsí
showtriggers_togglebrushes de triggersí
nav_edit 1, ai_nodesnavmesh y AI nodessí
soundscape_debug 1líneas hacia cada env_soundscape, el activo en verdesí

Un buen punto de partida para la pasada en solitario:

sv_cheats 1
developer 1
cl_showfps 1
cl_showpos 1
report_entities

Apunta el total de report_entities en el mapa vacío. Es tu valor de referencia antes de que se sumen jugadores y props. En la consola de un servidor dedicado, stats muestra además valores de rendimiento del servidor. Cómo encontrar las causas con mat_wireframe y +showbudget se explica en optimizar el rendimiento de un mapa de GMod.

Checklist para la prueba

ComprobaciónEn qué fijarteFase
Spawnstodos spawnean en un sitio libre, nadie muere en el spawn, puntos suficientes para un servidor lleno2 con bots, 5
Puntos de atascoesquinas, huecos entre props, zonas detrás de puertas: ¿puede un jugador volver a salir sin noclip?2, 5
Fuera de los límitestejados, la parte alta de los muros, el borde de la skybox: ¿adónde llegan los jugadores saltando y apilando props, y qué ven desde allí?5
Iluminación y cubemapsrecorrer el mapa una vez con mat_hdr_level 0 y otra con mat_hdr_level 2, revisar los reflejos2, 3
Sonidolos soundscapes cambian en los sitios correctos, la consola no avisa de sonidos que falten2, 3
Rendimientotasa de fotogramas más baja en el punto con la vista más larga mientras todos los testers están allí2, 5
Puertas y ascensoresvarios jugadores bloquean la puerta, suben juntos, saltan durante el trayecto4, 5
Navegaciónlos NPC y los Nextbots llegan a todas las zonas, consulta navmesh y AI nodes2
Contenido que faltaninguna superficie rosa y negra, ningún modelo ERROR en el cliente limpio3

Si el cliente limpio muestra errores, te ayuda solucionar texturas que faltan y modelos ERROR. Qué tener en cuenta al construir ascensores se explica en ascensores y trenes.

Recoger el feedback y priorizarlo

Un hallazgo sin ubicación no se puede arreglar. Así que decide antes de la prueba cómo se informa de las cosas:

  • Un solo canal, un mensaje por hallazgo.
  • Cada aviso incluye el nombre de archivo del mapa, la posición de getpos o una captura de pantalla con cl_showpos 1, el modo de juego, el número de jugadores y lo que estaba haciendo el tester en ese momento.
  • Pide a los testers que inicien GMod con -condebug. La consola acaba entonces en el archivo console.log, que te pueden enviar.
  • Observa en lugar de limitarte a preguntar: ¿dónde se pierden los jugadores, qué zonas se quedan vacías, dónde se junta todo el mundo?

Después clasifica en tres clases y trabájalas en este orden:

  1. Bloqueantes: crash, ningún spawn, punto de atasco sin salida, contenido que falta, una forma de salir del mapa.
  2. Flujo de juego: caídas de la tasa de fotogramas, posiciones injustas, puertas y ascensores que se atascan, rutas poco claras.
  3. Aspecto: costuras de iluminación, texturas desalineadas, props flotando.

No cambies nada durante una prueba. Recopila, arregla una tanda entera, compila, asigna un nuevo nombre de archivo y vuelve a probar. Las cuestiones de gusto apúntalas en cuanto varios testers digan lo mismo de forma independiente entre sí.

Cuándo está listo el mapa

El mapa está listo cuando las cinco fases se han hecho con exactamente el archivo que publicas y no queda ningún bloqueante abierto. En concreto: el cliente limpio no muestra contenido que falte, la consola del servidor queda libre de errores al iniciarse el mapa, la última partida con jugadores no ha dado ningún bloqueante nuevo y conoces la tasa de fotogramas en el peor punto con jugadores.

Cada cambio en el BSP crea un archivo nuevo. Por eso, tras un último arreglo repites al menos las fases 2 a 4. Al final, revisa el archivo con el Map Scanner. Verifica la estructura del BSP, avisa de las entities de riesgo, comprueba si existe un spawnpoint y lista los archivos del pakfile.

Preguntas frecuentes

¿Cuántos testers necesito?

No hay un número fijo. Un solo tester con un cliente limpio basta para encontrar el contenido que falta. Para los spawns, las puertas y el rendimiento, lo que cuenta es el número de jugadores que el servidor tendrá de verdad más adelante.

¿Puedo probar con bots en lugar de jugadores?

En parte. bot añade un bot en un servidor con un slot libre. En el modo de un jugador, GMod se niega con Cannot create a player bot in singleplayer!. El comando no necesita sv_cheats 1, pero, igual que report_entities, solo funciona para el host o en la consola del servidor. Los bots ocupan slots y puntos de spawn. No sustituyen a jugadores que buscan rutas, bloquean puertas y spawnean props.

¿Por qué mat_wireframe no funciona en el servidor?

El comando está marcado como cheat y solo funciona con sv_cheats 1. En un servidor en producción eso se queda desactivado. Usa allí cl_showfps, net_graph y status, y repite ese punto en local con cheats.