beasty-visual-novel / authoring / dialogue-and-stage.md

Diálogo y el escenario

Esta página trata sobre las dos cosas que haces con más frecuencia: escribir una línea, y ambientar la escena en la que ocurre. Ambas viven dentro de un Dialogue Node, como bloques. Si no has leído Referencia de bloques, la versión corta es: los bloques se ejecutan de arriba abajo, y solo un bloque Dialogue se detiene y espera al jugador.

El patrón de casi todas las escenas es el mismo. Monta el escenario, luego habla.

Backdrop         bedroom
Show character   Maya, expression "happy", position Left
Dialogue         Maya: "You are finally awake."
Dialogue         (no speaker): "The light through the curtain was already yellow."

El fondo y el personaje aparecen en el mismo instante que la primera línea. El jugador ve una escena ya montada, no una diapositiva de cómo se construye.

El bloque Dialogue

El speaker

Elige el personaje en el desplegable. Su placa de nombre, el color de su nombre, su retrato y su fuente provienen todos de la definición del personaje: no los repites en cada línea.

Deja el speaker vacío y la línea es narración. Sin nombre, sin retrato, solo texto. Ese es todo el mecanismo; no hay un personaje narrador aparte que crear.

El texto

Escribe la línea. El editor la almacena bajo una clave de localización y gestiona esa clave por ti; nunca ves una clave a menos que la busques. Traducir la línea más tarde es una tarea aparte, que se hace en la pestaña Localization: consulta Localización.

El texto puede contener términos [token] que se resuelven a una variable o a una entrada de diccionario en tiempo de ejecución, así que una línea puede decir el nombre del jugador o la ciudad que eligió. Consulta El diccionario.

El estado de interpretación (delivery)

El campo Delivery dice cómo se entrega la línea: Normal, Whisper, Shout, Thinking, o cualquier estado que inventes. Vacío significa Normal.

Un estado de interpretación no es decoración en el bloque. Es una búsqueda en los delivery styles del personaje que habla, y un estilo puede cambiar:

El estilo puede fijarEfecto en la línea
FontUna fuente TMP distinta para este estado.
Text colourSobrescribe el color de cuerpo normal del personaje.
Font size multiplierPor ejemplo 1.3 para hacer un Shout físicamente más grande.
Name prefix / suffixDecora la placa de nombre, por ejemplo “Maya (thinking)”.
Text effectNone, Wave, Shake, Fade o Pulse, animado sobre el texto en tiempo de ejecución.

Así que Shout en Maya puede significar una línea más grande, roja y temblorosa, y Whisper puede significar una pequeña, gris y que respira —y consigues ambas eligiendo una palabra en un desplegable, una vez que has definido los estilos en el personaje. Un personaje sin estilo para un estado recurre a sus valores por defecto.

Los delivery styles se definen por personaje. Consulta Personajes.

El display-name alias

El campo Display name alias muestra al speaker bajo un nombre distinto solo para esta línea.

El uso clásico: el jugador aún no ha sido presentado, así que la mujer misteriosa habla como “The Stranger” durante dos capítulos. Sigues definiéndola como Maya —el mismo personaje, las mismas variables, las mismas expresiones— y cada línea simplemente lleva el alias. En el momento en que se presenta, dejas de fijar el alias, y a partir de ahí es Maya.

El alias proviene de la lista de alias del personaje. No cambia nada más: ni su id, ni su nombre en ningún otro sitio, ni el valor de @char:maya:@name.

Nota El alias es por línea. Para cambiar el nombre de un personaje de forma permanente —porque el jugador lo renombró, o porque fue desenmascarado— usa en su lugar el bloque Character name. Escribe una anulación persistida.

El escenario

El escenario tiene tres canales independientes: el fondo, los personajes y los props. Cada uno mantiene su valor actual hasta que un bloque del mismo canal lo cambia. Nunca repites el fondo.

Backdrop

Un fondo es o bien capas de sprites o bien un video. No puede ser ambos.

Layers es el caso normal. Hasta cinco capas de sprites, cada una con:

  • un sprite,
  • un orden (0 se dibuja más al fondo),
  • un desplazamiento,
  • un factor de parallax (0 = estático, 1 = se mueve por completo con la cámara),
  • una lista opcional de sprites condicionales.

Los sprites condicionales son cómo un fondo se convierte en cuatro. Le das a la capa una lista ordenada de casos, cada uno con una condición; el primer caso cuya condición se cumpla gana, y si ninguno lo hace, se usa el sprite por defecto de la capa. Una capa de dormitorio con casos para time.daypart == Night y time.daypart == Evening es un dormitorio que se oscurece solo, sin ningún bloque adicional en ningún lugar de la historia. Una condición vacía siempre se cumple, así que un caso sin condición actúa como comodín: ponlo al final.

El modo Video reemplaza las capas por un clip de video:

OpciónQué hace
ClipEl video.
LoopRepite cuando llega al final.
MuteSilencia la pista de audio propia del clip.
VolumeDe 0 a 1, cuando no está silenciado.
Play on enterActivado por defecto: el video empieza en cuanto el fondo se activa. Desactívalo para iniciarlo tú mismo desde código.

Advertencia Un bloque Backdrop vacío no hace nada. No va a negro: se salta, y el fondo anterior se mantiene. Para eliminar el fondo, usa el bloque Clear > Backdrop.

Show character

Pone a un personaje en el escenario, o lo reemplaza si ya está ahí.

OpciónQué hace
CharacterQuién entra.
ExpressionQué sprite de escenario usar. Por defecto, base.
PortraitOpcional. Fija un retrato de UI distinto de la expresión en escena. Vacío = el retrato sigue a la expresión.
PositionLeft, CenterLeft, Center, CenterRight, Right, o Custom (una X normalizada de 0 a 1).
ScaleMultiplicador de tamaño. Úsalo para la distancia.
FlipRefleja el sprite, así un solo sprite mira hacia ambos lados.
LayerSlot de 0 a 4. El más alto se dibuja delante. Dos personajes en el mismo anclaje necesitan capas distintas, o se superponen.

Quién está en escena es independiente de quién está hablando. Un personaje puede hablar sin estar en escena, y quedarse en escena toda una escena sin decir una palabra.

Expression

Cambia la expresión de un personaje que ya está en escena. Es más ligero que un segundo bloque Show character, y es lo que usas entre líneas.

Tiene una opción extra que vale la pena conocer: also set the portrait. Actívala y el bloque también fija el retrato del cuadro de diálogo, ya sea a una clave de retrato que nombres, o al retrato base del personaje si la dejas vacía. Eso permite que el sprite de escenario y el pequeño icono de cabeza discrepen a propósito, algo útil cuando el personaje está de espaldas, u ocultando lo que siente de todos menos del jugador.

Hide character

Retira a un personaje del escenario. Los demás se quedan.

Props

Los props son imágenes sueltas en primer o segundo plano superpuestas al fondo: una mesa, una hoja que cae, un marco de ventana. Un bloque Props fija todo el conjunto de props a la vez, y cada prop tiene las mismas opciones que una capa de fondo, sprites condicionales incluidos.

Los tres bloques Clear

BloqueQué elimina
Clear > CharactersA todos los personajes, o solo al de una posición dada (anclaje más capa).
Clear > BackdropEl fondo, capas de sprites o video. Así es como vas a negro.
Clear > PropsTodos los props.

Son la única forma de dejar en blanco un canal. Asignar nada a un bloque Backdrop, Show character o Props no lo limpia: simplemente se salta el bloque.

La cadena de reserva de expresión y retrato

No vas a dibujar cada expresión para cada personaje, y no lo necesitas. Cuando el motor necesita arte para un personaje, recorre una cadena:

la expresión que pediste -> el base del personaje -> el sprite de escenario del personaje

La misma cadena se aplica a los retratos. Así que un personaje con solo un sprite base sigue funcionando en todas partes: pides angry, obtienes base, y el juego funciona. Nada da error, nada se vuelve rosa, nada desaparece. Dibuja el sprite angry más tarde y cada línea que ya lo pedía empieza a mostrarlo.

La clave de expresión por defecto es base. Las expresiones y los retratos se configuran por personaje en Personajes.

Ver también