{"id":55,"date":"2017-11-21T13:02:32","date_gmt":"2017-11-21T13:02:32","guid":{"rendered":"http:\/\/inventa.fidesol.org\/?p=55"},"modified":"2017-11-21T14:22:23","modified_gmt":"2017-11-21T14:22:23","slug":"inventa-y-fungus","status":"publish","type":"post","link":"https:\/\/inventa.fidesol.org\/index.php\/2017\/11\/21\/inventa-y-fungus\/","title":{"rendered":"INVENTA y Fungus"},"content":{"rendered":"<p style=\"text-align: justify\"><img loading=\"lazy\" class=\"alignnone wp-image-58\" src=\"http:\/\/inventa.fidesol.org\/wp-content\/uploads\/2017\/11\/funguslogo.png\" alt=\"\" width=\"414\" height=\"207\" \/><\/p>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\"><a href=\"http:\/\/fungusgames.com\/\">Fungus<\/a> 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\u00e1 mantenido principalmente por <a href=\"https:\/\/snozbot.itch.io\/\">Snozbot<\/a>, un estudio independiente de desarrollo de videojuegos de Irlanda. Se puede obtener a trav\u00e9s de la Asset Store (la plataforma de compra y descarga de complementos y contenido adicional de Unity), adem\u00e1s de que el c\u00f3digo fuente est\u00e1 disponible p\u00fablicamente en <a href=\"https:\/\/github.com\/snozbot\/fungus\">GitHub<\/a>.<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">Fungus a\u00f1ade a Unity diversas herramientas visuales que se integran en el editor y que pueden ser utilizadas para crear cuentos de manera gr\u00e1fica. Pero adem\u00e1s a\u00f1ade un conjunto de scripts para poder utilizarlos extendiendo su funcionalidad mediante c\u00f3digo.<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">Entre las principales caracter\u00edsticas de Fungus est\u00e1n la divisi\u00f3n 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\u00f1adir personajes, generar animaciones y acciones de interacci\u00f3n sobre estos personajes, etc.<\/span><\/p>\n<h2 style=\"text-align: justify\"><span style=\"font-weight: 400\">Como funciona<\/span><\/h2>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">Una vez instalado Fungus dentro de Unity, tenemos dos grandes aportes que mejoran y facilitan la creaci\u00f3n de cuentos: el \u201cFlow Chart\u201d y un conjunto de clases y scripts que representan una historia o cuento.<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">\u201cFlow Chart\u201d es una herramienta que se integra dentro de la interfaz gr\u00e1fica 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\u00f3n entre ellos o podemos visualizar y editar un bloque.<\/span><\/p>\n<figure id=\"attachment_56\" aria-describedby=\"caption-attachment-56\" style=\"width: 654px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" class=\"size-full wp-image-56\" src=\"http:\/\/inventa.fidesol.org\/wp-content\/uploads\/2017\/11\/1_example_flowchart.png\" alt=\"\" width=\"654\" height=\"444\" \/><figcaption id=\"caption-attachment-56\" class=\"wp-caption-text\">Ejemplo de FlowChart. Los bloques amarillos son escenas y los bloques naranjas con elementos de control del flujo.<\/figcaption><\/figure>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">Una escena es representada por un bloque amarillo en el FlowChart. En una escena, una c\u00e1mara mostrar\u00e1 un fondo de escena y podremos a\u00f1adir una serie de personajes previamente creados. Si pulsamos en ella, se abrir\u00e1 en el inspector de Unity una peque\u00f1a herramienta desde la que podemos a\u00f1adir multitud de elementos a la escena: movimiento de personajes; apariciones, desapariciones, zoom o agitaciones de elementos; cuadros de di\u00e1logo; audio; e incluso tus propios comportamientos utilizando el famoso lenguaje de scripting para videojuegos LUA.<\/span><\/p>\n<figure id=\"attachment_59\" aria-describedby=\"caption-attachment-59\" style=\"width: 417px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"wp-image-59 size-full\" src=\"http:\/\/inventa.fidesol.org\/wp-content\/uploads\/2017\/11\/inspector.jpg\" alt=\"\" width=\"417\" height=\"879\" \/><figcaption id=\"caption-attachment-59\" class=\"wp-caption-text\">Inspector de un bloque de Fungus. Desde aqu\u00ed podemos ver y editar el flujo de acciones e interacciones que tendr\u00e1n lugar en la escena.<\/figcaption><\/figure>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">Por otro lado, tambi\u00e9n tenemos a nuestra disposici\u00f3n el conjunto de clases, escritas en el lenguaje de programaci\u00f3n C#, que utiliza Fungus internamente para su funcionamiento. Para editar un cuento relativamente b\u00e1sico, podemos obviar esta parte, pero si queremos comportamientos m\u00e1s complejos y personalizados s\u00ed se hace necesario hacer uso de estos elementos, lo que requiere conocimientos medios\u00a0(como m\u00ednimo) de programaci\u00f3n. Por ejemplo, podemos generar un script C# que haga uso de estas clases para crear nuevos personajes program\u00e1ticamente de manera din\u00e1mica durante la ejecuci\u00f3n de la historia.<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">Como vemos, a pesar de que Fungus facilita en gran medida la generaci\u00f3n de cuentos e historias din\u00e1micas, no es un proceso que est\u00e9 al alcance del p\u00fablico en general. Incluso su instalaci\u00f3n requiere conocimientos b\u00e1sicos de c\u00f3mo funciona Unity. Por lo tanto, si queremos trasladar estas tecnolog\u00edas a un p\u00fablico con limitados conocimientos tecnol\u00f3gicos, y hacer accesible la creaci\u00f3n de cuentos digitales, hemos de poner una \u201ccapa\u201d m\u00e1s a lo visto hasta ahora. Ah\u00ed es donde entra en juego INVENTA.<\/span><\/p>\n<h2 style=\"text-align: justify\">Como se integra con INVENTA<\/h2>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">Aqu\u00ed se explica c\u00f3mo vamos a utilizar Fungus para INVENTA. En otras entradas, se podr\u00e1 consultar con m\u00e1s detalle otros puntos sobre las motivaciones, desarrollo y caracter\u00edsticas de INVENTA.<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">Mediante una serie de acciones b\u00e1sicas, que se llevar\u00e1n a cabo con pocos clicks a trav\u00e9s de una interfaz muy sencilla e intuitiva, un usuario podr\u00e1 crear una historia completa a trav\u00e9s de INVENTA. Incluso los gr\u00e1ficos de los personajes y fondos de escena ser\u00e1n suministrados por la propia plataforma. El usuario \u00fanicamente ha de elegir que componentes quiere, y a\u00f1adir una serie de acciones de interacci\u00f3n a cada escena, como pueden ser di\u00e1logos, movimiento o zoom sobre personajes. Internamente, estos elementos y par\u00e1metros son \u201ctraducidos\u201d a JSON. Esta informaci\u00f3n en JSON ser\u00e1 la que utilice Fungus para reproducir la historia.<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">Pero para que esto sea posible, ser\u00e1 necesario desarrollar una serie de extensiones para Fungus que permitan la interpretaci\u00f3n de manera correcta de la informaci\u00f3n que se genera en JSON. Para ello, desarrollaremos un conjunto de nuevas clases en C#, algunas de las cuales extender\u00e1n a las propias de Fungus y para que hereden parte de su funcionalidad. Adem\u00e1s, desarrollaremos un \u201ctraductor\u201d, que hace uso de estas clases nuevas para generar de manera din\u00e1mica todos los elementos que componen la historia y que se tendr\u00edan que haber creado manualmente utilizando Unity y Fungus en caso de no usar INVENTA.<\/span><\/p>\n<figure id=\"attachment_57\" aria-describedby=\"caption-attachment-57\" style=\"width: 306px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"wp-image-57 size-full\" style=\"font-size: 1rem\" src=\"http:\/\/inventa.fidesol.org\/wp-content\/uploads\/2017\/11\/2.jpg\" alt=\"\" width=\"306\" height=\"257\" \/><figcaption id=\"caption-attachment-57\" class=\"wp-caption-text\">Directorios en el proyecto con nuestras nuevas clases.<\/figcaption><\/figure>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">Para finalizar, cabe destacar la enorme cantidad de posibilidades que permite esta arquitectura. A medida que el proyecto de INVENTA vaya creciendo, se integrar\u00e1 con m\u00e1s funcionalidades complejas tanto de Fungus como de Unity.<\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fungus es un plug-in que se acopla a Unity y proporciona una serie de herramientas&hellip;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[5],"_links":{"self":[{"href":"https:\/\/inventa.fidesol.org\/index.php\/wp-json\/wp\/v2\/posts\/55"}],"collection":[{"href":"https:\/\/inventa.fidesol.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/inventa.fidesol.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/inventa.fidesol.org\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/inventa.fidesol.org\/index.php\/wp-json\/wp\/v2\/comments?post=55"}],"version-history":[{"count":3,"href":"https:\/\/inventa.fidesol.org\/index.php\/wp-json\/wp\/v2\/posts\/55\/revisions"}],"predecessor-version":[{"id":63,"href":"https:\/\/inventa.fidesol.org\/index.php\/wp-json\/wp\/v2\/posts\/55\/revisions\/63"}],"wp:attachment":[{"href":"https:\/\/inventa.fidesol.org\/index.php\/wp-json\/wp\/v2\/media?parent=55"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/inventa.fidesol.org\/index.php\/wp-json\/wp\/v2\/categories?post=55"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/inventa.fidesol.org\/index.php\/wp-json\/wp\/v2\/tags?post=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}