Esquema del dashboard de un juego a medida
Un juego del marketplace publica un manifiesto caputchin.json que declara qué campos puede fijar cada preset de personalización. Un juego a medida no tiene manifiesto, así que tú declaras ese esquema de campos en el dashboard en su lugar. Lo defines una vez por juego a medida, por eje, y luego creas presets contra él; a partir de ahí se resuelve y aplica exactamente como un juego del marketplace en los mismos niveles de plan.
Esta página es la referencia para ese esquema. Para crear el juego en sí, mira construye un juego autoalojado; para el flujo de registro del lado del cliente, mira juegos a medida.
Un esquema por eje
El esquema de un juego a medida se declara por eje, y los tres ejes son independientes:
| Eje | Qué personaliza | Esquema |
|---|---|---|
| Locale | Las cadenas traducidas del juego. | Implícito: los campos de locale son siempre texto plano, así que no hay nada que declarar; creas presets de cadenas directamente. |
| Skin | Colores, assets visuales, y perillas de presentación. | Declaras los campos de color, asset y escalares (toggle / number / range / choice) que un preset de skin puede fijar. |
| Configuration | Opciones de juego (dificultad, recuentos, toggles). | Declaras los campos de opción que un preset de configuración puede fijar. |
Defines un esquema solo para los ejes que tu juego realmente usa. Un eje sin esquema simplemente no tiene campos personalizables de ese tipo.
Tipos de campo
Un esquema es un conjunto de campos con nombre, cada uno con un tipo. Los tipos de campo son el mismo conjunto que usa el resto de la personalización; la referencia del esquema de personalización es la descripción autoritativa de cada tipo y los valores que acepta. En breve:
| Tipo | Valor |
|---|---|
string | Texto libre. |
boolean | true o false. |
number | Cualquier número finito. |
range | Un número dentro de un mín y un máx. |
list | Una de un conjunto fijo de opciones. |
link | Una URL http/https. |
color | Un color hex o rgb(). |
image | Una URL de imagen o una subida. |
audio | Una URL de audio o una subida. |
video | Una URL de vídeo o una subida. |
El locale usa solo string (y el resolver no valida un esquema de locale en absoluto). El skin y la configuración validan los valores creados contra el esquema que declaras y descartan los valores que no encajan con su tipo.
Alcance: dónde vive un esquema
Un esquema de juego a medida se fija en un alcance, equipo o clave de sitio, el mismo modelo de alcance que los overrides. Cuando tanto un equipo como una de sus claves de sitio declaran un esquema para el mismo juego y eje, el esquema de la clave de sitio reemplaza el del equipo para ese eje (un reemplazo de eje entero, no una fusión campo a campo). Esto refleja cómo el resto de la personalización se resuelve por gana-lo-más-específico.
Los assets son absolutos
Como alojas el juego jugable tú mismo, no hay un bundle de plataforma contra el que resolver una ruta de asset relativa. Cualquier valor image, audio o video en un preset de skin debe ser una URL absoluta. (Un juego del marketplace puede usar rutas relativas al bundle; un juego a medida no.)
Cómo un preset llega al juego
Una vez que el esquema y los presets existen, Caputchin resuelve un preset por eje para cada visitante (gana-lo-más-específico entre la clave de sitio, el equipo, y tus valores por defecto) y entrega los valores resueltos a tu juego a través del contexto de la factory del juego: ctx.locale, ctx.skin, ctx.config. Tu juego lee sus propios nombres de campo de esos objetos. El esquema es lo que hace que el editor del dashboard muestre las entradas correctas y lo que valida los valores antes de que lleguen siquiera a un visitante.
Véase también
- Referencia del esquema de personalización: cada tipo de campo y sus valores aceptados, por completo.
- Juegos a medida: registrar un juego a medida y definir su esquema.
- Construye un juego autoalojado: leer los presets resueltos del contexto de la factory.
- Overrides del equipo: el modelo de alcance que el esquema sigue.