Skip to content

Diseñando el estado del juego

Cada Mundo interesante rastrea algo. Battle Royale rastrea a 40 estudiantes y quién sigue vivo. Sakura Season rastrea tres arcos de relación separados. Wandering Diary rastrea las actitudes de los compañeros, el inventario y el estado de la ubicación todo a la vez. El sistema de Variables es cómo le das memoria a tu Mundo.

Esta guía enseña el arte de elegir y diseñar Variables: las decisiones que dan forma a cómo se siente tu Mundo al jugar. Para lo básico sobre tipos de Variable y Directivas, consulta Para empezar: Variables.


La decisión creativa: ¿qué deberías rastrear?

Antes de abrir el editor, pregúntate: ¿qué necesita un jugador para sentir que es real?

En un juego de supervivencia, la respuesta son los recursos: salud, hambre, munición. El jugador necesita sentir escasez. En un romance, es la profundidad de la relación: el jugador necesita sentir que sus elecciones están construyendo algo. En un misterio, son los flags de conocimiento: el jugador necesita sentir que la investigación se va estrechando.

No necesitas una Variable para todo. La IA maneja perfectamente bien los detalles narrativos por sí sola: no necesitas una Variable current_weather a menos que el clima importe mecánicamente. Rastrea las cosas que impulsan decisiones y consecuencias.

Una buena regla general: si el valor debería afectar lo que la IA escribe a continuación, conviértelo en una Variable. Si es solo sabor, deja que la IA improvise.


Cómo viven y mueren las Variables

Una Variable atraviesa un ciclo de vida claro: la defines en el editor (tipo, valor por defecto, restricciones), se inicializa a su valor por defecto cuando un jugador inicia una nueva Sesión, la IA la modifica mediante Directivas con corchetes durante el juego, el motor de reglas puede modificarla más cuando se cumplen condiciones, y el estado completo del juego se persiste en la base de datos al final de cada turno.

Si añades una nueva Variable a un Mundo que los jugadores ya están jugando, las partidas guardadas existentes obtienen automáticamente el valor por defecto en la próxima carga. Si eliminas una Variable, se filtra silenciosamente. Puedes iterar de forma segura sobre el diseño de Variables sin romper la partida de nadie.


Elegir el tipo correcto

Los cuatro tipos de Variable (number, string, boolean, JSON) se cubren en Para empezar: Variables. La decisión de diseño es cuál usar cuándo, porque la elección afecta cómo interactúa la IA con tu Mundo.

Number cuando el valor cambia gradualmente, necesitas umbrales para eventos o la magnitud del cambio importa. Los números obtienen límites min/max impuestos por el motor, así que no necesitas desperdiciar espacio del prompt diciéndole a la IA "no dejes que la salud baje de cero".

String cuando el valor es una etiqueta, no una cantidad: ubicaciones, humores, fases de la historia. No uses string para valores de dos estados (bloqueado/desbloqueado); usa boolean en su lugar.

Boolean cuando algo ha ocurrido o no. El tipo más simple, el más fácil de gestionar para la IA y la compuerta ideal para Entradas y reglas condicionales.

JSON cuando una sola Variable necesita datos estructurados: inventarios con propiedades de elementos, mapas de facciones con múltiples relaciones, registros de misiones con progreso anidado. No uses JSON para valores simples: [health: -10] es más fiable que [stats.health: -10].


Escribir reglas de comportamiento: la fórmula de las cuatro preguntas

Para empezar: Variables cubre lo básico de las reglas de comportamiento y muestra la diferencia entre las vagas y las específicas. Esta sección te enseña la fórmula para escribir grandes consistentemente.

Las grandes reglas de comportamiento responden a cuatro preguntas:

1. ¿Qué significan los valores? Dale a la IA una leyenda. Para números, describe lo que representa cada rango narrativamente. Para strings, lista los estados válidos. Para booleanos, explica lo que significan true y false en la historia.

2. ¿Qué desencadena un cambio? Sé específico sobre las situaciones. "Las interacciones amables aumentan la afinidad" está bien para una Variable de relación. "El daño físico disminuye la salud" funciona para HP. Cuantos más ejemplos des, más consistente será la IA.

3. ¿Cuánto debería cambiar? Aquí es donde la mayoría de los creadores invierten menos. Da rangos de magnitud. Los momentos pequeños deberían producir cambios pequeños, los eventos grandes deberían producir cambios grandes. Sin esta guía, la IA tiende a reaccionar exageradamente (cada interacción es +20 afinidad) o a reaccionar de menos (una experiencia casi mortal cambia la salud en 2).

4. ¿Cuáles son los límites? Limita el cambio máximo por turno. Esto evita oscilaciones salvajes que rompen la inmersión. "Nunca cambies más de 15 en un turno" mantiene el ritmo natural.

TIP

De dos a cuatro oraciones suele ser suficiente. Si tus reglas de comportamiento son más largas que un párrafo corto, simplifica. La IA es inteligente: dale el concepto y los límites, no un manual de reglas.


Algunas cosas que vale la pena saber

La operación delete elimina una clave de un objeto JSON o un elemento de un array JSON. Funciona a través de la sintaxis normal de corchetes: [npcs: delete "aria"] (string entre comillas para una clave de objeto) o [inventory: delete 0] (número para un índice de array). La única trampa: delete necesita un valor con forma JSON después; la forma desnuda [var: delete] cae a un set implícito y escribe el string literal "delete" en la Variable, lo que casi nunca es lo que quieres. Para eliminaciones por lotes o eliminaciones de array por id, un bloque JSON Patch <UpdateVariable> (ver Directivas y Macros de IA) o un modify-variable de acción de regla con operation: "delete" también están bien.


Patrones reales de Mundos publicados

Seguimiento de relaciones

Como se muestra en Para empezar: Variables, Sakura Season usa Variables numéricas separadas por heroína con reglas de comportamiento que especifican rangos de magnitud. Es el enfoque más simple y funciona bien para 2-5 personajes.

La alternativa: un único objeto JSON que contiene todas las relaciones.

json
{
  "aria": { "trust": 50, "romance": 0, "met": true },
  "kael": { "trust": 30, "romance": 0, "met": false }
}

Esto es más limpio cuando tienes muchos personajes, porque la IA puede actualizar cualquier personaje con una ruta de punto ([relationships.aria.trust: +10]) y puedes añadir nuevos personajes fusionando una nueva clave. La compensación: las Variables numéricas individuales son más simples de entender para la IA y más difíciles de estropear.

Elige Variables separadas cuando tengas 2-5 personajes y quieras máxima fiabilidad. Elige un objeto JSON cuando tengas muchos personajes o necesites añadir nuevos dinámicamente.

Sistemas de inventario

El inventario más simple es una Variable string con append, como se muestra con la lista de muertos de Battle Royale en Para empezar: Variables. Para un inventario adecuado con propiedades de elementos, usa un array JSON:

json
[
  {"id": "torch", "name": "Torch", "qty": 1},
  {"id": "bread", "name": "Bread", "qty": 2}
]

Añadir elementos usa push. Eliminar elementos usa delete con un índice. Las reglas de comportamiento deben decirle a la IA qué enfoque usar:

Usa push con un objeto de elemento completo para añadir elementos. Para eliminar un elemento, usa delete con el índice del array. Límite del inventario: 10 elementos. Cuando se alcance el límite, el personaje debe soltar algo primero.

Estado de ubicación y escena

Una Variable string llamada location (por defecto: "starting village") suele ser todo lo que necesitas. La IA escribe [location: set "dark forest"] cuando el jugador viaja, y las Entradas con compuerta por palabras clave de ubicación inyectan la descripción correcta de la escena.

Para Mundos más complejos con múltiples aspectos rastreados de una escena, usa un objeto JSON:

json
{
  "area": "castle",
  "room": "throne-room",
  "time": "night",
  "alert-level": "high"
}

La IA puede actualizar aspectos individuales: [scene.alert-level: set "low"] después de pasar a hurtadillas junto a los guardias.


Para la sintaxis completa de Directivas incluyendo las 9 operaciones, la trampa de la abreviatura y la notación de ruta de punto para Variables JSON, consulta Directivas y Macros de IA.


Errores comunes

Rastrear de más. No necesitas una Variable para todo. Si la IA puede manejar algo narrativamente sin un número detrás, sáltate la Variable. Cada Variable que añades es más estado que la IA debe gestionar y más Directivas que debe escribir. Los mejores Mundos rastrean 5-15 cosas, no 50.

Reglas de comportamiento vagas. "Rastrea la salud" no le dice nada a la IA. "Disminuye 5-15 en golpes menores, 15-25 en golpes mayores, 0 = escena de muerte" le dice a la IA todo lo que necesita. Las reglas de comportamiento son la diferencia entre una Variable que funciona y una que se ignora.

Usar JSON cuando un tipo simple bastaría. Si solo necesitas un número, usa un número. [health: -10] es más simple y fiable que [stats.health: -10]. Reserva JSON para datos genuinamente estructurados.

Olvidar min/max en los números. Sin límites, la IA podría empujar la salud a -47 o el oro a 999.999. Establece min y max en cada Variable numérica. El motor recorta automáticamente: es un seguro gratuito.

No probar la magnitud. Juega tu Mundo durante 10 turnos y comprueba si los números se sienten correctos. Si la afinidad salta de 15 a 80 en tres interacciones, tus rangos de magnitud son demasiado generosos. Si apenas se mueve después de 20 turnos, son demasiado estrictos.

Hacer IDs difíciles para la IA. Usa IDs simples y legibles como health, player-gold, aria-trust. Evita espacios, caracteres especiales o nombres que podrían colisionar con macros incorporadas (user, char, time, date).


Consulta también

Esquema completo de Variables → Especificación del mundo: Variables