v
Skip to content

Ciclo Día-Noche ​

El tiempo avanza solo: cada 3 turnos pasa de mañana a mediodía, de mediodía a tarde, de tarde a noche y otra vez a mañana. Cada momento del día tiene su propio ambiente para la IA y su propia música, y el jugador siempre ve qué hora es. Se monta con comportamientos, lore condicional y reglas de música, sin código.


Lo que vas a construir ​

  • Cuatro momentos del día: Morning → Noon → Evening → Night → Morning (mañana, mediodía, tarde y noche)
  • El tiempo avanza cada 3 turnos, sin que el jugador tenga que hacer nada
  • Cambia el ambiente: cada momento tiene una entrada de lore que describe la luz, la temperatura y lo que hace la gente, y a la IA solo le llega la del momento actual
  • Cambia la música: pájaros por la mañana, grillos por la noche, con fundido de una a otra
  • La hora está en pantalla para el jugador

Cómo funciona ​

Termina el turno 3
  → Se dispara el comportamiento "Morning → Noon" (Cada N turnos: 3, SOLO SI Time of day es Morning)
  → Pone Time of day en Noon y le dice a la IA que ha pasado el tiempo
  → Ahora le llega a la IA la entrada de lore "Noon" (condición: Time of day es Noon); la de "Morning" ya no
  → La regla de música de Noon coincide y la pista de Noon entra con un fundido
  → Time of day, en la pantalla del jugador, pone Noon

Cuando pasa el tiempo solo cambia una cosa: la variable. El lore y la música vigilan la variable, así que la siguen solos.


Paso a paso ​

Paso 1: Crea la variable ​

En la fila Puedes añadir, abajo en la carta, pulsa + Variable.

CampoValor
NombreTime of day
TipoTexto
Valor inicialMorning
Reglas de comportamientoEl momento del día: Morning (mañana), Noon (mediodía), Evening (tarde) o Night (noche). Describe la luz, el tiempo y la gente de acuerdo con él.

Abre Qué hace la IA con ella y pon Acceso de la IA en Solo lectura para la IA. El reloj lo mueven los comportamientos; la IA solo lo lee.

Pulsa Mostrar en la pantalla del jugador para que la hora aparezca en la página del chat.

Una partida nueva siempre empieza desde el Valor inicial, así que el ciclo arranca por la mañana cada vez; no hace falta un comportamiento que lo reinicie.


Paso 2: Escribe cuatro entradas, una por momento ​

Añade una entrada de lore por cada momento del día. Luego arrastra la variable Time of day sobre cada entrada, haz clic en la línea y pon su condición: Time of day es Morning (y así con las demás). Cada entrada pasa al bloque de lore condicional y solo le llega a la IA mientras se cumple su condición.

Morning ​

[Momento del día: mañana]
Es primera hora de la mañana. Llévalo a las descripciones de las escenas:
- Luz suave desde el este; el aire está fresco
- El rocío de la hierba y de los pétalos brilla con la luz
- Pájaros en las ramas, un gallo a lo lejos
- La gente se está levantando; las tiendas abren una a una
- El ambiente es tranquilo y esperanzado

Noon ​

[Momento del día: mediodía]
Es mediodía. Llévalo a las descripciones de las escenas:
- El sol está justo encima; el suelo deslumbra de tan blanco
- El aire es pesado; lo que está lejos tiembla con el calor
- Casi todo el mundo descansa a la sombra; las calles están más tranquilas que por la mañana
- Las tabernas y las casas de comidas están a rebosar, y sale olor a comida
- El ambiente es lento y sofocante

Evening ​

[Momento del día: tarde]
Está atardeciendo. Llévalo a las descripciones de las escenas:
- El sol poniente tiñe el cielo de naranja y morado, con nubes ribeteadas de oro
- Los edificios y los árboles proyectan sombras largas
- Los pájaros vuelven a sus nidos; sube humo de cocina de los tejados
- La gente termina de trabajar y vuelve a casa; los niños se persiguen por la calle
- El ambiente es cálido, un poco melancólico

Night ​

[Momento del día: noche]
Es noche cerrada. Llévalo a las descripciones de las escenas:
- La luna y las estrellas son la única luz natural, y lo platean todo
- Casi todas las ventanas están a oscuras; aquí y allá todavía arde una vela
- Una brisa fresca trae el canto de grillos y ranas
- Las calles están casi vacías; pasa un sereno con una antorcha
- Algo puede estar esperando en la oscuridad: animales, ladrones o algo peor
- El ambiente es silencioso y alerta

Si a la IA le llegaran las cuatro a la vez, no sabría cuál seguir. Las condiciones hacen que solo le llegue la del momento actual.


Paso 3: Crea los comportamientos que mueven el tiempo ​

Un comportamiento por cada paso del ciclo. En la fila Puedes añadir, pulsa + Comportamiento.

Morning → Noon ​

ParteAjuste
Cuándo se disparaCada N turnos: 3
SOLO SITime of day es Morning
EfectosCambiar variable: Time of day a Noon
Decirle a la IA: Ha pasado el tiempo de la mañana al mediodía. Deja que el cambio se note con naturalidad en tu próxima descripción.

Noon → Evening, Evening → Night, Night → Morning ​

Igual, con el siguiente par de valores:

ComportamientoSOLO SICambiar variableDecirle a la IA
Noon → EveningTime of day es NoonTime of day a EveningHa pasado el tiempo del mediodía a la tarde.
Evening → NightTime of day es EveningTime of day a NightHa pasado el tiempo de la tarde a la noche.
Night → MorningTime of day es NightTime of day a MorningSe acaba la noche y empieza un nuevo día.

Los cuatro se disparan en los mismos turnos (3, 6, 9…), pero el SOLO SI de cada uno nombra un momento distinto. El motor comprueba los cuatro con la hora que había antes de que se ejecutara ninguno, así que cada vez se dispara exactamente uno.

Decirle a la IA le pasa a la IA una frase, solo para su siguiente respuesta. El trabajo duradero lo hace la entrada de lore; esta frase solo hace que la transición se lea con naturalidad.


Paso 4 (opcional): Música para cada momento ​

Añade cuatro pistas de BGM en la página Audio (si la carta todavía no tiene audio, pulsa + Audio en la fila Puedes añadir): Morning, Noon, Evening y Night, cada una con Reproducir en bucle activado y 2 segundos de Fundido de entrada (s) y Fundido de salida (s).

Después abre Configuración de BGM → BGM condicional → Agregar regla condicional, una vez por momento:

CampoValor
CUANDOCondición de variable: Time of day es Morning
ReproducirMorning
Fundido de entrada (s) / Fundido de salida (s)3 / 3
Detener BGM anteriorActivado

Cuando cambia la hora, la regla anterior deja de coincidir y la nueva pone su pista: una se apaga mientras la otra entra. Hay más sobre las reglas en la Guía de diseño de audio.


Paso 5 (opcional): Un reloj en pantalla ​

Mostrar en la pantalla del jugador (Paso 1) ya pone la hora en la página del chat. Si quieres algo con más personalidad, usa la interfaz del jugador:

  • La plantilla HUD de aventura (en Pantalla completa) muestra la ubicación actual, el día, la hora y dos barras. Añade sus propias variables para el día y el momento del día; bórralas y apunta su texto a tu Time of day, o usa sus variables en lugar de las tuyas
  • O añade una parte Texto a la página de la conversación y usa Insertar el valor de una variable… para mostrar {Time of day}. Añade partes Imagen para un sol y una luna, cada una con Cuándo mostrar → Cuando una variable cumple (Time of day es Night para la luna)

Paso 6: Pruébalo ​

Pulsa Jugar en la barra superior.

  1. Los dos primeros turnos es Morning
  2. Después del turno 3 es Noon, y la siguiente respuesta de la IA menciona el calor o el sol en lo alto
  3. Tres turnos más: Evening. Tres más: Night. Si añadiste música, cambia cada vez
  4. Tres más: otra vez Morning

Este turno, a la derecha de la prueba, muestra qué comportamiento se disparó y qué entradas de lore recibió la IA.

Si algo falla:

SíntomaCausa probableSolución
La hora nunca cambiaLos valores del SOLO SI de los comportamientos no coinciden con el Valor inicialMorning tiene que escribirse igual en la variable y en la condición
La hora salta dos momentos de golpeDos comportamientos tienen el mismo valor en SOLO SICada comportamiento comprueba un momento distinto
El ambiente no cambiaLa condición de una entrada está mal, o la entrada sigue en el bloque que se envía siempreRevisa la condición de cada entrada y Cuándo lo ve la IA
La IA cambia la hora ella solaAcceso de la IA sigue en La IA puede leer y escribirPonlo en Solo lectura para la IA
Suenan dos pistas a la vezDetener BGM anterior está desactivadoActívalo en la regla de cada momento

Variante: momentos de distinta duración ​

Cada N turnos siempre usa el mismo intervalo. Si quieres días largos y noches cortas (por ejemplo, 4 turnos por cada momento de día y 2 para la noche), cuenta tú los turnos:

  1. Añade una variable de Número Turnos de este momento, con valor inicial 0 y Acceso de la IA en Solo motor (oculta para la IA)
  2. Añade un comportamiento: Cada turno, con el efecto Cambiar variable Turnos de este momento más 1
  3. Cambia el Cuándo se dispara de los cuatro comportamientos de la hora a Una variable cruza un umbral sobre Turnos de este momento, Sube por encima de: 3 para Morning → Noon, Noon → Evening y Evening → Night, y 1 para Night → Morning. Deja el SOLO SI de cada uno sobre Time of day
  4. Añade a cada uno de los cuatro Cambiar variable Turnos de este momento a 0, para que la cuenta vuelva a empezar en el momento nuevo

Tiempo real en lugar de turnos ​

Cada N segundos se dispara con un reloj mientras el jugador tiene la partida abierta. Con 300 en los cuatro comportamientos, pasa un día cada 20 minutos de juego, escriba el jugador o no.


Ruta con código propio: una etiqueta con la hora en el último mensaje ​

Si escribes tu propia interfaz, lee la variable en el código de la interfaz. Todo lo de arriba se queda igual.

Paneles → Código de frontend → abre index.tsx y sustituye el return <Chat /> que viene por defecto:

tsx
export default function MyWorld() {
  const api = useYumina();
  const timeOfDay = String(api.variables["Time of day"] || "Morning");

  const timeConfig = {
    "Morning": { icon: "☀️", color: "#fbbf24", bg: "rgba(251,191,36,0.15)" },
    "Noon":    { icon: "🌤️", color: "#f59e0b", bg: "rgba(245,158,11,0.15)" },
    "Evening": { icon: "🌅", color: "#f97316", bg: "rgba(249,115,22,0.15)" },
    "Night":   { icon: "🌙", color: "#818cf8", bg: "rgba(129,140,248,0.15)" },
  };
  const current = timeConfig[timeOfDay] || timeConfig["Morning"];
  const msgs = api.messages || [];

  return (
    <Chat renderBubble={(msg) => {
      const isLastMsg = msg.messageIndex === msgs.length - 1;
      return (
        <div>
          <div
            style={{ color: "#e2e8f0", lineHeight: 1.7 }}
            dangerouslySetInnerHTML={{ __html: msg.contentHtml }}
          />

          {isLastMsg && (
            <div style={{
              display: "inline-flex",
              alignItems: "center",
              gap: "6px",
              marginTop: "12px",
              padding: "4px 12px",
              background: current.bg,
              border: `1px solid ${current.color}33`,
              borderRadius: "999px",
              fontSize: "13px",
              color: current.color,
              fontWeight: "600",
            }}>
              <span style={{ fontSize: "16px" }}>{current.icon}</span>
              <span>{timeOfDay}</span>
            </div>
          )}
        </div>
      );
    }} />
  );
}

Qué hace el código:

  • api.variables["Time of day"] lee la variable por su nombre
  • timeConfig asigna a cada momento un icono y unos colores
  • isLastMsg deja la etiqueta solo en el último mensaje. Quita esa comprobación para poner la hora en todos los mensajes

El estado que aparece junto al archivo en Paneles → Código de frontend debería ser un OK verde.


Referencia rápida ​

Lo que quieresCómo hacerlo
Hacer algo cada N turnosCuándo se dispara: Cada N turnos
Hacer algo con un reloj en tiempo realCuándo se dispara: Cada N segundos
Ramificar según el valor actualVarios comportamientos con el mismo disparador y distintas condiciones en SOLO SI
Darle a la IA el ambiente de cada momentoUna entrada de lore por momento con una condición sobre Time of day
Cambiar la música con el momento del díaBGM condicional, Condición de variable, Detener BGM anterior activado
Decirle a la IA que ha pasado el tiempoEfecto: Decirle a la IA (solo la siguiente respuesta)
Que la IA no cambie la horaAcceso de la IA: Solo lectura para la IA
Mostrar la horaMostrar en la pantalla del jugador, una parte Texto o código de interfaz

Esta es la receta n.º 9

El mismo montaje (una variable que los comportamientos mueven con un ritmo, con lore y música que la siguen) sirve para el tiempo atmosférico, las estaciones o el humor de un PNJ. La plantilla Acciones del día de la interfaz del jugador añade un contador de días, un momento del día y unas cuantas acciones por día, para cartas de simulación de vida y de gestión.