GodsBattle
← Todas las noticias

Cómo probamos un cliente de juego sin pantalla conectada

updateTambién enEnglishPortuguês (BR)

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.

El centro de Sparta con sus NPCs, renderizado sin ventana
Este cuadro se renderizó sin ninguna ventana en pantalla: un script inició sesión, caminó hasta el Encargado del Almacén y pidió una foto.

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.