Caputchin
Referencias

Referencia del esquema de personalización

Esta es la única referencia para el modelo de tipo-de-campo y preset de Caputchin, el cimiento compartido bajo cada superficie personalizable:

Los cuatro usan los mismos tipos de campo y el mismo modelo de preset descrito aquí. La personalización se construye a partir de presets, y un preset es una bolsa de campos tipados.

Tipos de campo por eje

Cada eje permite un conjunto fijo de tipos de campo:

EjeTipos de campo permitidos
Configurationboolean, number, range, list, string, link
Localesolo string
Skincolor, image, audio, video, boolean, number, range, list

Un skin no es solo colores y assets: también puede exponer las perillas escalares boolean, number, range, y list (un interruptor de "sombras", un número de radio de esquina, una elección de "patrón"). Estos se comportan exactamente como sus contrapartes de configuración y resuelven a su valor tipado (un boolean se queda true, un number se queda 8); los valores color y de asset resuelven a cadenas. El skin no permite string ni link (el texto libre pertenece al idioma; un destino de enlace es una configuración).

Qué acepta cada tipo

TipoValorReglas
stringTexto libreCualquier texto.
booleanUn interruptortrue o false.
numberUn númeroCualquier número finito.
rangeUn número acotadoUn número finito dentro del mínimo y el máximo del campo. El paso es una conveniencia del slider; los valores fuera de paso se siguen aceptando.
listUna elecciónDebe ser una de las opciones listadas del campo.
linkUna URLUna URL http o https. Las credenciales embebidas se rechazan.
colorUn colorUn color hex (#rgb, #rgba, #rrggbb, o #rrggbbaa) o un valor rgb() / rgba(). Los colores con nombre y otros espacios de color no se aceptan.
imageUna imagenUn archivo subido o una URL https que acabe en .png, .jpg, .jpeg, .webp, .svg, o .gif.
audioUn clip de audioUn archivo subido o una URL https que acabe en .mp3, .ogg, o .wav.
videoUn vídeoUn archivo subido o una URL https que acabe en .mp4 o .webm.

Caputchin valida cada valor cuando guardas, así que un valor que no encaja con su tipo se rechaza antes de que pueda llegar a un visitante.

Claves reservadas

Junto a sus campos de contenido, un preset lleva unas pocas claves de metadato reservadas (cada una con un guion bajo de prefijo) que controlan cómo se selecciona y resuelve, no lo que muestra. Cómo las fijas depende de la superficie: un autor de juego del marketplace las escribe literalmente en caputchin.json; en el editor del dashboard (juegos a medida, white-label) las fijas a través de controles y nunca escribes la clave. De una forma u otra el significado es el mismo.

ClaveEjeSignificado
_langLocaleLa etiqueta de idioma BCP-47 que un preset de locale sirve (en, es, etcétera). Los presets se agrupan por ella; varios presets pueden compartir un _lang (p. ej. dos variantes de inglés).
_directionLocaleltr o rtl. Opcional, auto-derivada de _lang para los idiomas de derecha a izquierda (ar, he, fa, ur, yi, ps, sd); rara vez se fija a mano.
_themeSkinlight, dark, o any. Un preset light / dark aparece solo bajo ese fondo; un preset any funciona bajo ambos y es elegible para cualquiera. Por defecto light cuando está ausente.
_defaultTodosMarca el preset que el servidor elige para su grupo cuando el visitante no selecciona uno. Un default por grupo (por modo para el skin); un skin any puede ser el default para claro, oscuro, o ambos.
_extendsTodosNombra otro preset del que heredar. Mira Extender un preset.

Las claves de metadato reservadas se eliminan durante la resolución: _extends y _default nunca llegan al juego, y solo el metadato que sobrevive (_lang, _direction, _theme) más los campos de contenido aplanados se entregan.

Extender un preset

_extends deja que un preset herede cada valor de otro, para que crees solo los campos que difieren en vez de repetir un preset entero. Fija _extends al nombre de otro preset en el mismo eje; el preset que extiende empieza desde todos los valores de ese preset y sobrescribe las claves que fija él mismo.

{
  "skins": {
    "presets": {
      "brand-light": { "_theme": "light", "accent": "#2da44e", "bg": "#ffffff" },
      "brand-light-warm": { "_extends": "brand-light", "accent": "#d97706" }
    }
  }
}

Aquí brand-light-warm hereda bg de brand-light y cambia solo accent.

Dos detalles:

  • Atajo de tema del skin. En un preset de skin, _extends puede en su lugar nombrar un tema (light o dark) en vez de un preset. Esa forma resuelve a cualquiera que sea el preset _default para ese tema, una forma conveniente de basar una variante en "el skin claro por defecto" sin nombrarlo.
  • Se resuelve y desaparece. _extends se sigue y luego se elimina; el juego recibe el resultado totalmente fusionado, nunca la propia clave _extends.

De dónde viene un esquema

El conjunto de campos que un preset puede rellenar (su esquema) tiene tres fuentes, todas usando los mismos tipos de campo de arriba:

  • Juego del marketplace: el esquema viene del manifiesto del autor del juego, descargado cuando abres el editor. Sobrescribes los presets del juego pero no cambias su esquema.
  • Juego a medida: defines el esquema tú mismo en el dashboard, luego creas presets contra él. Mira juegos a medida.
  • Shell del widget (white-label): un esquema fijo e integrado. Sobrescribes sus presets; el conjunto de campos no lo declara el autor. Mira white-label del widget.

Presets y resolución

Dentro de un eje, los campos se agrupan en presets con nombre, y el servidor resuelve un preset efectivo por grupo de los alcances en capas, clave de sitio sobre equipo sobre el valor por defecto incluido, calculado por valor. Los selectores difieren por eje: el locale lo elige el idioma del navegador del visitante, el skin la preferencia clara u oscura del visitante (un preset cuyo modo es any es elegible para cualquiera), y la configuración es autoritativa del servidor (el visitante no puede elegirla). Mira la visión general para el modelo de alcance.

Véase también

En esta página