Caputchin
Desarrollo de juegos a medida

Haz gateable un juego a medida

Un juego autoalojado corre y verifica en cuanto apuntas game-src a él. Pero para usarlo como un gate de juego, donde un visitante debe superarlo para pasar, Caputchin tiene que ser capaz de volver a derivar el resultado por sí mismo, no fiarse del navegador. Para eso es el artefacto de repetición. Al final de este tutorial tu juego a medida será elegible para gate.

Esta es la recompensa del determinismo: como tu juego registra una traza y deriva todo de la semilla, el servidor puede correr una copia headless de tu lógica contra la misma semilla y traza y llegar al mismo veredicto de forma independiente.

Qué es el artefacto de repetición

El artefacto es un bundle de JavaScript pequeño y autocontenido de solo tu lógica de juego, sin renderizado, sin DOM, y sin red. El servidor lo carga en un sandbox aislado y lo corre para producir un veredicto a partir de (seed, trace). No es tu juego jugable; es el juez headless de tu juego jugable.

Se requieren dos propiedades:

  • Autocontenido. No puede importar nada que el isolate no pueda resolver; empaqueta todo dentro. La subida tiene un tope de 2 MB, que está muy por encima de un bundle de lógica típico.
  • Determinista y de acuerdo con el juego en vivo. Dada la misma semilla y la traza que tu juego en vivo emitió, debe llegar al mismo veredicto que el juego en vivo reclamó. Si discrepan, los jugadores reales reciben rechazos falsos.

1. Registra el juego a medida

Si todavía no lo has hecho, registra el juego en el dashboard para que tenga un id y un sitio donde guardar el artefacto. En la página de Juegos de una clave de sitio (o del equipo), usa la entrada Juego a medida en el panel Añadir un juego: introduce tu id y haz clic en Define. Mira juegos a medida para este paso y el esquema que defines.

2. Sube el artefacto

En la pestaña Settings del juego registrado, sube el bundle de repetición. Se envía como un solo archivo; Caputchin le hace content-hash (re-subir los mismos bytes es un no-op) e inmediatamente corre una autocomprobación.

3. La autocomprobación

La autocomprobación corre tu artefacto subido en el isolate de repetición contra una semilla sintética (y tu muestra de traza comprometida, si proporcionas una) y registra si produjo un veredicto limpio:

  • Pasa → la instalación se vuelve elegible para gate. La insignia No reproducible se limpia, y ahora puedes activar exigir un juego con este juego en el pool.
  • Falla → el artefacto se sigue guardando (para que puedas inspeccionar el error), pero la instalación se queda no-elegible para gate. Arregla la lógica y vuelve a subir.

Una autocomprobación fallida es el sistema diciéndote que el juez headless no está de acuerdo consigo mismo o no pudo correr; es exactamente la discrepancia que habría causado rechazos falsos en producción, atrapada antes de que ningún visitante la tope.

4. Activa el gate

Una vez que la autocomprobación pasa, el juego está en el pool de gate de la clave. Activa Exigir un juego en la página de Seguridad de la clave (o el techo de forzar-juego del equipo), y Caputchin servirá tu juego a medida, tomará la traza del jugador, y volverá a correr tu artefacto en el servidor para decidir cada verificación.

Mantener los dos en sincronía

El juego en vivo (cargado vía game-src) y el artefacto de repetición son dos builds de la misma lógica. Cuando cambies cualquier cosa que afecte al desenlace, reconstruye y vuelve a subir el artefacto para que los dos sigan de acuerdo. Si se desvían, la autocomprobación o la repetición en producción empezarán a rechazar victorias reales. Construir ambos a partir de un módulo de lógica compartido es la forma fiable de mantenerlos idénticos.

Véase también

En esta página