El desafío de la escritura interactiva: Diseñar un RPG no lineal como Esoteric Ebb

CHRISTOFFER BODEGÅRD / SUDDEN SNAILGame Developer and Writer
Mar 17, 2026|7 Min
Arte clave de Esoteric Ebb de Christoffer Bodegård | Realizado con Unity. Un aventurero con una túnica azul agita una espada rota ante un guerrero esquelético que tiene la espalda vuelta a la cámara. Un goblin vestido de rosa, flanqueado por un dragón rojo, observa la escena con angustia. El título del juego ESOTERIC EBB aparece en el lado izquierdo.
Para tu comodidad, tradujimos esta página mediante traducción automática. No podemos garantizar la precisión ni la confiabilidad del contenido traducido. Si tienes alguna duda sobre la precisión del contenido traducido, consulta la versión oficial en inglés de la página web.

Esoteric Ebb está arrasando en Steam, pero ¿cómo se crea un CRPG con narrativa ramificada como este? En este blog invitado, Christoffer Bodegård analiza las complejas decisiones de diseño narrativo y su viaje de ocho años aprendiendo a gestionar la creación de una historia verdaderamente no lineal basada en diálogos.

Desde la primera prueba pública de juego de Esoteric Ebb En 2023, me han hecho una pregunta simple una y otra vez: “¿Cómo hace un seguimiento de todo??” Es una buena pregunta, pero también difícil. Lo más probable es que lo haya respondido de varias maneras diferentes a lo largo de los años, pero nunca de una manera realmente satisfactoria... Así que intentemos hacerlo.

(Pero primero, un poco de contexto sobre Esoteric Ebb)

Esoteric Ebb es un CRPG masivo, no lineal y centrado en la narrativa. Sin combate tradicional, casi completamente basado en diálogos, un tiempo de juego que varía entre 45 minutos y 50 horas, y tantas opciones... Opciones reales, del tipo que cambian activamente tu experiencia de maneras fundamentales hasta los créditos. Sí, es uno de esos juegos. Y llevó un tiempo hacerlo: unos ocho años de principio a fin, la mitad de los cuales se pasó sin hacer nada, sentado solo en una habitación, aprendiendo a hacerlo escritura interactiva.

Las tres limitaciones de la escritura interactiva

Defino la escritura interactiva dentro de tres limitaciones/objetivos algo arbitrarios. Estos son:

  • Una alta relación de elección a texto
  • >50% del contenido es dinámico
  • Un diseño abierto

Tómalos o déjalos como desees, pero si cumples estos tres puntos, tendrás una receta para una intensa (potencial) agencia positiva del jugador. Pero al mirar esto, podrías encontrarte con algunos miles de problemas.

Analicemos cada uno de ellos.

The pale man holds incredible power, if he is able to bypass the esoteric limitation. #int #DC10
"However, I suggest you speak with Lady Sageleaf about this, if you require answers. I am simply a middle-man in this." #Visken
-(riverHub)

	+.Snell==1-"Snell." \(Look at him.\)
		The goblin gives you a conflicted expression. #Snell
		"I... didn't know, Cleric. I really didn't." #Snell
		"He did not." #Visken
		"Lady Sageleaf instructed me to not inform anyone. Even her own agents." #Visken
		"No need to be paranoid." #Visken
		
			++"How can I not be paranoid? Everyone's lying to me!"
				"Correction: I was lying to you. Lady Sageleaf, potentially as well." #Visken
				
			++"True. It's just some esoteric bullshit."
				"...Indeed." #Visken
		--
		Snell scratches his chin. #Snell
		"I'm not entirely sure how to feel about this." #Snell
		"The Old Lady isn't one to spend money on resurrecting a city cleric." #Snell
		"But I'm guessing she didn't want to wait for another one to appear?" #Snell
		"Hm. We should go speak with her. But... remember that she paid for your resurrection, Cleric." #Snell
		
			++"That is true. She seemed nice enough."
				"...I wouldn't use 'nice'. But she's at least very, very competent." #Snell
			
			++"I'll refrain from commenting until I hear her side of it."
				"Smart." #Snell
				
			++"I'm not sure I believe you."
				"That's okay." #Snell
				"But really, I'm not sure what I would gain by lying about this." #Snell
		--
		The goblin is telling the truth. You can read it in his eyes. #wis #DC14
		It was a LIE. But it was a LIE for <b>expediency</b>... #con #DC9

	+"What spell did you use to revive me?"
		He is quiet for several seconds. #Visken
		Considering if he should share this knowledge. #wis #DC13
		A modification, then. #int #DC12
		A <i>personal</i> resurrection spell. #reply #int
		"<i>Raise Dead</i>." #Visken
		"With changes. It is not the original spell, as I'm sure you understand." #Visken
		<i>Visken's Raise Dead</i>. #int #DC12
		"My spell requires a higher cost, while lowering the spell's complexity in return." #Visken
		
			++"A higher cost? Like... a blood-cost?"
				"No, Cleric." #Visken
				
			++"What do I owe you?"
				"Nothing. Lady Sageleaf offered to pay it in full." #Visken
				
			++"A higher crown cost?"
				"Yes, Cleric." #Visken
		--
		"The new cost is doubled. One thousand crowns." #Visken
		"Which is not too bad." #Visken
		
			++"My life is worth much more than that, yes."
			++"Eh. Could be better."
			++"Waste of money."
		--
		The pale man stares at you. #Visken
		
	+"Is this why I lost my ability to cast higher level spells?"
		"Potentially." #Visken
		"Whatever issues your body and soul appeared to have had with my spell, it was not permanent." #Visken
		
			++"Yeah, I've rebounded quickly."
				"Yes indeed." #Visken
				
			++"I'm just that awesome of a wizard, I guess." #.WIZARD+=1
				"Of course." #Visken
				
			++"My soul <i>and</i> body?"
				"It's more common than you might think." #Visken
	
	+"I felt really weird when I woke up. Like... different. Is that your dark magic also?"
		"That can happen, yes." #Visken
		"As it can with any resurrection magic when a soul is given sufficient time spent away from its body." #Visken
		
			++"So my soul is ruined?"
				"No." #Visken
			++"I like this new me."
				"Wonderful to hear." #Visken
			++"I don't think the difference was that big, honestly."
				"Good." #Visken
			++"Can I go back to my old self?"
				"No." #Visken
		--
		His cold voice shows no interest in your personal business. #wis #DC10
		Eh. Whatever changed, it was probably for the best. #dex #DC16
		Still got your wits about you. That's what matters. #reply #dex
		At least you are still highly intelligent. #int #FC8
		That is all that matters. #reply #int
		Soul magic is complicated. Not even the greatest Arcanists were able to unlock all of the secrets of the <i>inner light</i>. #int #DC15
		Perhaps one day, you will. #reply #int
	
	+"Right. I'll... go speak with Lady Sageleaf."
		"Good idea." #Visken
		The pale man was simply an instrument. #int #DC11
		But it is good to understand this game you've been entangled within. #reply #int
		->questions

-
->riverHub

Optimización del compromiso del jugador a través de la relación entre opciones y texto

¿Por qué es importante una alta relación entre opciones y texto?

Una alta relación de elección a texto suena encantador. Es una excelente herramienta para mantener al jugador despierto y comprometido, entre otras cosas. Si los obligas a leer demasiados bloques de texto, los ojos del jugador promedio se quedarán fijos. Pero si sigues molestándolos e incitándolos, obligándolos a responder preguntas interesantes, llevándolos a tomar decisiones difíciles o simplemente obligándolos a responder a acusaciones groseras, entonces es como inyectarles una bebida energética en las venas. Se despertarán y realmente interactuarán con el texto. Al menos, estadísticamente, es más probable que lo hagan.

El problema aquí es simple, aunque: Tendrías que estar loco para querer añadir ese nivel de ramificación a tu diálogo. Lleva mucho trabajo y, más específicamente, creo que requiere un conjunto de herramientas muy específico. (También se necesitan habilidades, claro, pero la herramienta tiene que ser flexible y rápida para que el proceso de ramificación no se convierta en una prueba de resistencia).

Captura de pantalla de Esoteric Ebb de Christoffer Bodegård | Realizado con Unity.
Esoteric Ebb | Christoffer Bodegård

Elegir la herramienta adecuada

La herramienta que utilizo es el magnífico e increíblemente maravilloso script de tinta creado por el estudio Inkle. Al hacer que esta herramienta de código abierto – que funciona a la perfección en Unity, por cierto – han cambiado literalmente mi carrera. Les debo mucho. Y la tinta es una herramienta que, aparte de todas las demás cosas interesantes que hace, es extremadamente adecuada para una ramificación rápida y ágil.

Cuando escribo un diálogo en tinta, escribo con la misma velocidad que con el contenido lineal. Mientras haya un esquema de diseño suelto preparado, puedo empezar. Añadir expresiones de los jugadores, gestionar elementos visuales o manejar comprobaciones de dados, todo lleva segundos, ya que todo se maneja a través de etiquetas básicas (en su mayoría personalizadas para encajar)Ebb) y código personalizado, junto con las funciones de tinta regulares (y bien diseñadas).

"Beyond that, I also focus a lot on my own unverified theories..." #Snurre
He slaps his knees and grins. #Snurre
"<b>The Folk Spirit</b>. Have you heard of it?" #Snurre
It's something he made up. Doesn't mean it's not correct though. #int #DC18
Sounds like a collective folk view on morality. #wis #DC13

	+"No. I have not."
		--(spiritNo)
		"Understandable. It's not yet published." #Snurre
	+DC13 wis-"Is that some kind of unified moral or ethical code of a people or culture?"
		"No, it's-" #Snurre
		He leans back and squints. #Snurre
		"That's not actually that far off. You've got a head on you, Cleric." #Snurre
	+"Yes."
		"Oh!" #Snurre
		"Then tell me, what is it?" #Snurre
		
			++"I lied. I have no idea what you're talking about."
				->spiritNo
			
			++ROLL18 int-Figure it out.
				+++S
					Ah... #int
					Just look at this halfling. #int
					He's clearly walking in the footsteps of the study of unconscious mind melding. #int
					Your best guess would then be... #int
					
						++++"The Folk Spirit... is that based on the idea of universal folk myths?"
							His bushy eyebrows reach for the ceiling. #Snurre
							"Why, yes! Very good guess, Cleric." #Snurre
					
				+++F
					You stare at the halfling for about thirty seconds. #int
					"You're a quiet one, Cleric." #Snurre
					An idea pops into your empty, empty skull. #int
					
						++++"The Folk Spirit is a communal ghost that haunts us every autumn."
						++++"The Folk Spirit is a great Fordnippian wine."
						++++"The Folk Spirit? That's a music genre."
					----
					"...Not a terrible guess, but no." #Snurre
						
						++++"Yeah, I have no idea."
							->spiritNo
	
-
"The Folk Spirit is the working title for my new thesis." #Snurre
"Most of it is, if you excuse my anuran, <i>fucking bullshit</i>." #Snurre #XPGain #Minor
"But in short, it is about how each folk share a number of core communal archetypes, or myths. I have traveled around the Coast to collect as many tales, writing down thousands of stories previously only passed down orally." #Snurre
"All to see how well my theory holds up, in the minds of so, so many folk." #Snurre
He clears his throat and leans back into his chair. #Snurre
"Apologies. I am ranting here, let us put a stop to it. What do <i>you</i> want, Cleric?" #Snurre
->hub

Planificación de la variabilidad: Contenido dinámico y diseño abierto

Pero, ¿qué pasa con el número dos de nuestra lista de restricciones (">50% del contenido es dinámico")? El contenido dinámico y los diseños abiertos (o no lineales) provienen de un objetivo similar: crear variabilidad en función de la entrada del jugador.

¡Déjalos hacer lo que quieran! ¡Desnúdate! Ten un mundo abierto, donde puedas ir en cualquier dirección. Bueno, esa es una forma de hacerlo. Pero la distinción importante aquí es que la escritura interactiva siempre se centra en un diseño impulsado por la intención del autor. En otras palabras, todo está controlado por el escritor.

Todavía puede hacer un diseño sistemático, y hay una gran superposición, pero la arte práctico de escritura interactiva es específicamente cuando tú no dejes la narrativa emergente hace su trabajo.

Lo que quiero decir con esto es: Tienes que tener variables. Y tienes que llevar un registro de ellas. Para cada elección que el jugador hace, ya sea que se trate de estadísticas elegidas durante la creación del personaje o de lo malvados que fueron contra ese jefe goblin, todo eso necesita algún tipo de retroalimentación para invocar el fenómeno de la agencia. Ya sea que eso implique un comentario dinámico al final del juego o una línea argumental completa con varias ramas, esos momentos de retroalimentación son igual de importantes que las propias elecciones, si no más.

Captura de pantalla de Esoteric Ebb de Christoffer Bodegård | Realizado con Unity.
Esoteric Ebb | Christoffer Bodegård

Mantener un registro de las variables

Mi método para llevar un registro de las variables es simple y flexible: Lo llamo el sistema de Variable de la Historia (SV). Al utilizar el sistema de etiquetas, cada vez que esas etiquetas comienzan con una coma, esto indica el uso de una variable. Si esa variable nunca se ha encontrado antes, la SV se crea en una lista única. De lo contrario, simplemente accede a la SV ya existente y la establece o verifica según lo ordenado.


++DC20 wis-\(Look for the source of the breeze.\)
	Your eyes glance upwards. #wis
	The wall. The wall is not a wall. #wis #.TE_SecretDoorRevealed=1 #UpdateEntities
	Look at the wall. #wis
		+++E-Oh?
			->END

Una cadena y un número entero, generalmente se utilizan como un booleano, pero cuando es necesario, se amplían para aumentar o disminuir cuando sea necesario. Los comandos que implementé para Ebb fueron «==», «=», «>=», «<=», «+=» y «-=».

La pregunta entonces se convierte en una cuestión de organización. Me fui sintiendo mejor en esto a medida que avanzaba, pero cada SV utiliza un prefijo basado en la ubicación o la misión. «TE» en este caso se refiere al área de la tienda de té. Un SV con el prefijo «Q» se refiere a una misión, y un «QP» se refiere a un punto de misión, como una entrada en el registro del árbol de misiones, tu diario de misiones.

Yes. #wis
A symbol. #wis #XPGain #Minor
A symbol of a sun. Definitely. #OBJ
If this is what Akzel wanted you to find, you've found it. #wis #.QP3_Mine=1 #.Q_Mine=2

	+Huh. So what do I do now?
-
Get back to your dwarf buddy, of course! #dex

Ventajas del diseño narrativo

Es un sistema rudimentario, con una importante mejora de la productividad: Solo tiene que seguir escribiendo. ¿Necesita una nueva variable para una opción de diálogo dinámica? Solo tiene que añadirla y luego copiarla y pegarla en el archivo donde debe establecerse. Puede comprobar fácilmente el uso de cualquier variable mediante una búsqueda global con CTRL+F o gestionar cambios importantes mediante la gestión básica de texto. No hay ninguna base de datos que gestionar. La lista en sí es solo cronológica. ¿Se ha olvidado el nombre de una variable? Solo tiene que buscar el área o los prefijos de misión relevantes y revisar la lista.

Al principio no esperaba que funcionara. Una partida media puede terminar con más de 3.000 variables de historia en esa lista al final del juego. Pero, como con la mayoría de las cosas que hice en Esoteric Ebb , Unity simplemente funcionó con ello. Y la integración de Unity de ink nunca me ha fallado, ni una sola vez, incluso después de usarla durante casi una década. Un recompilado de los archivos de tinta tarda segundos. Personalizar las características para Esoteric EbbEl gusto de A siempre ha sido extremadamente eficiente. Y por extraño que parezca, todavía me sorprende todos estos años después que esto simplemente fluye. Si puedo, quiero seguir desarrollando este pipeline durante años venideros.

Más allá de eso, uso Notepad++ para toda mi escritura en Esoteric Ebb. Aunque obviamente podrías usar cualquier editor de texto que prefieras, mantenerlo ligero y ágil proporciona una experiencia mucho más fluida. Buscar entre un millón de palabras en una fracción de segundo es exactamente lo que me permitió escribir (¡y corregir errores!) un juego tan masivo.

The croco-beast rushes forward and grabs you by the neck. #Kraaid #HPLoss #1d4
		
	++\(Struggle to breathe.\) "I'm actually..."
		He tightens the grip as you mutter out a faint response. #Kraaid
			+++"...a rogue." #.ROGUE+=1
			+++"...a wizard." #.WIZARD+=1
			+++"...no, no okay, I'm a cleric. I'm <b>The Cleric</b>, even." #.CLERIC+=1
			+++.BARD==1-"...I think I'm a Bard? You know what that is?" #.BARD_Choice+=1
			+++.DRUID==1-"...a Druid. I guess?" #.DRUID_Choice+=1
			+++DC17 con-"...<i>I'm Agrarian</i>...! No wait, shit. That's politics. I mean, uh..." #.AGRARIAN+=1
			+++"...I'm whatever you want me to be. <i>Please don't kill me</i>."
				"Whatever <wiggle>Kraaid</wiggle> wants?" #Kraaid
					++++"Yes...! I'll even be apolitical!" #.APOLITICAL+=1
					++++"Yes! I'm... I'm a rabbit!"
	
	++"No! I am! I'm Cleric! That's me!"

Pensamientos finales: Corrección de errores y aprendizaje para aceptar la rama

Pero ese también es el mayor inconveniente de este sistema: la corrección de errores. Debería haber invertido más tiempo en soluciones técnicas para la lógica y la sintaxis rotas, pero, en realidad, terminé forzando toda la prueba mediante pruebas de juego.

A medida que Esoteric Ebb recibe su parche 1.1, he logrado corregir aproximadamente 704 'errores de texto' – ya sea de ortografía o relacionados con el código – en menos de cuatro días de trabajo (días muy relajados, también). Esto es, de nuevo, porque el sistema es extremadamente ágil. Aun así, esos errores estaban ahí cuando lanzamos Esoteric Ebb debido a la configuración aquí también. Es una cantidad de texto descomunal, con una cantidad ridícula de ramificaciones. Pero también estoy seguro de que no habría sido capaz de escribir ni siquiera una cuarta parte del recuento de palabras final si no hubiera sido bendecido con tinta.

Captura de pantalla de Esoteric Ebb de Christoffer Bodegård | Realizado con Unity.
Esoteric Ebb | Christoffer Bodegård

Apéndice: Más herramientas recomendadas para diseñadores narrativos

La tinta hace que el arte práctico de la escritura interactiva sea rápido, ya que me. Siempre me ha costado trabajo con la creación de guiones visuales, pero sé que muchos escritores tienen el problema exactamente opuesto. Por lo tanto, siempre recomiendo buscar otras soluciones para encontrar la que mejor se adapte a usted y a su equipo, con algunos ejemplos como: articy:draft, Arcweave, y Yarn Spinner.

Esoteric Ebb ya está disponible en Steam. Explora más juegos hechos con Unity en nuestro blog Página del curador de Steam, y echa un vistazo a más historias de los desarrolladores de Unity en el blog Blog de Unity y Centro de recursos.