Esquema del Mundo
Un mundo de Yumina se almacena como un objeto JSON llamado WorldDefinition. Este es el esquema completo.
Estructura de nivel superior
json
{
"id": "uuid",
"version": "20.0.0",
"name": "World Name",
"description": "Short description",
"author": "Creator Name",
"language": "en",
"entries": [],
"variables": [],
"rules": [],
"reactions": [],
"rootComponent": null,
"components": [],
"audioTracks": [],
"bgmPlaylist": null,
"conditionalBGM": [],
"customUI": [],
"entryFolders": [],
"customTags": [],
"customTagColors": {},
"editorMode": "advanced",
"settings": {
"maxTokens": 12000,
"maxContext": 200000,
"temperature": 1.0,
"topP": 1,
"frequencyPenalty": 0,
"presencePenalty": 0,
"playerName": "Player",
"lorebookScanDepth": 2,
"lorebookRecursionDepth": 0
}
}Referencia de campos
Identidad
| Campo | Tipo | Descripción |
|---|---|---|
id | string | UUID, autogenerado |
version | string | Versión del esquema, actualmente "20.0.0" |
name | string | Nombre del mundo (1-200 caracteres) |
description | string | Descripción corta (0-10,000 caracteres) |
author | string | Nombre visible del creador |
language | string (opcional) | Código de idioma BCP 47 ("en", "zh", "ja", etc.). Presente en la interfaz TypeScript pero opcional en el esquema Zod. |
Contenido
| Campo | Tipo | Descripción |
|---|---|---|
entries | WorldEntry[] | Todo el contenido que lee la IA — personajes, lore, reglas, saludos |
variables | Variable[] | Definiciones de estado del juego con reglas de comportamiento |
rules | Rule[] | Disparadores de automatización WHEN/IF/THEN |
reactions | Reaction[] (opcional) | Reglas basadas en patrones de eventos (sistema más nuevo). Puede ser undefined. |
Presentación
| Campo | Tipo | Descripción |
|---|---|---|
rootComponent | RootComponent | null | Sistema de archivos virtual de UI personalizada (React/TSX) |
components | GameComponent[] | Componentes de UI integrados (barras de estadística, etc.) |
audioTracks | AudioTrack[] | Pistas de BGM, SFX y ambiente |
bgmPlaylist | BGMPlaylist | null | Configuración de música de reproducción automática |
conditionalBGM | ConditionalBGM[] | Música activada por estado |
customUI | CustomUIComponent[] | Sistema de UI heredado (usa rootComponent en su lugar) |
Organización
| Campo | Tipo | Descripción |
|---|---|---|
entryFolders | EntryFolder[] | Estructura de carpetas para organizar entradas |
customTags | string[] | Etiquetas definidas por el creador para entradas |
customTagColors | Record<string, string> | Clases de color de Tailwind para etiquetas personalizadas |
editorMode | "simple" | "advanced" | Nivel de complejidad del editor |
Configuración
| Campo | Tipo | Predeterminado | Descripción |
|---|---|---|---|
maxTokens | number | 12000 | Tokens máximos por respuesta de la IA |
maxContext | number | 200000 | Tamaño máximo de la ventana de contexto |
temperature | number | 1.0 | Creatividad de la IA (0.0-2.0) |
topP | number | 1 | Umbral de muestreo nucleus |
frequencyPenalty | number | 0 | Penalización por tokens repetidos |
presencePenalty | number | 0 | Penalización por tokens ya usados |
playerName | string | "Player" | Reemplazo predeterminado de {{user}} |
lorebookScanDepth | number | 2 | Cuántos turnos recientes escanear en busca de palabras clave |
lorebookRecursionDepth | number | 0 | Cuántos niveles de entradas-disparadas-disparando-entradas |
topK | integer (opcional) | — | Limita la cantidad de tokens candidatos (min: 0) |
minP | float (opcional) | — | Umbral de probabilidad mínima (0-1) |
structuredOutput | boolean (opcional) | false | Fuerza el formato de salida JSON |
lorebookBudgetPercent | — | Obsoleto — los presupuestos de tokens fueron eliminados; ahora se incluyen todas las entradas activadas | |
lorebookBudgetCap | — | Obsoleto — ver arriba | |
layoutMode | — | Obsoleto — el layout es automático; el campo se ignora | |
uiMode | — | Obsoleto — el layout es automático; el campo se ignora |
