Creación de un motor para animar juegos de aventuras en React
August 26, 2022
En el Encuentro CoTech de 2021 jugué a un juego de aventuras basado en la elección, escrito por un amigo, que trataba obstinadamente sobre la organización de cooperativas, pero que también exploraba otros temas. Tras varias conversaciones posteriores y con un interés compartido por las cooperativas y otros juegos de aventuras como Disco Elysium, decidimos construir uno juntos.
En nuestro primer juego - Big City Agora - el jugador se despierta en un parque de Big City, en un contexto en el que todo el mundo ha experimentado amnesia colectiva, tras un suceso llamado “El Big Pop”. El juego consiste en explorar el mundo a través de elecciones y diálogos basados en texto, utilizando retratos de personajes, efectos de texto normales y animaciones para dar vida a la historia. Hay una demostración disponible siguiendo el enlace del texto, y el código y la documentación son de código abierto, publicados en GitHub.
El producto final es capaz de ejecutar historias escritas con Ink, un lenguaje de programación sencillo pero rico en funciones diseñado para soportar narrativas lineales como Big City Agora. Tomando un proyecto Ink exportado desde una fuente en línea, nuestro motor analiza el contenido y lo anima utilizando componentes React, impulsados por animación automática y soportando extensiones personalizadas a la sintaxis Ink para impulsar retratos de personajes, pausas y efectos.
El proyecto se construyó de forma bastante iterativa, comenzando como un único juego y probando React, pero más tarde me di cuenta del potencial de desarrollar una herramienta bastante simple pero potente para renderizar cualquier narrativa Ink y darle vida. Si quieres probarlo y escribir tu propio diálogo, echa un vistazo al README donde encontrarás instrucciones. Luego puedes utilizar nuestro sitio de demostración para jugar. Ink es un lenguaje de programación, pero creo que es bastante accesible para los recién llegados, y después de haber jugado con otros formatos y herramientas como Twine, me parece muy fácil de usar para escribir narraciones lineales y ramificadas.
A partir de ahí, tengo planes de ampliar la aplicación para compartir juegos entre escritores y jugadores, así como nuevas ideas sobre cómo utilizar la web semántica para reunir juegos en un mundo narrativo descentralizado pero coherente. Os mantendré informados :-)