Diseño Narrativo
Editor de Instrucciones
Usa el modo Constructor y el modo Código para escribir asignaciones de variables en flujos, respuestas, zonas y pines.
El Editor de Instrucciones define asignaciones que escriben en variables. Storyarn usa el mismo editor en cualquier punto donde la lógica runtime necesita cambiar estado:
| Dónde | Cuándo se ejecutan las instrucciones |
|---|---|
| Nodos de Instrucción | Cuando el flujo llega al nodo. |
| Respuestas de diálogo | Cuando el jugador elige esa respuesta. |
| Zonas de escena | Cuando la acción de la zona se activa durante la exploración. |
| Pines de escena | Cuando la acción del pin se activa durante la exploración. |
Las instrucciones pueden escribir valores literales o copiar valores desde otra variable. Usa el Editor de Condiciones cuando solo necesites comprobar estado.

Modos de edición
Cada conjunto de instrucciones tiene dos modos de edición:
| Modo | Mejor para | Qué editas |
|---|---|---|
| Modo Constructor | La mayoría de usuarios, cambios de estado legibles, menos errores de sintaxis | Filas de asignación en forma de frase. |
| Modo Código | Perfiles técnicos, edición rápida, cambios compactos en varias líneas | Una asignación por línea, como mc.jaime.gold += 100. |
Los dos modos editan las mismas asignaciones. Abrir el modo Código las muestra como texto y no cambia nada. Lo que editas en el modo Código se lee de vuelta en las filas que muestra el modo Constructor, y se guarda cuando dejas de escribir o sales del texto. Por ahora, un comentario (//) se rechaza: el modo Constructor no tiene dónde guardarlo.
Modo Constructor
El modo Constructor se lee como lenguaje natural:
Establecer mc.jaime · health en 75
Sumar 100 a mc.jaime · gold
Alternar quest.door · unlocked
Cada asignación tiene:
- Una operación.
- Una variable de destino.
- Un valor, salvo que la operación no lo necesite.
Un mismo editor puede contener varias asignaciones. Se ejecutan en orden.
Operaciones
| Operación | Sintaxis en el modo Código | Tipos de variable |
|---|---|---|
| Establecer | mc.jaime.health = 75 | Todos los tipos editables |
| Sumar | mc.jaime.gold += 100 | Número |
| Restar | mc.jaime.health -= 25 | Número |
| Establecer verdadero | quest.door.unlocked = true | Booleano |
| Establecer falso | quest.door.unlocked = false | Booleano |
| Alternar | toggle quest.door.unlocked | Booleano |
| Borrar | clear mc.jaime.notes | Texto y texto enriquecido |
| Establecer si no tiene valor | quest.door.unlocked ?= true | Todos los tipos editables |
Las operaciones disponibles dependen del tipo de variable seleccionado. Por ejemplo, un número se puede establecer, sumar o restar, mientras que un booleano se puede establecer como verdadero, establecer como falso o alternar. Establecer si no tiene valor solo escribe mientras la variable no tenga ninguno, como un booleano de tres estados o una fecha sin establecer, o un texto que Borrar ha dejado sin valor. Un número empieza en 0 y un booleano de dos estados en falso, y ninguna operación que admiten los deja sin valor, así que en ellos nunca escribe. Un texto empieza vacío, así que en un texto solo escribe después de Borrar.
Un booleano vale verdadero o falso o, si tiene tres estados, ningún valor. Al establecer uno si no tiene valor, el modo Constructor ofrece verdadero y falso para elegir. Cualquier otro valor, como 5, se rechaza: la variable conserva su valor y el modo de depuración explica por qué en su consola.
Un número entero sigue siendo entero: sumar 1 a 0 da 1, y 0.5 + 1.5 da 2. Un valor que no es un número, como 5abc, se rechaza: la variable conserva su valor y el modo de depuración explica por qué en su consola. También se rechaza un número mayor que el más grande que guarda un ordenador, unos 1,8 × 10^308, y una suma o resta cuyo resultado lo sería.
Valores literales y referencias
La mayoría de asignaciones usan valores literales:
mc.jaime.health = 75
También puedes cambiar el campo de valor a modo referencia de variable:
mc.jaime.health = mc.jaime.max_health
Eso copia el valor actual de max_health en health cuando se ejecuta la instrucción.
Modo Código
El modo Código usa una asignación por línea:
quest.tavern.accepted = true
mc.jaime.gold += 100
mc.jaime.health = mc.jaime.max_health
clear mc.jaime.notes
Los números se escriben tal cual, como 75, -5 o 0.5. Cualquier otro valor va entre comillas dobles, con \" para una comilla y \\ para una barra invertida dentro. true y false se escriben sin comillas para establecer un booleano, y true, false y nil para establecerlo si no tiene valor; en cualquier otro sitio el modo Código los rechaza, así que mc.jaime.notes = nil se rechaza: usa clear para vaciar un texto. Una asignación que aún no tiene valor muestra ?: escribe el valor ahí. Cada asignación lleva un solo valor: mc.jaime.health = 75 == 75 se rechaza.
El modo Código ofrece autocompletado, linting y formato. No se guarda nada hasta que todas las líneas se leen: corrige la línea que marque el modo Código antes de confiar en ella en la reproducción, la depuración o la exploración.
Mientras el modo Constructor tenga una fila que la sintaxis no puede escribir, como una fila sin variable, una referencia a variable sin su variable, un nombre que la sintaxis no puede escribir o un valor con un salto de línea, el modo Código muestra las asignaciones en solo lectura y lo indica. Completa o cambia la fila en el modo Constructor para editarlas en el modo Código.
Dónde colocar instrucciones
Usa un nodo de Instrucción dedicado cuando el cambio de estado sea importante para la estructura del flujo, cuando varios valores cambien juntos o cuando la actualización deba ocurrir sin depender de una respuesta concreta del jugador.
Usa instrucciones de respuesta, zona o pin cuando el cambio de estado pertenece a esa interacción concreta.