---
type: tutorial
title: Haz gateable un juego a medida
summary: Sube un artefacto de repetición headless para tu juego autoalojado para que el servidor pueda volver a derivar el veredicto, el paso que deja a un juego a medida satisfacer un gate de juego.
---

Un [juego autoalojado](/docs/custom-game-development/self-hosted-game) corre y verifica en cuanto apuntas `game-src` a él. Pero para usarlo como un [gate de juego](/docs/site-keys/games), 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](/docs/custom-game-development/self-hosted-game) 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](/docs/game-customization/custom-games) para este paso y [el esquema que defines](/docs/custom-game-development/dashboard-schema).

## 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](/docs/site-keys/games) 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](/docs/site-keys/games) 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

- [Construye un juego autoalojado](/docs/custom-game-development/self-hosted-game): producir la traza que este artefacto repite.
- [Juegos y el gate de juego](/docs/site-keys/games): activar el gate y el requisito de reproducibilidad.
- [Juegos a medida](/docs/game-customization/custom-games): registrar y la insignia de No-reproducible.
- [Referencia del esquema del dashboard](/docs/custom-game-development/dashboard-schema): los campos que el juego lee de su contexto de factory.
