Comportamientos y automatización
La mayoría de las cartas de la plataforma no usan comportamientos, y no pasa nada. Los creadores recurren a ellos cuando tienen unas pocas tareas muy concretas en las que no pueden fiarse de que la IA sea constante.
Para lo básico sobre disparadores, condiciones y efectos, mira Comportamientos.
Cuándo vale la pena usar comportamientos (y cuándo no)
El error más común de quien empieza con los comportamientos es complicarse de más. Ve el botón + Comportamiento y piensa «debería automatizarlo todo». Luego monta 30 comportamientos que repiten lo que unas entradas bien escritas ya resuelven, y la carta se nota mecánica.
Los comportamientos son para la precisión. Resuelven problemas en los que la inconstancia de la IA estropearía la experiencia:
| Problema | Por qué lo resuelve un comportamiento |
|---|---|
| «El jugador debe recibir un aviso justo con afinidad 75» | La IA no conoce el número exacto; el motor sí |
| «Cambiar a música de batalla al entrar en la arena» | La IA se olvida de las directivas de audio la mitad de las veces |
| «Subir el hambre cada 3 turnos» | La IA a veces lo hará en el turno 2 y a veces se olvidará del todo |
| «La pantalla de muerte tiene que aparecer en cuanto la vida llegue a 0» | No puedes permitirte que la IA falle aquí ni una vez |
Las entradas son para la narrativa. Resuelven problemas en los que importan la flexibilidad y los matices:
| Problema | Por qué lo resuelven las entradas |
|---|---|
| «Que un PNJ hable distinto a medida que crece la confianza» | El lore condicional le da a la IA pautas de comportamiento, no guiones rígidos |
| «Revelar lore cuando el jugador visita un lugar» | El lore por palabra clave entra con naturalidad en el contexto de la IA |
| «Cambiar el tono al entrar en una mazmorra» | Una entrada describe el ambiente; un comportamiento solo puede pasarle a la IA una o dos frases |
Regla práctica: si te ves escribiendo un párrafo de narración en el efecto Decirle a la IA de un comportamiento, seguramente tenías que haber escrito una entrada. Los comportamientos funcionan como interruptores y diales; el contenido de verdad va en las entradas.
Cómo usa Sakura Season los dos
Sakura Season es un buen ejemplo de comportamientos y entradas trabajando juntos. Tiene 9 comportamientos, y todos hacen lo mismo en el fondo: vigilar umbrales de afinidad.
Las entradas describen cómo se porta cada heroína según el nivel de afinidad (a la defensiva, abriéndose, vulnerable). Los comportamientos se encargan de los momentos exactos: un aviso a los 25 («Parece que has llamado la atención de Hina...»), nuevas pautas para la IA a los 50 que le piden escribir ese tira y afloja contradictorio, y un aviso de logro a los 75 que pone en marcha el arco de la confesión.
El grueso del trabajo lo hacen las entradas. Los comportamientos se aseguran de que cada hito llegue justo en su momento.
Los disparadores a fondo
El disparador (Cuándo se dispara) decide cuándo revisa el motor un comportamiento.
Los que vas a usar de verdad
Una variable cruza un umbral: el disparador más usado. Salta en el momento exacto en que una variable numérica cruza una línea concreta.
No es lo mismo que comprobar cada turno «¿la vida está por debajo de 20?». Este disparador salta una vez, cuando el valor atraviesa de verdad el umbral. Si la vida ya está en 10 y se queda en 10, no vuelve a saltar.
Configuras tres cosas: qué variable, en qué dirección (Sube por encima de o Baja por debajo de) y el valor.
Wandering Diary usa tres de estos para cambiar de región: cuando la variable distance cruza 50, el jugador entra en el condado; en 150, en las montañas; en 200, en la capital provincial. Cada umbral pone un nuevo valor en la variable region y muestra un aviso.
Una variable cambia: salta cuando cambia una variable. Puedes elegir una variable concreta o dejarlo abierto para que salte con cualquier cambio, y acotarlo con condiciones.
Úsalo cuando quieras reaccionar a que una variable tenga un valor concreto, no a que cruce un umbral. Por ejemplo: «cada vez que cambie la ubicación, comprueba si es dark_forest y, si lo es, pon música inquietante». El comportamiento vuelve a comprobarlo cada vez que cambia el valor, sea cual sea la causa.
Cada N turnos: salta con un ritmo fijo. Ponlo en 3 y salta en los turnos 3, 6, 9, 12... Para algo de una sola vez en un turno concreto, pon N en ese turno y Máx. activaciones en 1.
Va bien para mecánicas de supervivencia (el hambre que sube), para marcar el ritmo (un aviso en el turno 20 de que se acaba el tiempo) o para recordatorios periódicos.
Cada turno: salta después de cada intercambio entre el jugador y la IA. Úsalo con cuidado: un comportamiento que se ejecuta cada turno y hace algo visible cada turno acaba molestando. Funciona mejor con condiciones que descarten la mayoría de los turnos, o para llevar cuentas en silencio.
Inicio de la sesión: salta una vez cuando empieza una partida nueva. Sirve para preparar el arranque: poner valores iniciales, mostrar un mensaje de bienvenida o poner la música de entrada.
El jugador pulsa un botón: salta cuando un botón de la interfaz del jugador ejecuta Activar un comportamiento, o cuando tu código de interfaz llama a api.executeAction(id). Un botón también puede pasarle valores; mira Pasar un valor desde un botón.
Disparadores menos habituales
El jugador dice una palabra clave: salta cuando el mensaje del jugador contiene una de tus palabras. Tiene las mismas opciones de coincidencia que el lore por palabra clave: coincidencia de palabra completa opcional, regex (cuando la palabra clave es /.../flags) y filtro por palabras clave secundarias (AND_ANY, AND_ALL, NOT_ANY, NOT_ALL).
La IA dice una palabra clave: igual que el anterior, pero mira la respuesta de la IA. Sirve para reaccionar a lo que escribe la IA, por ejemplo «cuando la IA diga "empieza la batalla", cambia la música».
Cada N segundos: salta con un reloj en tiempo real, pero solo mientras el jugador tiene la partida abierta. Va bien para cosas que deben avanzar mientras el jugador lee o piensa, como una cuenta atrás o un PNJ que se impacienta. Para lo que debe seguir el ritmo de la historia, usa Cada N turnos.
Condiciones: la comprobación SOLO SI
SOLO SI usa el mismo sistema de condiciones que el lore condicional: los mismos 7 operadores (eq, neq, gt, gte, lt, lte, contains; en pantalla, es / no es / > / ≥ / < / ≤ / contiene) y la misma forma de combinarlos con Todas/Alguna. La referencia completa de operadores está en Cómo escribir buenas entradas: Entradas dirigidas por estado.
Si dejas las condiciones vacías, el comportamiento salta siempre que coincida el disparador.
Cuando el disparador coincide pero las condiciones no se cumplen, Si no se cumplen las condiciones, decir le muestra un aviso al jugador. Sin él, no pasa nada y el jugador no sabe por qué su botón no ha hecho nada.
Comparar una variable con otra
Por defecto, una condición compara una variable con un número o una palabra fijos: «afinidad ≥ 50». Pero el lado derecho tiene un selector Constante / Variable. Cámbialo a Variable y la condición compara dos variables en vivo:
afinidad > recelo: salta solo mientras el cariño pese más que la desconfianzaoro >= precio: comprueba si le llega el dinero sin escribir el precio a mano
Úsalo cuando el umbral no es fijo y se mueve con la partida. Dos detalles más del mismo sistema:
- El lado izquierdo acepta una ruta con puntos dentro de una variable JSON:
inventario.oro >= 100. containscomprueba si un elemento está en una lista, además de buscar texto dentro de texto, así quebanderas contains "conocí-al-rey"es verdadero cuandobanderases una lista que incluye ese elemento.
Condiciones de parada
DETENER CUANDO es lo contrario de SOLO SI: mientras se cumpla alguna condición de parada, el comportamiento no salta. Úsalo para «hasta que pase X», como un recordatorio cada 5 turnos que debe callarse cuando el afecto llegue a 100. Si el valor vuelve a bajar, el comportamiento sigue. Para que pare después de un número fijo de veces, usa Máx. activaciones.
Efectos: lo que pueden hacer los comportamientos
Cuando se cumplen las condiciones, el motor ejecuta los efectos en orden. Un comportamiento puede tener varios.
Cambiar variable
Cambia una variable directamente. Seis operaciones: Establecer, Sumar, Restar, Multiplicar, Alternar y Anexar.
El valor tiene tres modos:
- Constante: un número o una palabra fijos.
- Variable: el valor actual de otra variable:
salud -= fuerza,puntuación += combo,cartera += ingreso_diario. El motor la lee en el momento en que salta el comportamiento, así que la cuenta siempre usa valores en vivo. - Al azar: un número dentro de un rango, una tirada de dados o uno de una lista. Al sacar de una lista puedes evitar que se repitan los últimos resultados, para cosas como «el invitado de hoy».
Habilitar/deshabilitar variable
Enciende o apaga una variable. Mientras está apagada, sale del prompt de la IA y de la interfaz del jugador y no acepta lo que escriba la IA, pero conserva su valor, así que las condiciones, los comportamientos y tu código de interfaz la siguen leyendo. Combínalo con una variable que tenga Cuándo puede verla la IA en Manual: botín que solo existe en la mazmorra, una puntuación que solo cuenta durante la retransmisión. Mira Variables → Cuándo puede verla la IA.
Habilitar/deshabilitar escenario
Abre o cierra un escenario. Los escenarios en Solo el interruptor Activado dependen de esto.
Decirle a la IA
Le pasa a la IA una frase que el jugador no ve, solo en su siguiente prompt. Sirve para forzar un momento de la historia: «¡Aparece un monstruo! Describe un encuentro al azar».
Para pautas que deben quedarse a partir de ese momento (como las del tira y afloja de Sakura Season con afinidad 50), escríbelas en una entrada de lore en espera y usa Habilitar entrada de lore.
Habilitar entrada de lore / Deshabilitar entrada de lore
Abre o cierra una entrada de lore. Un comportamiento que habilita una entrada en espera puede revelar lore oculto en el momento justo, y queda abierta hasta que algo la cierre.
Habilitar/deshabilitar comportamiento
Enciende o apaga otro comportamiento. Así se montan las cadenas: el comportamiento A salta al entrar en la mazmorra y enciende el B (encuentros con monstruos cada turno). El comportamiento C salta al salir de la mazmorra y apaga el B.
Mostrar notificación
Le muestra un aviso al jugador. Cuatro estilos: Info, Éxito, Advertencia y Error.
Desbloquear un momento
Le da al jugador una tarjetita con un título, una frase y una imagen, que se guarda en una variable de lista para que solo salga una vez. Mira Momentos.
Reproducir música / Reproducir efecto de sonido / Detener audio
Pone una pista de fondo, reproduce un sonido suelto o para una pista. La pista se elige de tu lista de audio.
Código
En Avanzado, un comportamiento también puede ejecutar un trocito de JavaScript dentro de la carta mientras la partida está abierta. Úsalo para lo que no se puede expresar con filas de efectos, como barajar un mazo. Mira Comportamientos con código.
Patrones reales de cartas publicadas
Umbrales de afinidad (Sakura Season)
El caso clásico. Sakura Season tiene 9 comportamientos repartidos entre tres heroínas, y cada una sigue el mismo patrón de 3 niveles:
Con afinidad 25: un aviso informativo discreto, «Parece que has llamado la atención de Hina...», y además pone story_phase en "daily". Una sola vez (Máx. activaciones 1).
Con afinidad 50: un aviso, «Hina empieza a verte como alguien especial...», nuevas pautas para la IA que describen su tira y afloja contradictorio, y story_phase pasa a "deepening". Una sola vez.
Con afinidad 75: el disparador del clímax. Aviso, pautas para que la IA prepare la escena de la confesión y story_phase en "climax". Una sola vez.
Todos usan Una variable cruza un umbral + Sube por encima de, saltan exactamente una vez y combinan un aviso para el jugador con pautas para la IA y un cambio en la variable de fase. Para montar lo mismo hoy, pon las pautas de cada etapa en una entrada de lore en espera y ábrela con Habilitar entrada de lore.
Cambio de región (Wandering Diary)
Wandering Diary lleva una variable distance que aumenta a medida que el jugador viaja. Tres comportamientos de Una variable cruza un umbral cambian la variable region en las distancias 50, 150 y 200, y cada uno muestra un aviso: «Por fin has dejado atrás las tierras salvajes y has entrado en el condado», «Pasado el condado, se extiende ante ti una cordillera interminable», «A lo lejos se recorta la silueta de la capital provincial».
La IA nunca tiene que llevar la cuenta de las distancias ni recordar dónde acaba cada región.
Disparadores de muerte
Tanto Wandering Diary como las plantillas de supervivencia usan el mismo patrón: Una variable cruza un umbral cuando la vida baja de 1, con un aviso de estilo Error. Los detalles importantes:
- Prioridad 100: la muerte debe evaluarse antes que nada
- Máx. activaciones 1: el aviso de muerte solo sale una vez (aunque la mayoría de las cartas no se molestan, porque no puedes bajar de cero dos veces)
- A veces va acompañado de Decirle a la IA para que describa el final del personaje
Cadenas de activación de mazmorra
Un patrón habitual en las cartas de rol: el comportamiento A espera a que el jugador entre en una mazmorra (un disparador de palabra clave, o Una variable cambia + una condición) y luego usa Habilitar/deshabilitar comportamiento para encender el B (encuentros con monstruos en Cada turno, con enfriamiento). Un tercer comportamiento espera a que salga y apaga el B.
Así los encuentros con monstruos quedan limitados a ciertas zonas sin que la IA tenga que saber si el jugador está en una mazmorra. Si la mazmorra es un escenario, puedes ahorrarte la cadena: pon el comportamiento B dentro del escenario y solo saltará mientras el escenario esté abierto.
Cómo procesa el motor los comportamientos
Cuando pasa algo (termina un turno, llega un mensaje, cambia una variable, se pulsa un botón, avanza el reloj), el motor recorre todos los comportamientos de una pasada, empezando por la prioridad más alta. Con cada uno se pregunta: ¿está activado? ¿Su escenario está abierto? ¿El disparador coincide con lo que ha pasado? ¿Se cumplen las condiciones de SOLO SI? ¿Se cumple alguna condición de parada? ¿Está en enfriamiento? ¿Ha llegado a Máx. activaciones? Si tiene Probabilidad de que ocurra (%), ¿sale la tirada? Si todo encaja, sus efectos se ejecutan en orden. Los efectos que cambian variables pueden hacer saltar otros comportamientos, hasta 5 niveles de profundidad para evitar bucles infinitos.
El jugador solo ve los resultados: un aviso, un cambio de música, una variable que se actualiza. Para ver por qué un comportamiento saltó o no, prueba la carta y mira Este turno.
Controlar cuándo saltan los comportamientos
La prioridad, el enfriamiento, el máximo de activaciones y la probabilidad están en Avanzado, en los ajustes del comportamiento.
Prioridad
Los números más altos se evalúan antes. Cuando varios comportamientos saltan a la vez, la prioridad decide el orden.
En la práctica: comprobaciones de muerte en 100, hitos de la historia en 50, efectos de ambiente entre 10 y 20. No hace falta afinar mucho; basta con que lo importante vaya antes que lo accesorio.
Enfriamiento
Después de saltar, el comportamiento se queda dormido este número de turnos. Un aviso de hambre con enfriamiento 5 no le insiste al jugador cada turno: espera al menos 5 turnos entre un aviso y otro.
Máx. activaciones
El comportamiento puede saltar como mucho este número de veces en toda la partida. Con Máx. activaciones en 1 es un evento de una sola vez, ideal para logros, tutoriales de la primera vez e hitos de la historia.
Probabilidad de que ocurra (%)
El comportamiento solo salta este porcentaje de las veces que saltaría. Déjalo en 100 para que salte siempre. Va bien para sucesos al azar: «un 20 % de probabilidad cada turno de que un desconocido llame a la puerta».
Habilitado
Los comportamientos empiezan activados, pero puedes apagar Habilitado para dejarlos dormidos hasta que otro comportamiento los encienda con Habilitar/deshabilitar comportamiento. En eso se basa el patrón de la mazmorra de más arriba.
Errores comunes
Complicarse con comportamientos cuando bastaban las entradas. Si te ves escribiendo narración larga dentro de Decirle a la IA, seguramente lo que quieres es lore condicional. Los comportamientos pasan una o dos frases de pautas; las entradas dan párrafos de contexto.
Usar Una variable cambia cuando querías Una variable cruza un umbral. Una variable cambia salta cada vez que cambia la variable. Si quieres «avísame cuando la vida baje de 20», usa Una variable cruza un umbral: salta una vez, en el punto de cruce. Una variable cambia + una condición health < 20 saltaría con cada cambio posterior mientras la vida siga por debajo de 20, y seguramente no es lo que buscas.
Olvidar el enfriamiento en disparadores frecuentes. Un comportamiento de Cada turno sin enfriamiento salta todos los turnos. Si muestra un aviso, el jugador acaba harto. Pregúntate siempre cada cuánto debería verlo de verdad el jugador.
Montar 30 comportamientos para una carta que necesita 3. Sakura Season tiene 9: 3 heroínas, 3 umbrales cada una. La mayoría de las cartas necesitan menos, y muchas de las populares no llevan ninguno. Empieza con entradas y variables. Añade comportamientos solo cuando pilles a la IA siendo inconstante con algo concreto.
No probar los valores de los umbrales. Si tu comportamiento salta con health < 10 pero la vida nunca baja tanto (porque tus entradas le dicen a la IA que «describa al jugador herido cuando la vida esté por debajo de 30»), no saltará nunca. Asegúrate de que los umbrales encajan con cómo funciona de verdad tu carta.
Consulta también
- Cómo escribir buenas entradas: para cambios narrativos, el lore condicional suele encajar mejor que los comportamientos
- Diseño de audio: los efectos de audio en los comportamientos, y cuándo usarlos en lugar de las directivas de la IA
- Diseñando el estado del juego: cómo diseñar las variables a las que reaccionan tus comportamientos
Esquema completo de reglas y proceso de evaluación → Especificación del mundo: Reglas y reacciones
