INVENTA y Fungus

Fungus es un plug-in que se acopla a Unity y proporciona una serie de herramientas para facilitar el desarrollo de cuentos interactivos y animados. Es un proyecto open-source, que está mantenido principalmente por Snozbot, un estudio independiente de desarrollo de videojuegos de Irlanda. Se puede obtener a través de la Asset Store (la plataforma de compra y descarga de complementos y contenido adicional de Unity), además de que el código fuente está disponible públicamente en GitHub.

Fungus añade a Unity diversas herramientas visuales que se integran en el editor y que pueden ser utilizadas para crear cuentos de manera gráfica. Pero además añade un conjunto de scripts para poder utilizarlos extendiendo su funcionalidad mediante código.

Entre las principales características de Fungus están la división del proyecto en bloques que representan escenas, la posibilidad de controlar el paso de una escena a otra (pudiendo generar hilos alternativos, por ejemplo), crear y añadir personajes, generar animaciones y acciones de interacción sobre estos personajes, etc.

Como funciona

Una vez instalado Fungus dentro de Unity, tenemos dos grandes aportes que mejoran y facilitan la creación de cuentos: el “Flow Chart” y un conjunto de clases y scripts que representan una historia o cuento.

“Flow Chart” es una herramienta que se integra dentro de la interfaz gráfica de Unity. Dentro de ella nos muestra el cuento como si fuera un diagrama y podemos controlarlo totalmente: podemos ver los bloques (o escenas) que componen la historia, ver los flujos de dirección entre ellos o podemos visualizar y editar un bloque.

Ejemplo de FlowChart. Los bloques amarillos son escenas y los bloques naranjas con elementos de control del flujo.

Una escena es representada por un bloque amarillo en el FlowChart. En una escena, una cámara mostrará un fondo de escena y podremos añadir una serie de personajes previamente creados. Si pulsamos en ella, se abrirá en el inspector de Unity una pequeña herramienta desde la que podemos añadir multitud de elementos a la escena: movimiento de personajes; apariciones, desapariciones, zoom o agitaciones de elementos; cuadros de diálogo; audio; e incluso tus propios comportamientos utilizando el famoso lenguaje de scripting para videojuegos LUA.

Inspector de un bloque de Fungus. Desde aquí podemos ver y editar el flujo de acciones e interacciones que tendrán lugar en la escena.

Por otro lado, también tenemos a nuestra disposición el conjunto de clases, escritas en el lenguaje de programación C#, que utiliza Fungus internamente para su funcionamiento. Para editar un cuento relativamente básico, podemos obviar esta parte, pero si queremos comportamientos más complejos y personalizados sí se hace necesario hacer uso de estos elementos, lo que requiere conocimientos medios (como mínimo) de programación. Por ejemplo, podemos generar un script C# que haga uso de estas clases para crear nuevos personajes programáticamente de manera dinámica durante la ejecución de la historia.

Como vemos, a pesar de que Fungus facilita en gran medida la generación de cuentos e historias dinámicas, no es un proceso que esté al alcance del público en general. Incluso su instalación requiere conocimientos básicos de cómo funciona Unity. Por lo tanto, si queremos trasladar estas tecnologías a un público con limitados conocimientos tecnológicos, y hacer accesible la creación de cuentos digitales, hemos de poner una “capa” más a lo visto hasta ahora. Ahí es donde entra en juego INVENTA.

Como se integra con INVENTA

Aquí se explica cómo vamos a utilizar Fungus para INVENTA. En otras entradas, se podrá consultar con más detalle otros puntos sobre las motivaciones, desarrollo y características de INVENTA.

Mediante una serie de acciones básicas, que se llevarán a cabo con pocos clicks a través de una interfaz muy sencilla e intuitiva, un usuario podrá crear una historia completa a través de INVENTA. Incluso los gráficos de los personajes y fondos de escena serán suministrados por la propia plataforma. El usuario únicamente ha de elegir que componentes quiere, y añadir una serie de acciones de interacción a cada escena, como pueden ser diálogos, movimiento o zoom sobre personajes. Internamente, estos elementos y parámetros son “traducidos” a JSON. Esta información en JSON será la que utilice Fungus para reproducir la historia.

Pero para que esto sea posible, será necesario desarrollar una serie de extensiones para Fungus que permitan la interpretación de manera correcta de la información que se genera en JSON. Para ello, desarrollaremos un conjunto de nuevas clases en C#, algunas de las cuales extenderán a las propias de Fungus y para que hereden parte de su funcionalidad. Además, desarrollaremos un “traductor”, que hace uso de estas clases nuevas para generar de manera dinámica todos los elementos que componen la historia y que se tendrían que haber creado manualmente utilizando Unity y Fungus en caso de no usar INVENTA.

Directorios en el proyecto con nuestras nuevas clases.

Para finalizar, cabe destacar la enorme cantidad de posibilidades que permite esta arquitectura. A medida que el proyecto de INVENTA vaya creciendo, se integrará con más funcionalidades complejas tanto de Fungus como de Unity.

 

Deja tu comentario