beasty-visual-novel / authoring / blocks-reference.md

Referencia de bloques

Un bloque es una instrucción dentro de un Dialogue Node. Los bloques son todo el vocabulario de autoría de la novela visual: una línea de diálogo, un fondo, un personaje que entra caminando, una variable que sube, una puerta hacia el mundo. Esta página enumera todos los bloques que existen, en el orden en que la paleta los muestra.

El panel Add blocks

El panel a la izquierda de la pestaña Story es la paleta. Selecciona un Dialogue Node en el grafo y la paleta se activa.

  • Haz clic en un botón de bloque para añadirlo al final de la pila del nodo seleccionado.
  • Arrastra un botón de bloque hasta la lista de bloques para insertarlo en una posición concreta.
  • Escribe en el campo de búsqueda de arriba para filtrar todo el catálogo por nombre.
  • El panel es redimensionable —arrastra su borde— y los botones se reorganizan en tantas filas como permita el ancho. También es plegable, así que puedes ocultarlo cuando solo estés conectando el grafo.

Los bloques se agrupan en diez categorías: Dialogue, Scene, Clear, State, Quests, World, Items, Audio, Input y Flow. Aparecen en ese orden.

Cómo se ejecutan los bloques

Los bloques se ejecutan de arriba abajo. El nodo empieza en el primer bloque y avanza hacia abajo.

Solo algunos bloques se detienen. Un bloque de Dialogue muestra su línea y espera a que el jugador avance. Cualquier otro bloque hace su trabajo y pasa de inmediato al siguiente: el fondo, los dos personajes, la música y el cambio de variable que hay encima de una línea ocurren todos antes de que esa línea aparezca, en un solo fotograma, de forma invisible. Por eso una escena se escribe así: primero se monta el escenario, luego se dice algo.

Además de Dialogue, otros tres bloques también se detienen:

  • Los tres bloques de Input (Ask → variable, Ask → dictionary, Ask → character name) muestran su pregunta y abren el cuadro de texto a la vez, y esperan a que el jugador escriba.
  • Un bloque Wait puesto a 0 segundos espera a que el jugador haga clic. Ver más abajo.

Dos comportamientos que sorprenden

Advertencia Un bloque Wait con 0 segundos no espera cero segundos: espera al jugador. Se pausa hasta que el jugador avanza, exactamente como una línea de diálogo sin texto. Eso suele ser lo que quieres (una pausa antes de que se abra la puerta). Si querías una pausa corta, escribe un número.

Advertencia Un bloque sin ningún asset asignado no hace absolutamente nada. Un bloque Backdrop vacío se salta y lo que había en pantalla se queda en pantalla. Un bloque Music sin clip se salta y lo que estaba sonando sigue sonando. El bloque no borra nada: simplemente no se ejecuta. Para dejar el fondo en negro a propósito usa el bloque Clear > Backdrop; para silenciar un canal a propósito usa Stop channel.

Los bloques de Scene son declarativos

Los bloques de Scene (Backdrop, Show character, Expression, Hide character, Props, y los tres bloques de Clear) describen el estado del escenario, no una acción. No repites el fondo en cada línea; lo fijas una vez y se mantiene hasta que algo más lo cambia. Esto es lo que hace segura la retrocesión del jugador: el motor reconstruye el escenario para la línea en la que aterriza, en lugar de intentar deshacer una secuencia de acciones.


Dialogue

Dialogue

Una línea hablada o narrada. Es el único bloque en el que escribes texto libre, y el bloque que se detiene y espera al jugador.

OpciónQué hace
SpeakerEl personaje que la dice. Déjalo vacío para el narrador: sin placa de nombre, sin retrato.
DeliveryEl estado de interpretación: Normal, Whisper, Shout, Thinking, o uno que hayas definido. Selecciona la fuente, el color y el efecto de texto de ese personaje.
TextLa línea. Se almacena bajo una clave de localización por ti.
Display name aliasMuestra esta línea concreta bajo un alias, por ejemplo “The Stranger”, sin cambiar el nombre del personaje.

Se explica en profundidad en Diálogo y el escenario.


Scene

Todo en esta categoría se explica en profundidad en Diálogo y el escenario.

Backdrop

Fija el fondo. Un fondo es o bien capas de sprites o bien un clip de video, nunca ambos.

  • Modo Layers: hasta cinco capas de sprites. Cada capa tiene un sprite, un orden de dibujado (0 es la más al fondo), un desplazamiento, un factor de parallax y una lista opcional de sprites condicionales (el primer caso cuya condición se cumpla gana: un dormitorio que está oscuro de noche).
  • Modo Video: un clip de video, con loop, mute, volume y si se reproduce automáticamente cuando aparece el fondo.

Show character

Pone a un personaje en el escenario.

OpciónQué hace
CharacterQuién.
ExpressionQué sprite de escenario. Por defecto, base.
PortraitOpcional: un retrato de UI distinto de la expresión en escena. Vacío = usa la expresión.
PositionLeft, CenterLeft, Center, CenterRight, Right, o Custom con una X normalizada.
ScaleMultiplicador de tamaño.
FlipRefleja el sprite horizontalmente.
LayerSlot de 0 a 4. Decide quién se dibuja delante de quién.

Expression

Cambia la expresión de un personaje que ya está en escena. También puede fijar el retrato del cuadro de diálogo a la vez, de modo que un personaje puede verse triste en el escenario mientras el retrato muestra otra cosa.

Hide character

Retira a un personaje del escenario.

Props

Fija los props sueltos del primer plano. Misma estructura que las capas de fondo, incluidos los sprites condicionales.


Clear

Characters

Limpia el escenario de personajes: todos, o solo una posición (un anclaje y una capa concretos).

Backdrop

Elimina el fondo por completo, capas de sprites o video. Es el bloque que usas para ir a negro: un bloque Backdrop vacío no lo hará.

Props

Elimina todos los props.


State

Estos bloques escriben en el almacén de variables, el mismo almacén que leen las condiciones y que persisten las partidas guardadas. Consulta Variables y condiciones.

Set variable

Cambia una de tus variables. Elige la variable, la operación y el valor.

Operaciones: Assign, Add, Subtract, Toggle. Toggle invierte un Bool e ignora el valor.

Set dictionary

Fija un token de diccionario: uno de los tokens de texto editables por el jugador que aparecen dentro de las líneas. Consulta El diccionario.

Character variable

Fija un campo de un personaje (cariño, confianza, una bandera). Las mismas cuatro operaciones que Set variable. El selector de campos se limita a los campos propios de ese personaje más los universales del esquema. Consulta Personajes.

Character name

Cambia el nombre mostrado de un personaje durante el resto del juego. Su id nunca cambia.

FuenteQué hace
AliasUno de los alias que definiste en el personaje.
TextUn nombre que escribes. Puede ser texto plano, o una clave de localización.
VariableEl valor actual de una variable o token de diccionario, por ejemplo un nombre que el jugador escribió antes.
Reset to baseElimina la anulación; el personaje vuelve a su propio nombre.

La anulación se persiste, así que sobrevive a una partida guardada y a una retrocesión. Para mostrar un alias en una sola línea sin cambiar nada, usa en su lugar el display-name alias del bloque Dialogue.


Quests

Consulta Misiones.

Update quest

Actualiza una misión. Cuatro acciones:

AcciónQué hace
Set stateEscribe el estado de la misión: notstarted, active, completed o failed.
Set stageFija el índice de etapa de una misión ordenada.
Advance stageSuma al índice de etapa de una misión ordenada.
Set objectiveMarca un objetivo como hecho, o lo despeja.

Deliver items

Entrega los ítems de un objetivo de recolectar-y-entregar: comprueba el inventario, consume los ítems y marca el objetivo como hecho.

Nota Si el jugador no tiene los ítems, este bloque no hace nada y no dice nada. Es un no-op silencioso. Bloquea con una condición de inventario la rama que llega a él, o el jugador entrega tres pociones que nunca tuvo y nadie se da cuenta.


World

Wait

Se pausa durante un número de segundos. 0 segundos espera al clic del jugador en su lugar (ver la advertencia de arriba).

Advance time

Mueve el reloj del juego. Operaciones: AdvanceDayparts, AdvanceHours, AdvanceDays, SetDaypart, SetHour, SetWeekday. Las operaciones de hora solo se aplican en modo Clock.

El tiempo nunca avanza por sí solo: este bloque es una de las pocas cosas que lo mueve. Consulta Tiempo de juego.

Open screen

Abre una pantalla secundaria (el inventario, la lista de personajes, una superposición propia) por su id, a través de la misma pila de pantallas que usa un botón del HUD. Consulta Pantallas y HUD.

Routine override

Cambia el perfil de rutina de un personaje, de modo que a partir de ahora sigue un horario distinto. Deja el nombre del perfil vacío para devolverlo a su perfil por defecto. Consulta Rutinas de personaje.


Items

Los cuatro son el mismo bloque con una operación distinta. Consulta Ítems e inventario.

Give

Añade una cantidad de un ítem. Se limita al máximo del ítem.

Take

Quita una cantidad. Se limita a 0: quitar 5 de un ítem del que el jugador tiene 2 lo deja con 0, no se vuelve negativo y no falla.

Set quantity

Fija la cantidad exacta que el jugador posee.

Use

Ejecuta la lógica de uso del ítem: su condición, sus efectos y su consumo. El campo de cantidad se ignora.


Audio

Consulta Audio y música.

Music

Hace un crossfade de un clip en el canal Music.

OpciónQué hace
ClipLa música. Sin clip = el bloque se salta; no detiene la música.
LoopRepite cuando termina.
VolumeDe 0 a 1.
FadeDuración del crossfade en segundos.
Pause backgroundActivado por defecto. Pausa la cola persistente de música de fondo mientras suena esta pista, y deja que se reanude cuando la historia llega a un nodo sin ninguna pista que pause.

Ambient

Hace un crossfade del sonido ambiente en el canal Ambient. Clip, loop, volumen y fade.

Voice

Reproduce un clip de voz en el canal Voice. Clip y volumen. Empezar una nueva línea de voz detiene la anterior.

Sound effect

Reproduce un disparo único en el canal SFX. Clip y volumen.

Stop channel

Detiene un canal —Music, Ambient, Sfx o Voice— con un fade. Así es como silencias algo deliberadamente. Un bloque Music vacío no lo hará.


Input

Los tres bloques de Input son prompts autocontenidos: llevan su propia línea de pregunta (con speaker, delivery y alias opcionales, exactamente como un bloque Dialogue), y cuando la historia llega a ellos, la pregunta y el cuadro de texto aparecen juntos. El jugador escribe, y la respuesta se guarda en algún sitio.

Los tres comparten estas opciones:

OpciónQué hace
DefaultEl valor usado cuando el jugador deja el campo en blanco.
RequiredCuando está activado, una respuesta en blanco se rechaza y el jugador debe escribir algo.

Ask → variable

Escribe la respuesta en una de tus variables.

Ask → dictionary

Escribe la respuesta en un token de diccionario.

Ask → character name

Fija el nombre mostrado de un personaje según lo que escribió el jugador. Así es como el jugador nombra al protagonista.


Flow

Un bloque de flujo entrega el control fuera de la visual novel. Ponlo al final de un nodo de diálogo y se ejecuta cuando el jugador avanza más allá de la última línea. El almacén de variables sobrevive al salto: no se pierde nada.

Las mismas cuatro salidas también existen como un Flow (Mode Switch) Node dedicado. Cuál usar se explica en Transiciones. Las habitaciones se explican en Habitaciones de mundo libre.

Go to FreeRoam

Abandona la novela y entra en una habitación. Elige el mapa, y opcionalmente la habitación; deja la habitación vacía para llegar a la habitación de entrada del mapa.

Return to room

Vuelve a la habitación de mundo libre en la que estaba el jugador justo antes de que empezara esta novela. No eliges nada: “de dónde viniste” es implícito. Si el jugador no venía de mundo libre, llega en su lugar a la habitación de entrada.

Choose room

Abandona la novela y deja que el jugador elija a qué habitación ir. Opcionalmente restringe la lista a una lista blanca de habitaciones; déjala vacía y se ofrece cada habitación del mapa.

Go to VN scene

Salta a otra Visual Novel —de la Intro al Capítulo 1— sin pasar por mundo libre. Opcionalmente empieza en un nodo concreto dentro de ella en lugar de en su nodo de entrada. Esto cambia todo el asset de historia, a diferencia de un subgrafo, que se queda dentro del actual.

Ver también