
Cómo probamos un cliente de juego sin pantalla conectada
No se puede revisar un juego leyendo su código. Hay que jugarlo. Queríamos poder hacerlo desde un script, a las tres de la mañana, sin monitor.
Un cliente que dibuja en ninguna parte
Inicia el cliente en modo headless y no abre ninguna ventana. En su lugar dibuja en un búfer fuera de pantalla — el mismo renderizador, los mismos shaders, la misma interfaz — y escribe el resultado en un PNG cuando se lo piden. A cada ejecución se le puede decir cuánto tiempo vivir, o cuántos cuadros.
Un script en lugar de un ratón
Una ejecución headless recibe un script: un archivo de texto plano con acciones temporizadas.
- haz clic aquí, arrastra allá, pulsa esta tecla, escribe esa línea;
- selecciona al NPC más cercano, o al monstruo más cercano;
- ejecuta un comando del cliente;
- toma una captura de pantalla.
El cliente también escribe un registro de traza legible por máquinas de todo lo que importó — qué se pulsó, qué se seleccionó, qué respondió el servidor — para que una comprobación pueda apoyarse en hechos en lugar de entrecerrar los ojos ante los píxeles.
Hablar con el servidor sin ningún cliente
Una herramienta aparte, el netprobe, habla el protocolo del juego directamente: inicia sesión, lista personajes, entra al mundo, camina, chatea, pelea, compra, vende, usa objetos, mueve cosas en el almacén, acepta y entrega misiones — e imprime cómo quedan la bolsa, la bolsa de plata y el registro de misiones después de cada paso. Así se comprueba un cambio del servidor en un segundo, antes de que nadie abra un cliente.
Verificadores para cada parte
- Una herramienta renderiza cualquier modelo a una imagen y puede leer todos los modelos del juego para comprobar que ninguno falla.
- Otra hace lo mismo con los mapas, leyendo cada archivo de mapa.
- Otra renderiza las ventanas del juego fuera de pantalla y les aplica entrada con script.
- Otra prueba el sistema de paquetes de contenido, falsificaciones incluidas: 308 comprobaciones.
- Otra prueba el editor de apariciones, incluido un servidor falso al que puede hacerle daño a propósito: 637 comprobaciones.
- El servidor tiene su propio conjunto de más de dos mil pruebas.
Por qué te importa
Muchas de las correcciones de esta tanda salieron de una captura que alguien tuvo que mirar: una franja de píxeles oscuros junto a la ventana de chat, un icono fuera de lugar, una ventana dibujada debajo de su vecina. Todavía hay una persona que lee la imagen. Pero ahora un script puede caminar hasta el sitio, abrir la ventana y tomar la captura — siempre en el mismo estado — de modo que un problema una vez encontrado se queda encontrado.
Una nota al pie sobre las compilaciones
Una noche varias compilaciones completas del cliente corrieron a la vez y usaron 16 GB de memoria y 24 GB de swap, y el sistema operativo mató el escritorio para salvarse. Ahora toda compilación hace cola por un turno para toda la máquina y corre con un tope de memoria. Una compilación que espera está funcionando como debe.







