Flags y estado del juego#
Un flag es la memoria de tu juego. ¿El jugador ya abrió la reja? ¿Ya habló con el conserje? ¿Cuántas monedas lleva encima? Cada "el juego recuerda que…" es un flag — un interruptor con nombre (o un valor guardado) que tus reglas encienden, apagan y consultan. Esta guía aclara lo único que confunde al principio: dónde vive un flag.
Una sola memoria compartida#
Los flags no tienen scope de sala, personaje ni escena. Hay un solo almacén de flags para todo el juego, y cada parte de tu proyecto lee y escribe el mismo — una reacción de hotspot en la cocina, una regla de puzzle en el ático, una línea de diálogo, un paso de cutscene. Enciende un flag en cualquier lado y se ve desde todos.
Tampoco hay un paso de "declarar el flag". Un flag nace la primera vez que algo lo enciende,
y un nombre que nunca seteaste simplemente se lee como apagado — false para un
interruptor, 0 para un contador, vacío para un valor guardado. Consultar un flag antes de
que algo lo toque es seguro; solo responde "no".
Encender, apagar y consultar#
El flag de cada día es un interruptor on/off:
SETFLAG:gate_unlockedlo enciende (recuerda que algo pasó).CLEARFLAG:gate_unlockedlo apaga (lo olvida).TOGGLEFLAG:gate_unlockedlo invierte al estado contrario.- En las condiciones de una regla, la comprobación
flagpregunta "¿está encendido este interruptor?" — así una parte del juego reacciona a lo que otra recordó.
Más que on/off: valores y contadores#
Un flag también puede guardar un valor — un número marcado, una clave, una cuenta en
curso — no solo un sí/no. SETVAL guarda uno, APPENDVAL lo arma de a pedazos (cada botón
del teclado suma su dígito, y un tope opcional mantiene en cuatro una cerradura de cuatro
dígitos), ADDVAL suma a un contador (usa un negativo
para restar), y ramificas sobre el resultado con las condiciones valor igual y comparar.
Así construyes una combinación de candado, un monedero, o un momento de "ya lo intentaste
tres veces". La referencia de Tokens de efecto cubre toda
la familia.
Nómbralos como carpetas#
Como el nombre es la identidad, un poco de disciplina al nombrar es todo el sistema de organización. Por debajo no hay carpetas — pero puedes simularlas con un prefijo:
kitchen.window_open
kitchen.tap_running
sewer.valve_turned
act2.met_the_mayor
El motor sigue viendo cada uno como un nombre plano; los puntos son puramente para ti. Agrupa por sala, por capítulo, por puzzle — lo que mantenga juntos los flags relacionados y evite que dos interruptores sin relación compartan nombre por accidente. Elige una convención temprano y tu lista de flags se lee igual de clara en el flag #200 que en el #5.
Cuánto vive un flag#
- Entre salas: los flags nunca se resetean cuando el jugador camina entre salas. Ese es el punto — así el ático recuerda lo que pasó en el sótano.
- Entre save/load: todo el almacén de flags se escribe en el guardado y se restaura al cargar, así la memoria de una partida sobrevive a salir y volver.
- Entre capítulos: empezar un capítulo nuevo es un borrón y cuenta nueva a propósito — su entrada resetea el almacén de flags a vacío (solo se conserva la contabilidad reservada del party). O sea: los flags son la memoria del capítulo y la partida actuales; no se filtran al siguiente capítulo. Si necesitas que algo persista más allá de un corte de capítulo, esa es una decisión a nivel de estructura, no un flag.
Los flags son durables porque se eligió que lo fueran. Un puñado de overlays de runtime a
propósito no lo son: a qué clip quedó cambiado un hotspot con STARTANIM, y la posición, el giro,
la escala y la opacidad que agarró de MOVEHOTSPOT / SETHOTSPOTMOTION. Todo eso se borra cuando
el jugador sale de la sala y nunca se escribe en un guardado, así el archivo de la room sigue
siendo la verdad sobre cómo arranca un prop — incluido un pulse o un giro infinito: el bucle
también es transitorio. Si un prop tiene que quedarse movido, agrandado o pulsando, la mitad durable
es un flag: pon uno, y vuelve a disparar el token desde las reglas de entrada de la sala cuando el
flag esté. (SETHOTSPOTFX es la excepción que confirma la regla — un brillo que codifica estado
de puzzle, así que sí se guarda. HIDEPLAYER es durable por el mismo motivo: un jugador
escondido para un puzzle tiene que seguir escondido después de recargar, o el save te devuelve
sin avisar un personaje a una escena de la que lo sacaste. Empezar una partida nueva siempre lo
trae de vuelta.)
Dos cosas que el motor recuerda por ti. No hace falta un flag para ninguna: si la lámpara de
una sala está encendida (TOGGLELIGHT), y qué música tiene puesta cada personaje. La lámpara se
recuerda por sala; la música se recuerda por personaje — apágala jugando con uno y le queda
apagada a él, entre salas, cutscenes y guardados, mientras el tema de otro personaje sigue
arrancando cuando cambias a él.
Y lo que recuerda no es sólo encendido/apagado, sino cuál track. STOPMUSIC es silencio;
cualquier MUSIC: pasa a ser la música de ese personaje de ahí en más, así que un reproductor
portátil de cinco canciones sigue sonando en la que eligió el jugador en vez de saltar al tema
por defecto en la siguiente puerta — con su crossfade y sus puntos de loop. Por eso tampoco
tienes que contarle al motor cómo cableaste el botón de encendido: lee los tokens, no tus flags.
Una sala que declara su propia música no se ve afectada, y le sigue ganando: lo que el jugador silenció es la radio de ese personaje, no la sala.
Mismo nombre, mismo flag — en todos lados. Un solo almacén, direccionado por nombre, es lo que hace la lógica entre salas tan simple: enciende
gate_unlockeden la reja, consúltalo desde cualquier sala. La otra cara es que dos interruptores sin relación con el mismo nombre son, en secreto, el mismo interruptor. Los nombres con namespace (kitchen.tap_running) son la cura — y la única que necesitas.
A dónde ir después#
- Reacciones y reglas de puzzle — donde los flags se encienden y se consultan, y cómo el motor decide qué regla gana.
- Timers y watchers — flags y timers son las dos cosas que un watcher escucha; este es el patrón de reacción diferida construido sobre ambos.
- Tokens de efecto — la referencia de
SETFLAG,TOGGLEFLAG,SETVAL,ADDVAL,RANDVALy el resto de los verbos que cambian el estado.