Campos clave-valor libres vinculados a una página, con tipo, validación y referencias.
dataSchema#
Define pares clave-valor con un tipo (int, float, seconds, percent, boolean, string) vinculados a la página. Es el "addon comodín" — cuando ninguno de los addons especializados cubre lo que necesitas, este lo hace.
Por qué importa#
El game design tiene muchas situaciones de "necesito anotar X aquí": rareza del arma, nivel requerido, nombre de animación, número mágico de balance. Sin un data schema, esos campos se convierten en strings sueltos dentro de un richDoc — sin validación, sin export estructurado. Aquí obtienes tipo + min/max + referencias a otros addons sin tener que crear un nuevo tipo de addon desde cero.
Dónde suele vivir#
- Páginas en blanco cuando quieres agregar campos tipados libres.
- Páginas tipadas cuando necesitas campos extra que el addon principal no cubre.
Singleton — 1 schema por página, con N entradas.
Esquema#
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
idSí | string | ID interno. | |
nameSí | string | Nombre amigable (ej.: Metadata, Stats Extra). | |
entriesSí | DataSchemaEntry[] | Lista de campos. |
DataSchemaEntry#
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
idSí | string | ID interno. | |
keySí | string | Clave técnica (snake_case). Va al JSON exportado. | |
labelSí | string | Nombre amigable mostrado en la UI. | |
libraryRef | { libraryAddonId, entryId } | Cuando está completado, la clave y el label vienen de la Field Library (taxonomía central). | |
valueTypeSí | "int" | "float" | "seconds" | "percent" | "boolean" | "string" | Tipo de valor — determina la entrada en el panel y cómo se formatea. | |
valueSí | number | boolean | string | El valor actual. | |
min | number | Piso (tipos numéricos). | |
max | number | Techo (tipos numéricos). | |
unit | string | Sufijo visual (kg, km/h, etc.). | |
unitXpRef | string (sectionId) | Cuando el valor representa un nivel, apunta a la curva de XP usada como referencia visual. | |
economyLinkRef | string (sectionId) | Cuando el valor se obtiene de un economyLink — qué sección. | |
economyLinkField | EconomyLinkFieldKey | Cuando economyLinkRef está definido — qué campo de ese addon (buyValue, sellValue, etc.). | |
productionRef | string (addonId) | Cuando el valor se obtiene de un addon de producción — qué addon (en la misma página). | |
productionField | ProductionFieldKey | Cuando productionRef está definido — qué campo de esa producción. | |
usePageDataId | boolean | Cuando es true, el valor es el dataId de la página donde vive el schema. | |
notes | string | Notas libres. |
Ejemplo#
Schema con 3 campos: rareza (string), nivel requerido (int), fecha de descubrimiento (string):
{
"id": "schema-meta",
"name": "Metadata",
"entries": [
{
"id": "f1",
"key": "rarity",
"label": "Rareza",
"valueType": "string",
"value": "epic"
},
{
"id": "f2",
"key": "required_level",
"label": "Nivel Requerido",
"valueType": "int",
"value": 25,
"min": 1,
"max": 100,
"unit": "nv"
},
{
"id": "f3",
"key": "discovered_in",
"label": "Descubierto en",
"valueType": "string",
"value": "Parche 1.4"
}
]
}
Referencias computadas#
Los campos economyLinkRef/economyLinkField y productionRef/productionField permiten valores derivados: el panel muestra el valor actual del otro addon en lugar de que lo escribas manualmente. Útil para reflejar el "precio de compra" de un economyLink en el schema sin duplicar el número.
Cuando el addon fuente cambia, el valor lo sigue — si el economyLink cambia de 100 a 120, el schema lo refleja automáticamente.
Wizard#
No tiene wizard propio. Agregas este addon manualmente cuando lo necesitas.