---
type: explanation
title: Corre tu propio juego
summary: Qué es el desarrollo de juegos a medida, las dos formas de entregar tu propio juego (slot manual o iframe autoalojado), y qué añade el dashboard (esquema, presets, y el artefacto de repetición que deja a un juego a medida ejercer de gate).
---

Un juego a medida es un juego que **tú** construyes y alojas, usado en el widget de Caputchin en lugar de un juego del [marketplace](/marketplace). Nadie más puede instalarlo, no hay topic de GitHub ni paso de publicación, y te quedas el código. Esta sección es la guía detallada de construirlo-tú-mismo para ese camino. (Si quieres publicar un juego para que *cualquiera* lo incruste, eso es [desarrollo de juegos del marketplace](/docs/marketplace-game-development/overview), un camino separado.)

Hay dos formas de entregar un juego a medida, y son superficies genuinamente distintas con límites distintos. Elige según lo que necesites:

```mermaid
flowchart TD
  Q{Qué necesitas}
  Q -->|Solo mi propio DOM en el widget,<br/>sin gate de verificación| M[Modo manual]
  Q -->|Un juego real que puede ejercer de GATE de la verificación<br/>repetido en el servidor| S[Juego autoalojado en iframe]
  M --> MX["&lt;caputchin-game trigger=manual&gt;<br/>encajas tu propio markup<br/>conduces pass() / fail() tú mismo"]
  S --> SX["un bundle JS usando @caputchin/game-sdk<br/>alojado por ti, cargado vía game-src<br/>+ un artefacto de repetición subido al dashboard"]
```

## Modo manual: tu propio DOM, sin gate

El [modo manual](/docs/custom-game-development/manual-mode) es la opción ligera. Fijas `trigger="manual"` en `<caputchin-game>`, pones tu propio markup dentro de él, y llamas a los métodos `pass()` / `fail()` del elemento desde tu propio código cuando el visitante tiene éxito o falla. No hay iframe ni game SDK; el widget solo te da su shell de layout y la fontanería de verificación alrededor de tu markup.

La contrapartida: una ronda en modo manual **no se puede repetir en el servidor**, así que un juego en modo manual **no puede satisfacer un [gate de juego](/docs/site-keys/games)**. Corre solo en una clave sin gate (verificación de proof-of-work, con tu interacción como UX), o solo-juego sin verificación en absoluto. Úsalo para una interacción con marca, no para un gate de seguridad que necesites repetido.

## Juego autoalojado en iframe: puede ejercer de gate

Un [juego autoalojado](/docs/custom-game-development/self-hosted-game) es un juego real y en sandbox: un bundle de JavaScript construido contra el paquete `@caputchin/game-sdk` que corre en el iframe del widget, habla con el anfitrión a través del puente del SDK, y reporta una **traza** que el servidor puede volver a correr. Alojas el bundle tú mismo y apuntas el widget a él con el atributo `game-src`.

Como la ronda produce una traza reproducible, un juego autoalojado **puede ejercer de gate** de una clave de sitio, pero solo una vez que le das a Caputchin un [artefacto de repetición](/docs/custom-game-development/replay-and-gating): un pequeño build headless de la lógica de tu juego que el servidor corre para volver a derivar el veredicto. Hasta que ese artefacto se sube y pasa su autocomprobación, el juego a medida aparece como **No reproducible** y no puede ejercer de gate.

## Qué añade el dashboard

Un juego del marketplace publica un manifiesto `caputchin.json` que declara sus campos de personalización. Un juego a medida no tiene manifiesto, así que **tú declaras esos campos en el dashboard** en su lugar: [registras el juego a medida](/docs/game-customization/custom-games) por un id que eliges, defines su [esquema](/docs/custom-game-development/dashboard-schema) de campos por eje (idioma, skin, configuración), y creas presets contra él. A partir de ahí se resuelve y aplica exactamente como un juego del marketplace, en los mismos niveles de plan.

Así que la superficie completa de juego a medida es:

| Pieza | Dónde | Necesaria para |
|---|---|---|
| El juego en sí | Tu código, tu host | Siempre |
| Entrega | Slot `trigger="manual"`, o iframe `game-src` | Siempre |
| Esquema de campos + presets | Dashboard (tú defines el esquema) | Personalizar idioma / skin / config |
| Artefacto de repetición | Subida al dashboard | Ejercer de gate de la verificación (solo autoalojado) |

## Véase también

- [Modo manual](/docs/custom-game-development/manual-mode): encaja tu propio DOM y conduce pass/fail.
- [Juego autoalojado](/docs/custom-game-development/self-hosted-game): construye un juego en iframe reproducible con el SDK.
- [Repetición y gate](/docs/custom-game-development/replay-and-gating): sube el artefacto que deja a un juego a medida ejercer de gate.
- [Referencia del esquema del dashboard](/docs/custom-game-development/dashboard-schema): el esquema de campos que defines para un juego a medida.
- [Juegos a medida](/docs/game-customization/custom-games): registrar y alojar, desde el lado del cliente.
