Planeta Aventurero

Distribuir contenido
Planeta aventurero de CAAD (en pruebas)
Actualizado: hace 20 horas 45 mins

Aventura El Volcán

Mar, 29/11/2022 - 06:08

Amigos aventureros, ya tenemos disponible la aventura EL VOLCAN creada en 1995 y reparada en 2022 con especial mención a DrVanHalenFan sin su ayuda esta aventura no habría visto la luz. Esta en formato z80. Es una aventura conversacional con algo de fantasía y corte clásico. con varios Psi´s con los que interactuar, un laberinto complicado pero con ayuda, un jeroglífico no muy complicado. Varios personajes que no dudaran en eliminarte y determinadas acciones de riesgo que pueden acabar con tu vida.
Recomiendo jugar la aventura con audio ya que tiene varios efectos de sonido.
Amigos de la aventura deseo que disfrutéis con EL VOLCAN tanto como yo he disfrutado en su confección.

Pongo enlace a la ficha para facilitar su acceso y descarga.

http://www.caad.es/fichas/el-volcan.html

Categorías: Planeta

Nuevo Servidor Discord y Cuenta Twitter para el CAAD

Mar, 29/11/2022 - 06:08

Se está montando un servidor de Discord OFICIAL del CAAD para mejorar nuestra interacción y adaptarla a estos tiempos que corren.

Aquí tenéis el enlace
https://discord.gg/vz4a3fj3

Además, también se ha habilitado una cuenta OFICIAL de Twitter.
https://twitter.com/caad_es

Nuevos medios de contacto y comunicación para estos tiempos y así animar el mundo de la aventura.

Categorías: Planeta

Nueva jam Text Adventure Literacy en español. TALPES

Mar, 29/11/2022 - 06:08

[https://t.co/GFOuCeWgoN](https://t.co/GFOuCeWgoN)

A new TALP jam has been preannounced in twitter.
Build a text adventure for absolute beginners.
Implement in any system or language.
Price donations gratefully, DMs are open.

- Jade.

Categorías: Planeta

Furillo productions publica La Leyenda de los 3 Reyes TROLOLO

Mar, 29/11/2022 - 06:08

Los creadores del Tributo a Sinclair han desarrollado un nuevo juego para ZX spectrum 128k.
Por un lado podemos descargar el juego, por otro la jukebox con la banda sonora y por último el manual.

Historia:

Muy lejos, en un universo paralelo, hay un mundo idéntico a nuestro planeta, pero con todos sus continentes totalmente sumergidos.  Su nombre es Tierra2. La Federación Zork quiere conquistar ese universo, y la clave es invadir ese mundo.

La Federación Zork, con la ayuda del terrícola Koji Bakuto (echa un vistazo a nuestro anterior juego "Federation Z") ha conquistado completamente su propio universo, y ahora ha concentrado sus esfuerzos en expandirse a través del pacífico universo paralelo donde se encuentra Tierra2.

Koji, sintiéndose culpable, transmitió un S.O.S. a la Tierra. Por desgracia, el mensaje llegó a un universo distinto, justo a la poza donde Peter Parrish (echa un vistazo a nuestro anterior juego "La coza de la poza") estaba celebrando la liberación del dios Heyoka con los Raticulianos.

Parrish, su socia de negocios Madame Suellen y las tortugas son enviados al universo Tierra2 para acabar con esta locura. ¡No va a ser fácil!

Además, hay una extraña leyenda extendida por todas las ciudades estado de Tierra2. Se dice que hace mucho tiempo, una poderosa entidad de otro mundo dejó en un lugar secreto una cúpula sellada llamada “El sello de Enigmatik”. Y se cree que dentro de esa cúpula yace un dios serpiente, y que hay tres reyes Trololo que viven en tres míticas ciudades de oro que son capaces de romper ese sello y liberar al dios. ¿Será cierto todo esto?

¿Conseguirá Peter Parrish salvar de nuevo el mundo con la ayuda de los reyes Trololo y el dios serpiente?

Más información:
https://itch.io/email2game/1390619/1.57319458/ku7UZSh4zBMVLMbu7RD9ysu8vqW

Todo totalmente gratis. Si te gusta y te apetece puedes hacer una donación al descargar que nos ayudará a seguir haciendo juegos. Y lo que mas nos ayuda: déjanos comentarios acerca del juego en la zona de comentarios de esta página. ¡Gracias!

- Jade.

Categorías: Planeta

The Classic Adventurer Issue 9 ya disponible

Mar, 29/11/2022 - 06:08

Se ha publicado un nuevo número de la revista inglesa dedicada a las aventuras clásicas de texto. En este número, entre otros contenidos, reseña de la versión inglesa de Torreoscura y especial aventuras creadas con GAC.

The Classic Adventurer is a bookazine dedicated to the golden era of text adventures.
With a visually stunning design, it contains meticulously researched articles with some of the biggest games in the genre.

Disponible en su web:
http://classicadventurer.co.uk/

Categorías: Planeta

El módulo de idioma español: INFSP6

Mar, 29/11/2022 - 06:08

En esta entrada se revisa cómo utilizar el módulo de idioma español. Éste módulo se conoce como INFSP y la última versión disponible desde sus repositorios oficiales es la 0.9.

Para el tutorial, vamos a utilizar una distribución que introduce pequeñas modificaciones sobre la versión oficial; principalmente el cambio de la codificación de caracteres utilizada de ISO 8859-15 a UTF-8. Esta distribución del módulo se puede descargar desde el repositorio: https://github.com/jomali/i6-libs/tree/master/INFSP6

Siguiendo la estructura de directorios que creamos en la entrada anterior del tutorial, para utilizar el módulo simplemente debemos descargar los ficheros enlazados más arriba en nuestro directorio /src/libs/. Después, en el fichero con el código fuente rayuela21.inf, debemos indicar al compilador que la obra va a utilizar el español (incluyendo esta sentencia, prácticamente al inicio del fichero):

!% -Cu!% -D!% -S!% -s!% +language_name=Spanish

Y, para terminar, incluir la definición de gramática (en la sección 7 del código):

!!==============================================================================!!!!  7)  Gramática estándar y extendida!!!!------------------------------------------------------------------------------
!! Gramática española por defecto:Include "SpanishG.h";

INFSP introduce nuevas propiedades (name_f, name_fp, name_m, name_mp, gender, adjectives...) que podemos utilizar a la hora de definir los objetos del modelo de mundo para controlar con mayor precisión cómo son interpretados por el analizador de comandos. No es el objetivo de estos tutoriales profundizar en el proceso de diseño de arcos narrativos, simulaciones complejas o en el diseño de puzzles (hay otras guías que lo hacen), pero ya que vamos a modificar el código para utilizar las nuevas propiedades de INFSP, aprovechamos para hacer la interacción ligeramente más interesante introduciendo un segundo caramelo, así como la lógica necesaria para que el usuario les tenga que quitar el envoltorio antes de poder comérselos. Durante esta modificación hemos aprovechando también para dividir el código fuente en 2 nuevos ficheros, que nos ayudarán a tener el código estructurado al ir añadiendo contenidos:

  • rayuela21Classes.inf: Definición de clases y otros atributos.
  • rayuela21Objects.inf: Definición de objetos.

Como siempre, tanto el código fuente como el resultado de esta parte del tutorial están disponibles en:

Categorías: Planeta

El compilador y la librería Inform 6

Mar, 29/11/2022 - 06:08

Esta entrada muestra los pasos a seguir para generar un ejecutable con el sistema Inform 6. Tal y como vimos en la entrada anterior, necesitamos disponer de los dos componentes que constituyen el sistema para escribir obras en I6: compilador y librería software.

> Compilador

El compilador será el encargado de generar ejecutables de la obra a partir de los ficheros de código fuente que escribamos. La última versión del compilador es la 6.34, publicada el 25 de mayo de 2020. Se puede descargar gratuitamente desde su repositorio oficial. Para utilizarla es necesario disponer de un fichero ejecutable, que se puede descargar desde el propio repositorio oficial para usuarios Windows o bien desde el if-archive para usuarios Mac.

En sistemas Linux será necesario generar el ejecutable nosotros mismos a partir del código fuente. Para hacerlo basta con descargar todo el código del repositorio y disponer de un compilador de lenguaje C, como cc. Una vez descargado el código de la versión 6.34 en un directorio local, abrimos una terminal sobre este directorio y ejecutamos:

$ cc -o inform *.c

Para asegurarnos que estamos compilando la versión adecuada del compilador, lo más sencillo probablemente sea utilizar la herramienta de control de versiones git (también gratuita). De esta manera, para descargar el repositorio, colocarnos en la versión 6.34 y compilar el código bastaría con la siguiente secuencia de comandos:

$ git clone https://github.com/DavidKinder/Inform6.git
$ cd Inform6
$ git checkout v6.34
$ cc -o inform *.c

> Librería software

La librería software es la encargada de procesar la entrada de texto del usuario, registrar el estado del modelo de mundo en que se desarrolla la obra y dar respuestas por defecto para los diferentes comandos interpretados por el sistema. Por razones de compatibilidad con los módulos de idioma en español, se recomienda utilizar la versión 6/11 de la librería, ya sea en su distribución oficial, o en la distribución de Ricardo Pérez que incluye algunas correcciones de bugs menores.

> Esqueleto básico

Una vez disponemos de los 2 requisitos para crear obras en Inform 6, podemos empezar a escribir nuestra ficción interactiva. En el repositorio del tutorial hay un esqueleto básico, con definiciones para una única localidad "Sala de espera" y un único objeto comestible "Caramelo".

Sin necesidad de implementar ningún otro comportamiento, al compilar la obra podemos comprobar cómo la librería Inform genera por nosotros toda la infraestructura para comprender un amplio conjunto de comandos (de momento en inglés), mensajes por defecto (en inglés) para estas acciones y reglas básicas que rigen el modelo de mundo (la sala de espera es una localidad que puede contener objetos; el usuario controla su propio objeto jugador que se encuentra dentro de la localidad; el caramelo se puede pasar al inventario del jugador, devolver de nuevo a la localidad o comer, etc).

Para generar el ejecutable basta con especificar al compilador el directorio en que se encuentran las librerías, y el fichero de código fuente de la obra:

$ inform +include_path=libs -G rayuela21.inf rayuela21.ulx

La opción -G indica al compilador que debe generar el ejecutable para la máquina virtual Glulx.

Para simplificar el proceso tanto en Linux como en Windows, he escrito un pequeño script que lanza la compilación y que, además, utiliza una la herramienta game2js, con la que convertimos el ejecutable Glulx a un fichero JavaScript, de manera que pueda ser ejecutado con el intérprete web Quixe.

Dejo a continuación enlaces al (poco) código desarrollado como parte de esta primera parte del tutorial, junto con los ficheros con el intérprete Quixe que permite ejecutar la obra online:

Próximamente veremos cómo podemos utilizar los módulos de idioma para traducir al español tanto los comandos que puede introducir el usuario como los mensajes por defecto de la librería.

Categorías: Planeta

El sistema de autoría Inform

Mar, 29/11/2022 - 06:08

Inform es una herramienta software ideada para facilitar la creación de obras de ficción interactiva [1] con analizador de comandos.

Existe un amplio ecosistema de sistemas de autoría similares, cada uno con sus características, fortalezas y debilidades propias, de tal forma que los autores tenemos una gran libertad para escoger aquel que mejor se adapte a nuestras propias necesidades. Dicho lo cuál, Inform presenta ciertas particularidades que lo convierten en una de las opciones más populares dentro de la comunidad:

> profundidad de la simulación

La infraestructura de Inform permite crear modelos de mundo de gran profundidad y complejidad. El sistema soporta de partida relaciones entre localidades, objetos estáticos y movibles, soportes, contenedores, consumibles, reglas para gestionar luz y oscuridad, dar órdenes a otros personajes… Unas funcionalidades que, además, pueden ser extendidas y altamente personalizadas por el autor a través de implementaciones propias o de la utilización de módulos creados por terceros.

De entre el resto de sistemas de autoría disponibles, quizá existe sólo uno cuya librería básica ofrece una infraestructura igual o más compleja, el conocido como TADS. Si bien en la práctica ambos sistemas pueden considerarse similares [2] —y, a diferencia de éste último, con Inform es posible crear obras en español—.

> documentación y materiales de apoyo

En comparación con otros sistemas menos extendidos, existe gran cantidad de libros, tutoriales y código fuente de ejemplo para suavizar la inevitable curva de aprendizaje. Cuenta, de hecho, con una comunidad de usuarios numerosa y activa desde la que surge un gran número de obras, extensiones y herramientas nuevas, y que da soporte a través de los foros dedicados al sistema a las dos versiones que siguen siendo utilizadas simultáneamente hoy en día: Inform 6 e Inform 7. Algunos enlaces de utilidad:

> soporte de idioma español

En cualquiera de sus dos versiones, Inform permite por defecto el desarrollo de ficciones interactivas en inglés. No obstante, y como se ha apuntado más arriba, existen traducciones de sus módulos de idioma para crear obras en otras lenguas como el español [3].

> multiplataforma

El compilador Inform genera ejecutables para las máquinas virtuales Z-machine y Glulx. Ambas cuentan con implementaciones en multitud de plataformas (desde las principales plataformas de escritorio: Windows, Linux, Mac; multitud de plataformas móviles; implementaciones JavaScript que corren en navegador; hasta un amplio abanico de plataformas retro). Con lo que cumple aquella máxima: escribe una vez, ejecuta en cualquier parte.

> multimedia

Es posible enrriquecer la experiencia de la obra con la utilización de recursos audiovisuales y la interacción a través de hipervínculos.

> una herramienta en dos sabores

Como se ha introducido ya, actualmente coexisten dos versiones diferenciadas del sistema:

Inform 6: Disponible desde 1996, la versión 6 de Inform está integrada por dos componentes principales: un compilador que genera ficheros ejecutables a partir de código fuente escrito en su propio lenguaje de programación de propósito específico —orientado a objetos e inspirado en el lenguaje C [4]—; y una extensa librería software encargada de automatizar las tareas de procesar la entrada de texto del usuario y de registrar el estado del modelo de mundo en que se desarrolla la obra.

Inform 7: Con la última iteración del sistema publicada en 2006, su versión 7, se lleva a cabo una reinterpretación completa del lenguaje de programación. Este nuevo lenguaje desecha el paradigma estructurado y orientado a objetos de la versión anterior y pasa a adoptar uno basado en reglas que trata de imitar la escritura en lenguaje natural (en inglés). Inform 7 introduce también un entorno integrado de desarrollo propio, con herramientas especializadas en las tareas de prueba y depuración de las obras, así como una traducción directa de la librería Inform 6 al nuevo lenguaje.

En próximas entradas analizaremos cómo crear obras en Inform 6. Pese a no tratarse de la última versión del sistema y carecer del IDE propio y de las nuevas herramientas de depuración, algunos autores aún seguimos decantándonos por utilizar I6 sobre I7. Una elección que está motivada principalmente por una preferencia por el paradigma orientado a objetos sobre el paradigma orientado a reglas y porque, en definitiva, las obras creadas con ambos sistemas pueden compartir idénticas características y funcionalidades.


[1] Martín, J.F. (2019). La ficción interactiva [Online]. Disponible en: https://interlecturas.blogspot.com/2019/02/la-ficcion-interactiva.html (Consultado: 2021/04/13).[2] Eve, E. (2009). A Comparison of TADS 3 and Inform 7 [Online]. Disponible en: http://www.brasslantern.org/writers/iftheory/tads3andi7.html (Consultado: 2021/04/13).[3] Sarganar (2017). Spanish Library for Inform 6 [Online]. Disponible en: https://github.com/sarganar/infsp6. (Consultado: 2021/04/13).[4] Nelson, G. (2018). Inform: Past, present, future [Online]. Disponible en: http://www.emshort.com/ifmu/inform.html. (Consultado: 2021/04/13).
Categorías: Planeta

Corrigiendo el bug de HABLA en DAAD para Spectrum.

Mar, 29/11/2022 - 06:08

El mundo de las aventuras conversacionales se halla dividido desde los felices 80 en dos hemisferios que se dan la espalda el uno al otro: en uno lo común es manejar la comunicación con los «personajes seudo-inteligentes» mediante el comando DECIR seguido de un entrecomillado con la frase exacta que le dices al personaje (DECIR a PERSONAJE «bla-bla-bla»), en el otro el protocolo consiste en usar la fórmula HABLAR con PERSONAJE, pudiendo refinarse con la variante HABLAR con PERSONAJE sobre TEMA para afinar más en el asunto de la conversación en sí. El primero es común en los sistemas basados en condactos, como en la saga de herramientas de Gilsoft (Quill, PAWS, DAAD), especialmente optimizadas para funcionar así, mientras que el segundo se hizo habitual en las obras de Infocom, dada su mejor adaptación a los sistemas de programación orientada a objetos y es por tanto el que se usa comúnmente hoy en día en lenguajes como TADS, Inform, etc…
Sobre las posibilidades de evolución y expansión del segundo se habla largo y tendido en el capítulo dedicado a los personajes del libro Creating Interactive Fiction with Inform 7 de Aaron A. Reed. A su vez se puede leer una comparativa con los pros y contras de uno y otro en este reciente post del blog de Ricardo Oyon.

Sistemas de conversación en el libro de Aaron A. Reed.

Lo cierto es que no hay ninguna razóin técnica para circunscribir exclusivamente ambas tradiciones a un tipo de sistema de desarrollo u otro. Es perfectamente posible «cambiarlas de entorno» a gusto del autor. Así, han sido muchos los casos de aventuras hechas con sistemas de condactos que se decantan por la fórmula de HABLAR con PERSONAJE, pero en el caso de las plataformas de 8 bits se han encontrado sistemáticamente con un pequeño escollo: la incompatibilidad del uso de la forma imperativa de verbo HABLAR («HABLA») con los sistemas existentes de asociar los verbos acabados en LO, LA, LOS, LAS con el objeto de la orden inmediatamente anterior.

Estos sitemas, que permiten el uso de secuencias de órdenes como EXAMINA LIBRO y COGELO no generan ningún conflicto en sus equivalentes ingleses basados en los pronombred IT o THEM (EXAMINE BOOK and TAKE IT) pero en los sistemas españoles de la época clásica que lo implementaban (salvo error u omisión: PAWS y DAAD) tenían un efecto secundario inesperado al entrar en juego la orden HABLA. Si la secuencia de comandos del jugador era algo parecido a EXAMINA LIBRO y HABLA con PERSONAJE, la terminación en LA del imperativo HABLA activaría automáticamente el sistema de tal modo que el parser entendería que en la segunda órden el jugador está intentando hablar con el libro. Este «bug» es ya un «viejo conocido» entre los usuarios de PAWS, pudiendo rastrearse menciones al mismo en los manuales de las primeras aventuras del Doctor Van Halen de Josep Coletas allá por 2004, aunque no hay que descartar que las haya anteriores.

El bug de HABLA en el manual del primer Dr. VanHalen.

Es un hecho inapelable que el sistema funciona codificado «a fuego» en las entrañas del parser de PAWS e igualmente se halla en el interior del código de DAAD que maneja el funcionamiento del condacto PARSE. En principio eso significa que no hay manera de controlar este comportamiento por el autor de la aventura salvo acciones drásticas como usar condactos para eliminar todo el sistema de raíz, una solución claramente insatisfactoria porque supone prescindir totalmente de una característica del sistema simplemente porque falla en un caso concreto. Lo cierto es que el único modo de soslayar el problema pasa inequívocamente por hacer un hack al intérprete.

Vamos a proponer un modo de hacerlo en el caso del intérprete de DAAD para Spectrum. En otros intérpretes de DAAD o en el del PAWS podría aplicarse seguramente un metodo parecido salvando las diferencias de direcciones concretas de memoria en cada caso, pero no tengo tiempo material de ponerme a investigarlo
Para «destripar» el interior del intérprete de Speccy vale cualquier desensamblador, pero por sus facilidades para hacer maniobras de ingeniería inversa he usado SkoolKit, un conjunto de scripts de Python especializado en «meter mano» a software de Spectrum y ponérselo facilito a quienes quieran analizar códigos fuente. A su vez aprovechamos que en DAAD la parte de código que queremos analizar se halla «aislada» en las rutinas que se ejecuten al invocarse el condacto PARSE (en el proceso 1 siguiendo la plantilla por defecto de DAAD) para añadir un pequeño proceso de «debug» que permita echar un vistazo al estado de las banderas justo antes y después de éste.
En las imágenes se puede ver que llamamos a un proceso 12 que nos imprime el estado de unos cuantos flags estratégicos (el grupo 33-36 y 43-47, ver el manual para sus usos concretos). Mediante este truco pudimos determinar que PARSE, al encontrarse con un verbo acabado en LO, LA, LOS, LAS adjudica al flag 34 (nombre) el valor del nobre de la acción anterior y a su vez coloca en 44 (NOUN2) el valor que hubiera correspondido al nombre de la entrada del jugador si no se hubiera detectado la terminación. Esto último es útil para secuencias de órdenes del tipo: EXAMINA LIBRO y DASELO a PERSONAJE, donde en la segunda orden el nombre es el nombre de la primera y el que hubiera sido el nombre original pasa a ser el segundo nombre o NOUN2. Si hubiera habido un NOUN2 en el input original este pasa a ser ignorado (tomen nota del detallito los autores de intérpretes alternativos ).

A su vez con la opción de monitorear la memoria del programa durante la ejecución disponible en la práctica totalidad de emuladores de Spectrum es fácil determinar las posiciones exactas de memoria que ocupan las banderas o flags del DAAD. En el caso del Spectrum los 256 flags están entre 32540 y 32795. Sabiendo ésto es fácil deducir que los flags de verbo (33), NOUN (34) y NOUN2 (44) están respectivamente en 32573, 32574 y 32584.

Entra en acción SkoolKit. Podemos rebuscar entre las rutinas del código desensamblado instrucciones que afecten a esas direcciones de memoria o, en su defecto, al valor indicado por el registro IX del procesador más el número de flag, ya que en DAAD de Spectrum, IX almacena la dirección de inicio de estos. Ahora ya es cuestión de ensayo y error, paciencia, y algo de suerte para encontrar algo que resulte significativo para nuestro propósito. Tirando del hilo pronto aparece esta rútina que vemos en la imagen, con comentarios añadidos por mí aprovechando las facilidades de SkoolKit:

SkoolKit destripando a DAAD.

En ella podemos ver que en cierto momento de la ejecución, el parser mira en la zona de memoria donde ha almacenado el verbo del input del jugador y examina desde su final hacia atras. Si los caracteres que encuentra allí se corresponden con LO, LA LOS o LAS, pone una marca en el registro A, iza el flag Z del procesador, y el programa se bifurca hacia otra parte.

Monitoreando, es posible determinar que en ese preciso momento el flag 33 (verbo) ya está establecido, no así los referentes a NOUN, NOUN2, adjetivos y adverbio que continúan en 255 (255 es el valor al que se resetean en cada turno o sentencia lógica). Es fácil deducir que la asignación de estos se hará de una manera si no se ha detectado terminación y de otra en caso contrario. Es… ¡un buen sitio donde intervenir!

Podemos sustituir las instrucciones de salto marcadas en la imagen por una llamada a una pequeña rutina creada expresamente para la ocasión que colocaríamos en algún lugar libre de la memoria. Normalmente éste sería alguna posición indeterminada entre el final de la base de datos del juego y el comienzo de la de los gráficos, que es la zona de memoria que DAAD deja libre en Spectrum, pero eso significaría que tendría que ser una ubicación distinta en cada juego, ya que nunca sabremos a priori donde empezará y terminará ese espacio. Como la rutina va a ser en realidad pequeñita podemos buscarle un sitio estable razonablemente seguro que puede ser un puñado de bytes por debajo del comienzo del intérprete, concretamente la dirección 24560. La única precaución a tener en cuenta en este caso es que el cargador de BASIC del juego ponga la habitual instrucción CLEAR un byte más abajo, es decir 24559 en lugar del 24575 original.
Así que, como decía, sustituimos esas dos instrucciones del código DAAD original por un JP 24560. Las dos instrucciones juntas ocupaban 5 bytes y nuestro JUMP sólo 3 así que los 2 bytes restantes los ponemos a 0. La rutina a la que llamamos hará algo como esto:

ORG 24560 JP NZ, 27449 LD A, (32573) CP 31 JP Z, 27449 LD A, 6 JP 27677

Veámoslo detenidamente. Hemos tomado nota como si entráramos en el molino del Quijote, o sea, cuidadosamente :-p, del estado de los flags del procesador en el momento de llegar al punto en que nos desviamos del código original. En este se levanta el flag Z si se ha encontrado la terminación verbal (y se carga el registro A con 6). Si ése es el caso, el código se desvía a 27677 y si no (no hay terminación) el desarrollo normal del programa sigue por 27449.

En nuestro hack primero mandamos la ejecución a 27449 si no está puesto el flag Z, o sea, le decimos que continue con normalidad porque no hay nada de LAS ni LOS.

A continuación cargamos en A el valor de 32573, donde sabemos que está el valor del verbo.

Comparamos con 31, que es el valor por defecto en la plantilla de DAAD para el verbo HABLAR. Ésto, por supuesto, será cierto en una mayoría de los casos, pero también podría darse perfectamente el caso de que en un juego concreto el verbo HABLAR tenga cualquier otro valor en la sección de vocabulario (/VOC) de su código fuente. Para esta situación bastará con que el cargador BASIC de la aventura haga, tras cargar el intérprete, un POKE 24567, valor (siendo valor el número que HABLAR tenga en VOC).

Si el verbo era, efectivamente HABLAR (31 o el valor que fuera en su caso) podemos afirmar por eliminación y con un 100% de seguridad que se ha detectado un LA y que el verbo era HABLAR, por lo que sabemos a ciencia cierta que, de seguir el flujo normal del programa, se produciría el cambio de NOUNs. Por eso le decimos que de estar izado el flag Z se vaya a 27449, donde procesará la entrada del jugador como si la terminación NO se hubiera detectado.

Y en caso contrario podemos asumir también con seguridad que se ha encontrado la terminación, pero el verbo NO era HABLAR, así que, tras cargar A con 6 como hubiera hecho en la rutina original, le decimos que vaya a 27677, donde procederá a hacer los cambios de NOUNs igual que hubiera hecho normalmente.

Tenéis el intérprete de DAAD de Spectrum con todas estas modificaciones disponible en esta DESCARGA.

En el archivo ZIP enlazado hay:

-Un binario con el intérprete modificado tal cual, sin ningún tipo de cabecera.
-Una versión alternativa del disco nº 33 de la descarga original del DAAD, el que contenía el intérprete de Spectrum en un disco de Spectrum +3, en la que el intérprete original y el cargdor BASIC han sido sustituidos por la versión hackeada.
-Una imagen de cinta de Spectrum TAP con un pequeño ejemplo.
-Un fichero de texto con las indicaciones básicas para su uso.

El primer juego de DAAD español para Spectrum en incluir la modificación es Torreoscura, de Bieno Marti, cuya versión de Spectrum actualizada ya está disponible en su web habitual: AQUÍ. Podéis probar nada más empezar con PULSA TIMBRE y HABLA con RECEPCIONISTA, algo que no funcionaba en la primera versión salvo que utilizaras el infinitivo HABLAR.

Torreoscura ya entiende HABLA en imperativo.

Y por lo que he podido probar hasta el momento, el hack es efectivo para órdenes tanto del tipo HABLA con PERSONAJE como de la modalidad HABLA con PERSONAJE sobre TEMA. Sabiendo cómo funciona el proceso en Spectrum sería posible buscar el modo de hacer lo propio en PAWS y en el resto de intérpretes de DAAD (pero, al contrario que en el clásico de los Rolling, el tiempo, eer… no está de mi lado ).

Categorías: Planeta

Más ficción interactiva para Android

Mar, 29/11/2022 - 06:08

Con el ánimo de hacer más visible y accesible a todos mi ficción interactiva, he portado a fi.js varias de mis aventuras. Al ser el resultado básicamente una pequeña web, las he podido subir (gracías a Cordova), a la tienda de Google para dispositivos móviles.

Baltasar en Google Play


Marco Polo vuelve de su viaje al lejano Oriente, pero el retorno a Venecia será mucho menos celebrado de lo que el espera.

La última de todas ellas ha sido Marco Polo, que en realidad también se puede jugar cómodamente on-line.

Categorías: Planeta

Torreoscura

Mar, 29/11/2022 - 06:08

De la mano de Bieno Marti, cuyas anteriores incursiones en el terreno de la aventura conversacional (Mansión Kali I y II, El Prisionero…) son sobradamente conocidas, nos llega Torreoscura. Ai igual que en anteriores ocasiones el juego ha sido desarrollado simultaneamente en Quill para Commodore 64 por el propio Bieno, para Amstrad CPC por Miguel Ángel Silva (MiguelSky) y para ZX Spectrum por vuestro humilde y seguro servidor. Y a diferencia de ellas, esta vez el port para Spectrum no se ha hecho usando la herramienta InPAWS (para producir un juego PAWS) sino que se ha re-escrito usando DAAD, lo que ha propiciado que además de Spectrum hayan salido versiones para PC MS-DOS (CGA), Amstrad PCW y MSX. Como todavía no nos parecía suficiente, una versión adicional para ORIC ha sido realizada gracias a Chema Enguita.

La aventura, que tiene ese toque de ambientación a caballo entre el misterio y el gótico que encantará a los seguidores de las obras de Bieno, comienza con un protagonista que, siguiendo la invitación de un antiguo amigo cuyo contacto perdió hace tiempo, realiza una escapada de vacaciones a un pueblo recóndito. Nada más presentarse allí se encuentra con que su amigo no aparece por ninguna parte… y, por supuesto, empiezan a pasar cosas raras…

Rompiendo también con la tradición de las aventuras anteriores de Bieno, en esta ocasión las ocasionales pantallas gráficas hechas con bloques PETSCII han pasado a ser gráficos vectoriales realizados con el Illustrator, la herramienta de Gilsoft hecha expresamente para añadir gráficos a las aventuras realizadas con Quill (que a su vez sentaría el modelo para las herramientas gráficas de PAWS y DAAD). Como suelen remarcar todos los que han usado alguna vez alguna de las encarnaciones de este sistema de gráficos de la familia Gilsoft, su interfaz de usuario es más fea que pegar a mamá, pero en el fondo hacerse con ella no requiere más esfuerzo que ser consciente de que no estás dibujando a mano alzada como con cualquier programa de dibujo común, sino que estás introduciendo un listado rigurosamente secuencial de órdenes gráficas, lo que hace que todo tenga sentido (aunque no lo haga más bonito ). Hay que decir que el uso que ha hecho Bieno Marti de un sistema que, mayormente, se limita a una sucesión de líneas y rellenos con tramas, ha sido bastante ingenioso y sabiamente aprovechado.

Como curiosidad os enseñamos alguno de los primeros ensayos gráficos desechados. El primero es la primera aproximación al gráfico de la habitación del hostal. El segundo es la recepción del mismo hostal en una primera interpretación hecha por Igor Errazking, una maravillosa locura inspirada en la estética de las películas de expresionismo alemán en la que no se pudo continuar por falta de tiempo del colaborador.


Finalmente Bieno se encargó en exclusiva de la realización de los gráficos en C64, lo que llevó a una de las partes más laboriosas de todo el proceso de creación, que fue portar los susodichos gráficos a los otros sistemas. A diferencia de lo que sucedería posteriormente con DAAD, en Quill no hay (o no se llegó a lanzar) ninguna herramienta de conversión entre los gráficos de un sistema y otros, por lo que hubo que realizar un montón de cosas «a mano». Para Spectrum había que convertir los gráficos de Quill de C64 a gráficos de DAAD de Spectrum teniendo en cuenta que la pantalla de C64 tiene una resolución horizontal notablemente superior (64 bytes mayor, el equivalente a 8 caracteres). Entre la disyuntiva de intentar hacer una versión reescalada para ZX o cercenar parte de la imagen en cada gráfico lo último fue lo más viable y acertado. Algunas pantallas se prestaban bastanta bien a prescindir de las partes laterales, o a hacer un «corte» en alguna parte interior donde quedase hueco. Con ello en mente, el proceso consistió en tomar nota manualmente de cada órden gráfica de C64, pasar sus coordenadas a las equivalentes de la pantalla de Spectrum (con un oportuno script de Python) e introducir manualmente la órden con su código y sus nuevas coordenadas en el editor de gráficos de DAAD para Speccy. Nada difícil, aunque desde luego aburrido de narices. Todo fue cuestión de dedicarle sin prisa ni ansia un rato cada día poniendo una buena música de fondo y sin obsesionarse por acabar

Con la intención de evitar que la conversión de los gráficos de C64 a Amstrad CPC fuera tan tediosa como en Spectrum, pensamos en buscar un modo de automatizar el proceso. Aparentemente sería más sencillo dado que el tamaño y resolución de sus respectivas pantallas es el mismo así que no habría que preocuparse por andar buscando areas «recortables» lo que haría la conversión algo más directa. Las facilidades terminaban ahí, claro, ya que aunque las pantallas tengan igual tamaño, el hardware gráfico deñ C64 y del CPC se parecen como un huevo a una castaña. Aunque el formato en que están internamente codificadas las órdenes gráficas en uno y otro tiene puntos en común, también tiene otros aspectos en que es sustancialmente distinto (ejes de coordenadas que van en distinta dirección, entramados cuyo manejo no tiene nada que ver en un caso y en otro…) así que finalmente hubo que:

-Hacer ingeniería inversa del formato de gráficos de C64.
-Hacer ingeniería inversas del de CPC.
-Crear un script de Python que convirtiese del uno al otro.

Como el destino tenía escrito en letras de fuego que nada relacionado con los gráficos en Torreoscura tenía que ser sencillo y directo pronto nos encontramos con un dilema adicional. Trabajábamos con las ultimísimas versiones conservadas tanto de Quill como de Illustrator para Amstrad CPC, pero por más que rebuscábamos en todas las opciones disponibles, no había ninguna aparente manera de conseguir en éste sacar los gráficos a pantalla partida como en el caso de C64. El único modo era a pantalla completa, es decir, en cada localidad sale el gráfico ocupando toda la pantalla hasta que pulsas una tecla, se borra, y ya entonces sale el texto con la descripción del lugar. Y sin embargo, como MiguelSky hizo notar rápidamente, hay evidencia histórica de una buena cantidad de aventuras hechas con Quill para CPC que sí tienen los gráficos a pantalla partida (una ventana gráfica en la parte superior de la pantalla para el dibujo y otra en la inferior para los textos), como, por poner tan sólo un ejemplo entre muchos, el Murder Off Miami de Delta 4 (una de mis obras clásicas favoritas por basarse en un antecedente de la FI de los años 30 del siglo pasado, pero esa sí que es otra historia…). En el Illustrator de C64 los gráficos a pantalla partida venían de serie en su última versión, en Spectrum se conseguían mediante utilidades hechas por terceros (The Patch), pero no había rastro del método utilizado en los juegos de CPC…

Así que tuvimos que crear el nuestro propio. Siguiendo la pista sugerida por MiguelSky tomamos nota de las llamadas a rutinas del sistema que manejan ventanas en CPC en el desemsamblado del intérprete de Quill e, investigando, localizar las que nos interesaba desviar a un hueco en la memoria libre donde pusimos llamadas a otras que a su vez dividían la pantalla del modo que queríamos para que la versión de CPC tuviese sus gráficos a pantalla partida igual que las demás. Una «ñapa» casera muy poco elegante pero que pasa totalmente desapercibida para el jugador, quien simplemente verá que en CPC los gráficos salen igual que en el resto de versiones sin preocuparse de los malabarismos que tuvimos que hacer para lograrlo.

Como no podía ser de otro modo, una vez que el trabajo ya estaba hecho se descubrió que, por existir, ya existía la herramienta que buscábamos. Las últimas ediciones de Illustrator para CPC incluían una utilidad llamada The Splitter de la que lo único que se conserva en este momento son unas fotos de las instrucciones y que, como su nombre sugería, servía para partir la pantalla de los juegos de Quill. Significativamente el programa está ausente en todas las versiones preservadas de Illustrator conocidas en la red hasta la fecha. En el momento de escribir estas líneas no se ha perdido la esperanza de que Tim Gilberts lo encuentre entre sus discos viejos para que, si hay suerte, los próximos en hacer una aventura en Quill para CPC no tengan que hacérsela ellos mismos como nosotros

Bastante menos complicado fue conseguir gráficos para la versión PCW, ya que estos no son más que un copia-pega de pantallazos de la versión de Commodore convertidos al formato de Degas PI1 usado habitualmente en Aventuras AD para pasarlos por la herramienta DG en su versión de MS-DOS. Como un paso intermedio del proceso era tener los gráficos para PC CGA, pues aprovechando que el Pisuerga pasa por Valladolid, también salió una bonita versión para PC MS-DOS

La pantalla de carga es original de R. Internacional excepto en las versiones de Spectrum y MSX, en las que las utilidades habituales de conversión automática de formatos daban unos resultados bastante pobres, por lo que optamos por sustituir el motivo de «atardecer» original por un nuevo gráfico «nocturno», más apropiado para sus paletas de colores, creado desde cero.

La versión de C64 incluye sendas piezas musicales creadas por Barón Ashler (de Kabuto Factory), una para oir durante la carga del juego en cinta y otra que suena de fondo durante la aventura. En Spectrum se usó la melodía de carga durante las pantallas de presentación de cada una de las 2 partes del juego y la música de fondo durante el resto de la aventura, como en el original. Ensamblar la música con el juego de Quill en C64 fue obra de Karmic, mientras que para Speccy (sólo 128k, como es habitual) usamos el motor musical CHIPnSFX de CNGSoft, al que se llama desde el gestor de interrupciones interno del propio DAAD, una combinación que ha dado muy buenos resultados. Que las llamadas al motor musical se hagan desde el propio DAAD además ha facilitado enormemente que, en Spectrum, desde órdenes del juego la música se pueda parar o reanudar al gusto del usuario, evitando el terrible efecto de precedentes como la versión 128k de The Neverending Story, donde la misma melodía machacona se reproducía en un bucle interminable sin posibilidad de parar salvo quitando el audio del ordenador/emulador. Torreoscura no será ni mucho menos la primera aventura conversacional con música de fondo, pero sí la primera hecha con DAAD en incluirla en su versión Spectrum

Torreoscura he dejado además como efecto colateral la creación de una nueva herramienta para DAAD pensada para facilitar la creación de versiones de aventuras para MSX en cinta (hasta ahora, desde la recuperación del DAAD en 2014, sólo el formato disquette estaba cubierto en MSX). ¿Recordáis ese párrafo del manual del DAAD que dice textualmente «there is no simple way to save files to cassette on MSX»? Bien, ya lo hay, se llama DAAD2MSXCas y es un script de Python pensado para cubrir ese «there is no simple way» ensamblando una imagen de cinta de MSX (fichero .cas) a partir de los ficheros DDB y MDG correspondientes.
Debido al complejo mapa interno de memoria de los juegos de DAAD en MSX (usando 64 Kb como RAM) es bastante complicado preparar un cargador de cinta que use las rutinas de la ROM. DAAD2MSXCas usa una modificación del cargador personalizado de Aventuras AD (sacado de la versión MSX en cinta de Los Templos Sagrados) que se automodifica para adaptarse a la carga de los ficheros de la aventura que estés haciendo. Los pythoneros pueden encontarlo en:

https://pypi.org/project/daad2msxcas/

Y hasta aquí las aburridas batallitas técnicas del «cómo se hizo». Todos los implicados a un nivel u otro (no dejéis de ver la amplia sección de créditos) esperamos que el juego final os guste y os haga pasarlo bien. Podéis encontrarlo en cualquiera de las siguientes páginas web:

Zona FI

Commodore Plus

ESp Soft

Categorías: Planeta

"Aplicación No Traducida (ANT)" de Paranoia Games y Gorypixels [Rayuela de Arena 2020]

Mar, 29/11/2022 - 06:08

"Aplicación No Traducida (ANT)" (Paranoia Games y Gorypixels, 2020) es un juego de resolución de puzzles basado en traducir un conjunto de caracteres, en una línea no muy distinta a la mecánica de traducción sobre la que está construido "Heaven's Vault" (Inkle, 2019): partes de un conjunto de símbolos junto a su traducción —todo, nada, cielo, infierno, Dios...—, de manera que es fácil identificar similitudes iniciales entre símbolo y significado. Tras esos símbolos traducidos, se introducen otros nuevos sin traducir, pero cuya grafía guarda relaciones con los símbolos anteriores, de forma que el usuario puede inferir su significado a partir de la información de partida.

La implementación del juego es muy correcta. Cuenta una interfaz clara e intuitiva y un diseño de los caracteres que debemos traducir que se ajusta a reglas lógicas más o menos fáciles de discernir. Sin embargo, su componente narrativo, que es el aspecto que más me interesa de la Jam, queda relegado a un segundo plano y se ofrece a través de una breve introducción de texto, en la que se dan las instrucciones de cuál es nuestro cometido, pero en el que apenas se arroja contexto ni motivaciones claras. Supongo que cuente, además, con algún tipo de conclusión ofrecida del mismo modo, aunque no he llegado a experimentarla.

Probablemente guste a cualquiera que disfrute resolviendo este tipo de puzzles.

["Aplicación No Traducida (ANT)" en itch.io] 

Categorías: Planeta

"Estudiante Extranjero" de Exemplary Monk [Rayuela de Arena 2020]

Mar, 29/11/2022 - 06:08

Este breve hipertexto, de alrededor de diez minutos de duración, cuenta la historia de un joven que acaba de recibir una beca de varios años para irse a estudiar a otro país. "Estudiante Extranjero" (@ExemplaryMonk, 2020) recorre tres momentos que a priori puede ser interesante explorar a través de una narración interactiva: la decisión de a qué dedicar los últimos días que le quedan al protagonista en su antiguo hogar, antes de iniciar la estancia en el extranjero; el cómo se enfrenta inicialmente, una vez llega a la ciudad de destino, a ese escenario completamente nuevo en el que no conoce a nadie; y, por último, la reflexión años después y ya de regreso a casa de hasta qué punto la experiencia le ha cambiado la vida a él pero, también, cómo esos años han cambiado la vida de familiares y amigos —especialmente tras un evento dramático que ocurre durante su estancia fuera—. La obra, sin embargo, tiene problemas que impiden explotar esta premisa. Señalo los que me parecen los dos principales, (siempre con ánimo constructivo y sin olvidar que se trata de una obra de GameJam, creada bajo unos márgenes de tiempo muy limitados, lo que ya merece el reconocimiento).

Los textos son flojos. Cada autor tiene una forma de escribir y unas ambiciones diferentes, y cada obra sus propias necesidades particulares. No es necesario perseguir siempre algún tipo de excelencia estilística ni nada parecido. De hecho, muchas obras son mejores por estar escritas en un estilo sencillo y práctico. Pero en toda obra de carácter literario la redacción de los textos tiene una relevancia especial y aquí la lectura se llega a hacer pesada en ocasiones, lo que lastra la experiencia. (Probablemente se podría decir lo mismo de estas reseñas. Para eso he dejado abierta la sección de comentarios, al final de la entrada).

La historia es demasiado ambiciosa. En apenas diez minutos se cuenta cómo el protagonista recibe su beca y se lo comunica a familiares y amigos, se cuenta el viaje y la llegada a su nueva residencia, cómo aprovecha los años que dura la beca, estalla la guerra en su país, regresa años después y comprueba cómo están ahora familiares y amigos. Y entre todo esto, que ya resulta excesivo para la longitud de la obra, se narran numerosos detalles adicionales: cómo hace (o no) la cama un día, practica (o no) ejercicio durante su estancia, va a comprar ropa, inicia una relación romántica o lo que sueña durante su viaje en avión. No hay un foco claro. Se da menos espacio, por ejemplo, al reencuentro con la familia, después de años de separación y una guerra devastadora, que el que tiene la decisión de si el protagonista ha estado practicando o no deporte durante esos años. El resultado se siente apresurado e inconexo. Si la obra hubiese intentado abarcar (mucho) menos, y hubiese determinado con mayor claridad qué es lo que quería contar, la experiencia sin duda hubiese resultado mucho más satisfactoria. Y esto, estoy convencido, habría ayudado igualmente en la redacción de los textos, haciendo que el primer punto de la crítica no resultase tan problemático.

Apuntadas las pegas anteriores, "Estudiante Extranjero" cuenta con algunos destellos de una obra mejor.

Me gustan los puntos de coyuntura que he señalado en el primer párrafo; esos momentos en los que el narrador nos pregunta «qué hacer ahora», como el planteado tras recibir la beca y en el que tenemos que decidir a qué dedica el protagonista el tiempo que le queda antes de partir. Aquí pienso que el resultado hubiese sido más potente si se le da mayor peso a la elección; ante el listado de posibilidades que nos da la obra, tras elegir una opción nos devuelve después al listado original y se nos deja así explorar prácticamente todas ellas. La elección sería más difícil (y con ello más interesante) si al elegir una opción se tuviese que renunciar a todas las demás.

Y sí que hay alguna elección que puede parecer superficial, pero que el autor tiene luego en cuenta con buen resultado. Por ejemplo cuando optamos por que el protagonista no llame por teléfono a sus padres al aterrizar en Canadá y la decisión queda registrada para más tarde, al hablar finalmente con ellos, le cuenten lo preocupados que estaban porque esperaban su llamada desde hacía horas. Esos detalles hacen que las decisiones del usuario ganen peso y, bien utilizadas, incluso en un contexto tan sencillo como este, pueden provocar reacciones emocionales interesantes.

Así que considero que "Estudiante Extranjero" es una obra con problemas, pero se adivinan aciertos suficientes como para pensar que el autor puede conseguir resultados más satisfactorios en el futuro.

["Estudiante Extranjero" en itch.io]

Categorías: Planeta

"Reflejos" de Sara P. Lantes [Rayuela de Arena 2020]

Mar, 29/11/2022 - 06:08

Rayuela de Arena es una de las iniciativas más interesantes de los últimos años en el contexto de la ficción interactiva de habla hispana. Se trata de un evento de juegos narrativos de carácter anual ideado por Edu Sánchez (@creativwhisper), que pretende, a un mismo tiempo: 1) impulsar la creación y discusión de juegos narrativos —en un intento por discriminar lo menos posible, está abierto a obras de cualquier género—, 2) generar contenidos divulgativos sobre herramientas y otros recursos y, 3) formar y afianzar redes sociales entre creadores, tanto noveles como veteranos; reforzando así la comunidad fomentando la construcción colectiva de conocimiento. Todo ello, tal y como se recoge la propia web de la iniciativa, con el siguiente objetivo: «la puesta en valor de la narrativa interactiva en español y la apertura del mismo a nuevos autores y autoras de todo tipo que hasta el momento no hayan podido acceder a él» [1].

Durante este mes de marzo se ha estado celebrando la tercera edición de Rayuela de Arena y, además de los diversos recursos divulgativos generados, se han presentado quince nuevas obras. Lo cuál suponía una buena ocasión para revivir el blog (siquiera momentáneamente), y apuntar impresiones de alguna de las participantes, como esta Reflejos:
"Reflejos" (@LantesSara, 2020) es un hipertexto breve escrito en español y en gallego —lo que ya de partida entiendo como un gran valor añadido—. Plantea una especie de sesión de psicoanálisis a través de la que se nos introduce en la mente de su protagonista durante el par de minutos que se tarda en alcanzar el final de la historia.

No tengo gran cosa que comentar a nivel literario; los textos son breves y funcionales, y tienen un tono ligero que no se llega a hacer pesado. Hay una cuestión de estilo que puede resultar discutible, en el escribir interrogantes sin el signo de apertura y sólo con el de cierre, pero que al menos no rompe con el resto de ese tono informal que tiene la narración.

Sí que hay algo interesante en la decisión de utilizar un narrador en segunda persona. Es un recurso habitual en ficción interactiva, desde los juegos clásicos de Infocom y Aventuras AD o la serie de libros de Elige Tu Propia Aventura. En aquellos casos la elección del narrador solía ir pareja a la utilización de un protagonista prácticamente indefinido, un simple avatar sobre el que los jugadores pudiesen proyectar su propia personalidad, acercando la obra a las dinámicas típicas de los juegos de rol de mesa. En el caso de Reflejos, sin embargo, la protagonista está definida más claramente, con una personalidad y un trasfondo propios. Hay muchísimas obras interactivas que usan igualmente ese narrador en segunda persona —se ha convertido en un lugar común del medio— al tiempo que cuentan con personajes controlados por el usuario que resultan complejos y están bien definidos, pero quizá el que "Reflejos" consista específicamente en explorar la mente de la protagonista —se adivinan fragmentos de su pasado, planes y proyectos futuros, e incluso se indaga en la imagen que tiene de sí misma— hace que la decisión resulte especialmente llamativa. El recurso clásico del narrador en segunda persona tiene aquí un efecto muy distinto del que tenía en los libros Elige Tu Propia Aventura.

Dicho esto, es la forma en la que el relato aborda los temas que plantea donde encuentro los principales aciertos. La obra arranca con:

«Estás sola ante una puerta. Sabes que no deberías abrirla pero a la vez algo te atrae a ella de una forma casi inevitable».
Como ya he señalado, "Reflejos" propone un ejercicio de introspección de la protagonista, y empezar con la imagen de una puerta resulta muy sugestivo. Es una imagen explotada continuamente en otros medios como la literatura o el cine; el entrar a un lugar en el que no sabemos con certeza qué nos va a deparar, incluso aunque ya hayamos estado allí antes; atravesar un umbral que nos lleva a un mundo o a un estado distintos; un momento de transición, aprendizaje y crecimiento personal —aquí el narrador añade además ese «sabes que no deberías abrirla», pues adentrarnos en nosotros mismos puede resultar aterrador—. Y, una vez cruzamos esa primera puerta y entramos, nos recibe un espacio con más puertas cerradas, espacios mentales que aún nos son inaccesibles, y con nuestra propia imagen completamente descompuesta, en la forma de un espejo roto en pedazos. Al avanzar en la historia aprenderemos que la protagonista está rota por dentro por culpa de las cosas que se encuentran escondidas —que ella misma ha escondido— detrás de esas otras puertas. Y, también, por los miedos a lo desconocido y a lo que está por venir que aguardan, una vez más, detrás de nuevas puertas. Es una formulación de la mente que funciona muy bien.

A través de la exploración y las distintas decisiones que nos plantea la historia, encontraremos algunos recuerdos fragmentos, pensamientos e incertidumbres de la protagonista que ese narrador en segunda persona hace nuestros. La música y los olores juegan aquí un papel destacado, en lo que es otro acierto de la obra —todos arrastramos nuestra biblioteca personal de estímulos auditivos y olfativos que nos evocan recuerdos importantes—. Hay, de hecho, un momento en el que se nos deja seleccionar la canción que está sonando en el mundo del relato, entre varias opciones posibles, y al seleccionarla el enlace lleva a una página de YouTube. Es un recurso que funciona mejor sobre el papel que en la práctica, pues al sacarte de la web de la obra rompe completamente con la inmersión, y desde mi punto de vista resta más de lo que suma.

Tras desenterrar recuerdos incómodos, exteriorizar inquietudes y miedos a lo que está por venir, la protagonista se recompone en parte y la historia nos coloca de nuevo en el primer pasillo, frente al espejo roto. La imagen que arroja ya no está tan fragmentada, es más completa e identificable, pero no se ha reparado por completo. Ella supone, y aquí probablemente se equivoca, que «las cosas ya se irán arreglando con el tiempo». Nosotros, en cambio, podemos hacer una lectura distinta desde la distancia que nos da la pantalla y aventurar que si el espejo sigue roto es porque, en algún lugar, todavía quedan puertas cerradas tras las que tenemos cosas enterradas.

["Reflejos" en itch.io]
[1] Sánchez, E. (2020). Rayuela de Arena 2020 [Online]. Disponible en: https://itch.io/jam/rayuela-de-arena-2020 (Consultado el 2020/04/04).

Categorías: Planeta

Alerta de virus en los discos de «El cetro del sol» para AMIGA.

Mar, 29/11/2022 - 06:08

Malas noticias para los poseedores de copias físicas y/o descargadas del port para AMIGA de «El cetro del sol». Si habéis descargado vuestra copia en fecha anterior a ayer 13 de febrero de 2020, con toda seguridad el fichero ejecutable del juego, llamado «Cetro», está infectado con el virus «Ebola», un virus clásico del AMIGA para el que inexcusablemente no tomé las mínimas precauciones durante la fase de cración y testeo de esta versión del juego.

Peor aún, por lo que he podido comprobar, las ediciones físicas de la aventura que se hicieron expresamente para servir de recompensa en el crowfunding de la Enciclopedia Homebrew Vol. 2, realizadas a partir de esos mismos ficheros, están igualmente infectadas.

Debo resaltar que el autor original de la aventura de texto, Toni Pera, es enteramente ajeno al desaguisado, ya que el port para AMIGA fue labor mía y se realizó en mis ordenadores, donde se produjo el «contagio».

Debo pedir públicamente disculpas por mi imprudencia al dar por hecho que hoy en día podía despreocuparme del tema de la transmisión de virus en una plataforma retro como el AMIGA, máxime cuando todos sabemos que históricamente éste tuvo una muy nutrida fauna propia de amenazas tóxicas. Quizá no tenga excesiva importancia si eres un simple usuario nostálgico, pero en el momento en el que pones algo, la mínima cosa, a distribución pública, es imperativo realizar un chequeo con antivirus. Incluso considerando que yo no fuera el «culpable» original de la cadena de transmisión, si fue responsabilidad mía no haber reparado en esa posibilidad, como a partir de ahora, muy a mi pesar, voy a recordar cada vez que vea el pantallazo con las más de 1100 descargas que el juego ha tenido sólo en Aminet.

Podéis encontrar información sobre el virus Ebola de AMIGA en la página web del Virus Help Team, concretamente en:

https://www.vht-dk.dk/amiga/desc/txt/ebola.htm

Como podéis ver, dentro de la gravedad del asunto, al menos el Ebola no es de las especies más agresivas. Es un virus de tipo «link». No se propaga por sectores de arranque de discos y aunque se queda residente en memoria no sobrevive a los reseteos. Tampoco se conoce que cause expresamente daños adicionales. Pero ser de los «menos malos» no quita el hecho de que se dedique a dar por saco a base de bien replicándose en ficheros ejecutables. En un Amiga 500 «pelao» puede incluso no causar «muchos» problemas ya que comunmente se hace un reset al acabar un juego. En sistemas, reales o emulados, con disco duro ya se vuelve un huesped bastante más pesado, ya que tiende a replicarse en ficheros de uso común como los comandos de la carpeta C, particularmente los que se ejecuten en cada Startup-Sequence al arrancar el ordenador, lo que multiplica sustancialmente sus probabilidades de superviviencia y difusión.

Afortunadamente al ser ya un «viejo conocido» la práctica totalidad de antivirus pueden retirarlo de la memoria y limpiar de una pasada todos los ficheros afectados. Pero CUIDADO, que mi primer intento fue un sonado fracaso. Usé VirusChecker II, que afirmaba estar retirando el virus de los ficheros. Por motivos que aún no acabo de entender muy bien, sin embargo, los ficheros desinfectados dejaron de ser utilizables. Al intentar ejecutar cualquiera en el shell del Amiga se producía un error de «bad loadfile hunk» (vamos, que al quitar el virus el fichero había sido dañado, probablemente ya sin remedio). Teniendo en cuenta que esto sucede con numerosos comandos del sistema de la carpeta C, todo el arranque de mi Amiga emulado con WinUAE (del que piadosamente tenía una copia de seguridad) quedó poco menos que arruinado.

En mi Amiga 1200 real, tras muchos ensayos y precauciones con copias, pude realizar el proceso de limpieza exitosamente y sin sobresaltos con VirusZ III. Así que debo insistir, basándome en mi experiencia concreta, que para retirar el Ebola:

-NO usar VirusChecker II
-USAR VirusZ III

Podéis informaros sobre VirusZ III también en la web del Virus Help Team en:

https://www.vht-dk.dk/amiga/vz/vz.htm

La descarga de VirusZ III no incluye algunas de las librerías comunes de AMIGA necesarias para su funcionamento, pero ésto se explica con claridad en la documentación y las librerías se encuentran disponibles en Aminet. Lamento que no sea la vía más sencilla y directa, pero es la única que puedo recomendar sin correr riesgo de crear destrozos adicionales.

En cualquier caso, las imágenes de disquette adf descargables tanto desde la página web de «El cetro del sol»:

http://www.zonafi.rockersuke.com/if/cetro_del_sol/descargas.html

… com desde su ficha en Aminet:

http://aminet.net/package/game/text/cetro_del_sol

… ya han sido debidamente saneadas. Si habéis estado en contacto con este juego ya sea en Amiga reales o emulados, no dejéis de pasar un antivirus (con las consideraciones que he expuesto más arriba) a la mayor brevedad.

Si sois alguno de los afortunados poseedores de las copias físicas (si mal no recuerdo, una tirada de 20) podéis grabar el contenido del adf en el disquette para tener una copia funcional y sin virus.

Si no sabéis exactamente cómo hacerlo o no tenéis los medios precisos, no dudéis en contactar conmigo por los comentarios del este post, redes sociales o en el mail «rockersuke» en gmail punto com. Podremos ponernos de acuerdo para que me mandéis el disquette por correo ordinario y os lo devuelva sin presencias indeseadas. Como mínimo el envío de vuelta correría de mi cuenta (y si me pasáis una cuenta bancaria o de paypal os ingresaría el del envío de ida).

Para tranquilidad de los usuarios de DAAD que estén haciendo cosas para AMIGA, los disquettes de AMIGA de la descarga del DAAD están limpios y son seguros de usar.

Dicho todo lo cual, vuelvo a reiterar mis disculpas por todo el desastre. Podría reabrir el debate sobre la maldad intrínseca de distribuir software malicioso como se hacía en el AMIGA hace 30 años, pero sería éso, un debate para hace 30 años. Sí cabe recordar que quizá (bueno, y no tan «quizá» ) no estamos tan libres como queremos pensar de los pecados y excesos que cometieron, o cometimos, en otras generaciones. Vivir en el 2020 no es un colchón mágico que nos haga inmunes a las «armas de destrucción masiva» del pasado y que el objeto de nuestra afición sea consideradao como «retro» no es excusa para bajar la guardia ante peligros que consideramos superados u obsoletos. Vamos, que si lanzáis juegos de AMIGA, siempre, siempre, pasadlos antes por un antivrus

Categorías: Planeta

Próximas convocatorias de Ficción Interactiva

Mar, 29/11/2022 - 06:08


Ya está convocada la ECTOCOMP de este año. Podéis apuntaros a participar usando el siguiente enlace:

ECTOCOMP 2019 (Español)
La ECTO tiene una opción de participación llamada 'La Petite Mort' que es particularmente interesante si nunca habéis intentado hacer nada de ficción interactiva. Sólo tendréis que dedicar cuatro horas para poder participar, lo que no es mucho. Si queréis probar sólo tenéis que descargaros alguna de las muchas herramientas que existen para crear ficción interactiva como Squiffy, Twine o Ficdown. Con los cursos y tutoriales disponibles y esas herramientas no creo que tardéis ni un día en haber hecho vuestra primera ficción interactiva y si tenéis duda siempre podéis preguntarnos en algunos de los canales habituales:
TEXTUALIZA EN DISCORDCANAL DE TELEGRAM
¡Y si la experiencia os gusta o simplemente queréis saber más siempre os podéis apuntar a la Rayuela de este año! Donde encontraréis toda clase de recursos y una comunidad activa de creadores con los que podéis interactuar.
Categorías: Planeta

Retornando a las puertas del destino.

Mar, 29/11/2022 - 06:08

He tenido esto muy abandonado. Me propuse a principios de año hacer algo largo, depurado, terminado. Algo, en definitiva, que fuese una obra de verdad y no un esbozo, ensayo, una prueba... o más bien me propuse terminar dos proyectos. Una obra de literatura normal y una ficción interactiva.
Pero no tenía ni idea de cuál. 
La cosa es que entre tanto se han acabado definitivamente las Sillyberrys, se ha hecho la Rayuela de Arena de este año, y he tenido más cambios en mi vida... todo lo cual no me ha ayudado a decidirme sobre qué dos obras deseaba hacer. De hecho me ha desinflado los ánimos bastante. Hasta hoy.
En cuanto a la literatura tradicional parecía que me iba a centrar en un proyecto nuevo que me ha surgido, una colaboración en una antología de SF Hard con varios autores. Ese proyecto es el único para el que he escrito algo en este tiempo y ahora estamos ya en fase de revisión y ajuste, así que irá para delante, pero... necesito terminar algo más personal. Así que habrá una obra mía que casi seguro que será la colección de cuentos de 'Colonos de Tulgia' que se puede encontrar en este mismo blog, pero espero que muy depurado no sólo por mí, sino por algún editor externo si es que puedo conseguir uno de confianza. Quiero crear una buena portada y hacer una maquetación seria. Y sí, quiero autopublicar, sé que no me voy a comer un colín con esa forma de trabajar y que sólo será una perdida de dinero, pero le tengo cariño a esa colección de cuentos en concreto y quiero autopublicarlo yo mismo.
¿Y la obra de ficción interactiva?
Pues empecé el año pensando en retomar la reiteradamente postergada 'La torre y el mar'; pero luego pensé que para ser algo largo y terminado tal vez sería el momento de sacar de una vez 'Sortilegios' o una versión renovada de 'Apache'. Eso pensé, pero sin acabar de decidirme. Los conocidos me recomendaron intentar 'Sortilegios' que les parecía más interesante. Y en ello he estado... a ratos.
Pero sin avanzar gran cosa y sin entender porqué no avanzaba nada. Esta mañana, repentinamente, me he dado cuenta que 'Sortilegios' requiere muchísimo trabajo para generar una obra (masiva, sí, pero...) muy tradicional y, en el fondo, con una estructura narrativa muy normalita. Lo que... bueno, como que no me llena.
Parece que sí que necesito tener entre manos algo más rompedor, más experimental, y por eso he pensado en 'Puertas del destino'. 
'Puertas del destino' es un viejo proyecto totalmente personal (ni siquiera está listada en la wiki del caad como uno de mis proyectos) basado en Inform 7 que requiere un control técnico bastante complicado para que quede bien. Tal vez demasiado complicado, pero, diablos, parece que es justo lo que me apetece, así que ese va a ser.
'Puertas del destino' es una obra de una única localización que intenté crear para la XComp3, una obra que va de una tienda en la que puedes pagar para intentar cambia tu destino y... el de tu apellido. Será una obra mezcla de SF Soft y Fantasía.
No digo más que destrozaría las sorpresas que esta obra debería contener.
¡¡Deseadme suerte!!

Categorías: Planeta

Repertorio de acciones en Inform

Mar, 29/11/2022 - 06:08
Alien: La aventura (Alpha Aventuras 2008−2018)El analizador de comandos de toda ficción interactiva se presenta al usuario bajo la siguiente premisa: eres libre de escribir lo que quieras, como si de algún modo estuvieses conversando con el narrador de la obra o con el director de partida de un juego de rol —una idea que está detrás, de hecho, del término "aventura conversacional", utilizado ampliamente en el pasado para referirse al medio y que aún hoy sigue siendo popular entre algunas personas—. La premisa es falsa, por supuesto. A pesar de la ilusión de poder escribir cualquier cosa para comunicarte con la obra, la cantidad de entradas que puede procesar correctamente el analizador de comandos se reduce en realidad a un conjunto muy limitado de acciones.

Cada obra puede definir potencialmente su propio repertorio de acciones particular, completamente diferente (o no) de otras obras. Existe, no obstante, un cierto conjunto de acciones que es habitual encontrar en la gran mayoría de las ficciones interactivas. Gracias a esto los usuarios más veteranos pueden explotar lo aprendido al experimentar obras previas para hacerse una idea general de las acciones que pueden utilizar al iniciar una nueva FI.

El sistema de autoría Inform (tanto en su versión 6, como en la 7) implementa este conjunto de acciones básicas, junto con comportamientos y mensajes por defecto, de manera que cualquier obra de ficción interactiva creada con este sistema cuenta de partida con todas ellas. Los autores son libres después para eliminar o añadir acciones de acuerdo a sus necesidades, desde luego, pero lo más común en este caso —al menos si es que las acciones añadidas resultan clave para hacer avanzar la narración—, es que la obra informe al usuario de cuáles son las novedades que se salen del conjunto habitual. En The Inform Designers Manual (2001) Graham Nelson, autor de Inform, detalla el repertorio completo de acciones del sistema [1]. A continuación se reproduce esta relación de acciones, junto con las entradas de teclado típicas que genera cada una en la traducción de la librería al español INFSP.
Grupo 1Acciones relacionadas con la operación del software. No tienen que ver con la historia de la obra ni con el modelo de mundo subyacente.

Acción Producida típicamente por Notas Pronouns "pronombres" Lista correspondencia de pronombres con objetos de la obra Quit "fin" Restart "reiniciar" Restore "cargar" Save "guardar" Verify "verificar" Comprueba la integridad del fichero de la obra ScriptOn "script on" Inicia transcripción de la sesión en un fichero de texto ScriptOff "script off" Finaliza la transcripción NotifyOn "notificar on" Activa notificaciones de puntuación NotifyOff "notificar off" Desactiva notificaciones Places "lugares" Lista las localidades visitadas Objects "objetos" Lista los objetos manipulados Score "puntuación" FullScore "puntuación completa" Muestra la puntuación detallada de la partida Version "versión" Muestra la versión actual de la obra LMode1 "breve" Descripciones normales de las localidades LMode2 "largo" Siempre descripciones completas de las localidades LMode3 "superbreve" siempre descripciones abreviadas de las localidadesGrupo 2Acciones que de forma automática interactúan sobre el modelo de mundo, en caso de darse las condiciones adecuadas:

Acción Producida típicamente por Notas Look "mira" Examine "examina pez" Search "busca en el caja" Inv "inventario" InvTall "inventario alto" Se convierte en Inv InvWide "inventario ancho" Se convierte en Inv Take "coge pez" Drop "deja pez" Remove "coge pez de la caja" PutOn "pon caja en la estantería" Insert "pon pez en la caja" LetGo acción de apoyo interna Provocada por Remove Receive acción de apoyo interna Provocada por PutOn e Insert Empty "vacía caja" Se convierte en EmptyT d_obj EmptyT "vacía bolsa en la caja" Para cada elemento contenido, se convierte en Remove y después en Drop/PutOn/Insert Transfer "mueve manzana a la caja" Se convierte en Drop/PutOn/Insert Go "norte" Enter "entra en el armario" GetOff "sal del armario" GoIn "entra" Se convierte en Go in_obj Exit "sal" Puede convertirse en Go out_obj Unlock "abre puerta con llave" Lock "cierra puerta con llave" SwitchOn "enciende radio" SwitchOff "apaga radio" Open "abre puerta" Close "cierra puerta" Disrobe "quítate sombrero" Wear "ponte sombrero" Eat "come pez" Wait "espera" Grupo 3Imprimen un mensaje y finalizan en la fase before de la ejecución (sin producir ningún cambio en el modelo de mundo).

Acción Producida típicamente por Notas LookUnder "mira bajo [la alfombra]" noun puede ser nothing Listen "escucha [casete]" noun puede ser nothing Taste "prueba [escabeche]" noun puede ser nothing Touch "toca [pintura]" noun puede ser nothing Pull "tira carretilla" Push "empuja carretilla" Wave "agita varita" Turn "gira sintonizador" PushDir "empuja carretilla norte" ThrowAt "lanza dardo a diana" ThrownAt acción de apoyo interna Provocada por ThrowAt JumpOver "salta sobre verja" Tie "ata cuerda [al gancho]" second puede ser nothing Drink "bebe absenta" Attack "ataca soldados" Swing "columpiate en cuerda" Blow "sopla pipa" Rub "limpia mesa" Set "pon trampa" SetTo "pon temporizador a 10" second no es un objeto del modelo de mundo Buy "compra helado" Climb "escala escalera" Squeeze "aplasta tomate" Burn "quema papeles [con cerilla]" second puede ser nothing Dig "cava jardín [con pala]" second puede ser nothing Cut "corta papel" Consulta "consulta pez en libro" Establece noun y el asunto Tell "habla Gema sobre Arturo" Establece noun y el asunto Answer "responde confirmación a Álvaro" Establece noun y el asunto Ask "pregunta Gema sobre Isaac" Establece noun y el asunto Give "da moneda a troll" Show "muestra pasaporte al guardia" AskFor "pide margaritas a Gema" WakeOther "despierta a dormilón" Kiss "besa Gema" Sleep "duerme" Sing "canta" WaveHands "agita manos" Mira también Wave Swim "nada" Sorry "perdón" Strong palabras muy malsonantes Mild palabras algo malsonantes Jump "salta" Mira también JumpOver Think "piensa" Smell "huele [café]" noun puede ser nothing Pray "reza" VagueGo "anda" Yes "si" No "no" Wake "despierta" Mira también WakeOther
Acciones que se trasladan a las reglas life de los objetos:

Acción Producida típicamente por Answer "di si al cajero" Ask "pregunta mujer sobre plutonio" Attack "ataca soldados" Give "da moneda a Caronte" Kiss "besa Gema" Order "Thorin, ve al oeste" Show "muestra pasaporte al guardia" Tell "habla a Paris sobre Helena" ThrowAt "lanza hacha al enano" WakeOther "despierta a bella durmiente"
[Descargar repertorio completo como un fichero de texto].
[1] Nelson, G (2001). The Inform Designers Manual. (4th ed.) Interactive Fiction Library. (Disponible online: https://www.inform-fiction.org/manual/html/)
Categorías: Planeta

Tabla de contenidos

Mar, 29/11/2022 - 06:08
Categorías: Planeta

Sistemas de conversación en Inform 6

Mar, 29/11/2022 - 06:08

Uno de los principales retos a la hora de añadir personajes no jugadores (PNJs o NPCs, por sus siglas en inglés) en una ficción interactiva es la implementación de las conversaciones entre ellos y el personaje controlado por el jugador (PJ o PC). Existen múltiples maneras de crear un sistema de conversación, cada uno con sus ventajas e inconvenientes. Una buena práctica antes de decidirse por la utilización de uno u otro es analizar las particularidades de cada sistema y las necesidades de la propia obra a fin de seleccionar aquel que pueda adecuarse mejor a ella —para hacerse una imagen bastante completa de las diferentes opciones con las que cuenta un autor, el Manual Técnico de TADS 3 [1] incluye una sección dedicada a analizar con cierta exhaustividad algunos de los sistemas de conversación más utilizados—.

En líneas generales, estos sistemas de conversación pueden adoptar tres formas de interfaz: 1) "VERBO [PREPOSICIÓN] <PNJ>", algo en el estilo "habla con Fran"; 2) "VERBO [PREP.] <PNJ> [PREP.] <asunto>", estilo "pregunta a Fran sobre los sistemas de conversación"; 3) Entrada libre de texto, como en "me gustaría saber qué sistemas de conversación existen". A continuación se ofrece una relación rápida de las particularidades de cada uno de ellos junto con ejemplos de obras que los utilizan, así como herramientas para facilitar su implementación en el sistema de autoría Inform 6:
1) Interfaz "VERBO [PREP.] <PNJ>"
La interfaz más simple, utilizando comandos del tipo "HABLA CON <nombre_de_PNJ>" (y sinónimos). A priori facilita evitar situaciones de sordera que se pueden manifestar en las otras dos interfaces que analizamos —llamamos "sordera" a situaciones en las que el usuario no es capaz de hacerse entender por la obra, bien porque el analizador no haya podido comprendender correctamente la entrada o, en ocasiones, porque aún habiéndola entendido no ofrece después una respuesta adecuada para esta entrada. Algo que, por supuesto, conviene en lo posible evitar—. Con cada entrada del usuario se retorna un intercambio de conversación entre PJ y PNJ. Este intercambio puede ser contextual y variar, lo que permite cosas como que tras haber hablado ya con un personaje éste deje de estar interesado en volver a hablar y, así, subsiguientes intentos de introducir el mismo comando devuelvan una respuesta adecuada del PNJ. O, en conversaciones largas, éstas se pueden dividir en varios fragmentos e ir retornándolos secuencialmente con entradas sucesivas del comando "HABLA CON <nombre_de_PNJ>" hasta agotar la conversación por completo.

Ejemplos de uso: Ariadne in Aeaea (2016) y 1958: Dancing With Fear (2017), ambas de Víctor Ojuel.

El principal inconveniente de las interfaces de este estilo es que, en su forma más básica, limitan la agencia del usuario puesto que se le priva de formas con las que guiar la conversación —no puede escoger las respuestas del PJ, ni los temas sobre los que se habla—. Al final del artículo se discuten brevemente ciertos mecanismos que pueden ayudar a solucionar este último punto.

La forma más rápida de implementarlo en Inform 6 posiblemente sea reescribir las respuestas por defecto de la librería a las acciones ##Answer, ##Ask y ##Tell —en general será conveniente reescribir también las acciones ##AskFor, con la que los PJ pueden pedir objetos a los PNJs; y ##Order, con la que pueden introducir comandos e intentar que sean ejecutados por el PNJ en lugar del PJ— a través del objeto "LibraryMessages":

Object LibraryMessages
  with before [;
    Answer, Ask, Tell, AskFor, Order:
      "Para iniciar una conversación usa simplemente la acción HABLA (a/con) PERSONAJE.";
      [ ... ]
];

Y redefinir la gramática asociada al verbo 'habla' para que invoque a una nueva acción ##TalkTo:

Extend 'habla' replace
  * noun -> TalkTo
  * 'a'/'con' noun -> TalkTo
  * creature -> TalkTo
  * 'a'/'con' creature -> TalkTo
;

[ TalkToSub;
  ! Mensaje por defecto tipo:
  ! "No parece estar interesado en hablar ahora."
  [...]
];

De este modo cada uno de los PNJs del modelo de mundo pueden capturar la nueva acción ##TalkTo en sus rutinas before() y ofrecer respuestas adecuadas. (Advertir que los ejemplos de código propuestos más arriba son sólo un esbozo incompleto. Queda en manos de los autores añadir nuevas líneas de gramática para que, por ejemplo, términos como "conversa" funcionen como sinónimos de "habla", o que la lógica de la rutina TalkToSub() retorne mensajes por defecto adecuados y diferentes cuando el usuario intente lanzar la acción sobre objetos animados o inanimados o sobre sí mismo).
2) Interfaz "VERBO [PREP.] <PNJ> [PREP.] <asunto>"
Una de los sistemas de conversación más ampliamente utilizados a lo largo de los años. Consiste en el uso de comandos del tipo "PREGUNTA A <nombre_de_PNJ> ACERCA DE <asunto>" (habitualmente, además de "pregunta" se contemplan otros verbos como "responde", "di", "cuenta", etc.) o, también, "<nombre_de_PNJ>, <asunto>". Al permitir especificar un asunto sobre el que tratar presenta la ventaja de ofrecer una mayor libertad al usuario, algo que nos impedía el primer sistema analizado. Por contra, esta mayor libertad redunda en un mayor riesgo de provocar situaciones de sordera; cualquier intento por parte del usuario de tratar un asunto que no haya sido contemplado por el autor retornará algún mensaje genérico del tipo "No sé nada sobre ese tema.", lo que puede deteriorar la experiencia y llegar a generar frustraciones con la interfaz. O puede dar lugar a escenarios más indeseables aún: algunas obras requieren conseguir cierta información de un PNJ para avanzar en la historia, de manera que el usuario puede encontrarse en situaciones de bloqueo del tipo "adivina el asunto" en las que debe dar con las palabras adecuadas sobre las que hablar con ese personaje determiando para conseguir dicha información. Estas situaciones de bloqueo suelen revelar un grave problema de diseño y a menudo resultan más frustrantes para el usuario que los bloqueos motivados por situaciones del tipo "adivina el comando" —una de las principales barreras de accesibilidad en obras de ficción interactiva mal implementadas. Varios autores, como Andrew Plotkin (2011), han abordado ya en el pasado este tipo de problemas con más detalle [2]—. Al igual que con el primer ejempo de interfaz, al final del artículo se discuten mecanismos que pueden aliviar estos inconvenientes.

Dado que se trata del sistema más utilizado y se considera prácticamente estándar en el medio, la librería Inform 6 ofrece de partida toda la infraestructura necesaria (gramáticas, definición de acciones, modelo de mundo...) para implementarla.

Ejemplos de uso: Alien: La aventura (Alpha Aventuras, 2008−2018) o Anchorhead (Gentry, M. 1998−2018), entre muchas otras.
3) NLP aplicado sobre entrada libre del teclado
Esta interfaz plantea permitir la entrada de texto completamente libre por parte del usuario y que, a través de procesamiento de lenguaje natural, la obra pueda interpretar esta entrada y ofrecer respuestas de los PNJs acordes a ella. En la práctica no hay ficciones interactivas con analizador de comandos que hayan utilizado realmente sistemas de este estilo con éxito —sí versiones del sistema (2) que pueden parecer imitarlo al utilizar análisis no estricto para reconocer patrones entre la entrada de usuario y las palabras clave asociadas a cada tema de conversación—. No existen tampoco herramientas ideadas específicamente para implementar conversaciones así en Inform 6, por lo que sería tarea del autor crear el sistema por su cuenta —lo que no se antoja en absoluto sencillo—.

En cambio, algunas otras obras englobadas en clases distintas de narrativa electrónica si han experimentado con acercamientos de este tipo para establecer conversaciones con PNJs, como por ejemplo Starship Titanic (The Digital Village, 1998), Façade (Mateas, M. y Stern, A., 2005) o el reciente Restless (Short, E. 2018), presentado en la edición de 2018 de la ECTOCOMP y que hace uso, entre otros, de las capacidades procedimentales de generación de texto automático del MiddleWare Character Engine [3], desarrollado por la compañía Spirit AI.
Mecanismos para mitigar las desventajas de (1): menús
Los menús representan una posible forma de añadir capacidad de decisión por parte del usuario aún utilizando formas de interfaz simples como las vistas en el punto (1) para iniciar las conversaciones. Estos menús se presentan de forma similar a la que puede observarse en videojuegos como las aventuras gráficas —por ejemplo en The Curse of Monkey Island (LucasArts, 1997)— o los RPG occidentales —ej: Torment: Tides of Numenera (inXile Entertainment, 2017)—: al iniciar la conversación se presenta un conjunto de opciones al usuario (normalmente etiquetadas con números); el usuario selecciona una opción (su número asociado); el PNJ da la respuesta adecuada a esa opción; y se vuelve a repetir el mismo flujo hasta que se agote la conversación.

Algunas de las ficciones interactivas mejor valoradas por la comunidad [4] utilizan este tipo de sistema de conversación: Photopia (Cadre, A. 1998) , Rameses (Bond, S. 2000) o De Baron (Gijsbers, V. 2006), entre otras.

Existen diferentes extensiones para implementar un sistema de conversación basado en menús en Inform 6. Probablemente la más popular, la más robusta y la mejor documentada sea gtalk.h creada por Boettcher, G.; Fundin, K. y Tilford, M. J.:

El sistema basado en menús presenta, por su parte, ciertos inconvenientes —como con el resto de sistemas, para encontrar una descripción detallada del funcionamiento de cada uno junto con sus ventajas y sus inconvenientes, se emplaza de nuevo al lector a consultar el Manual de TADS 3[1]—, el más importante probablemente sea la ruptura de coherencia de la interfaz; durante todo el flujo de la conversación la entrada del usuario deja de consistir en un comando de entre el conjunto de comandos de texto definidos por la obra para convertirse en una selección de opciones del menú (habitualmente, la selección de un número asociado a cada opción). Roberts, M. J. et al. (2008) destacan cómo esta ruptura llama la atención sobre la interfaz de usuario y, por tanto, degrada la experiencia de estar interactuando con el narrador de la obra: «Una enumeración de opciones no encaja bien con el aspecto y comportamiento de un juego de texto. La interfaz de usuario de una ficción interactiva reivindica una salida que pueda ser interpretada como voz del narrador y simular, al menos, [un espacio de posibilidades abierto]».
Mecanismos para mitigar las desventajas de (2): inventario de temas
Con la pretensión de evitar las situaciones de bloqueo de tipo "adivina la palabra" de los sistemas de conversación basados en las interfaces de tipo (2), así como los inconvenientes de los sistemas basados en menús, surgen los inventarios de temas. Estos sistemas consisten en ofrecer directamente una lista de asuntos (un inventario) sobre los que se puede hablar con un PNJ, y que el usuario puede consultar en cualquier momento.

Esta lista de temas no tiene por qué ser completa. Es decir, el usuario potencialmente podría todavía intentar tocar asuntos no listados por el inventario, consciente de la posibilidad de que el PNJ retorne alguna respuesta genérica indicando que no sabe nada sobre ese tema. Al ser consciente de partida de esta posibilidad, se mitiga la frustración y, a cambio, se deja abierta la puerta a la exploración libre y a experimentar la sensación de recompensa y gratificación por descubrir temas y fragmentos de conversación secundarios ocultos o no evidentes. El grueso de la conversación, sin embargo, junto con toda la información que pueda resultar importante para la historia, debería incluirse dentro de los temas sugeridos por el inventario a fin de evitar los temidos bloqueos de "adivina la palabra".

Son numerosos los ejemplos de obras que han adoptado este sistema de conversación en la última década. Por citar algunos: Aotearoa (Wigdahl, M. 2010), Shelter from the storm (Eve, E. 2009) o Make It Good (Ingold, J. 2009).

Para facilitar a los autores la implementación de este tipo de sistema de conversación en Inform 6 he creado una extensión llamada choiceSet (basada en otra extensión previa: NPC_conversation [5]):
  • choiceSet.h (la parte final del código incluye un ejemplo de uso)
  • El Chico (pequeña obra con un ejemplo de uso de la extensión más completo)
Relación de obras citadas:
[1] Roberts, M. J.; Breslin, S; Eve, E.; Nizette, M. y Sewe, A. (2008). TADS 3 Technical Manual: Choosing a Conversation System [Online]. Disponible en: http://tads.org/t3doc/doc/techman/convbkg.htm (Consultado el 2019/02/08).
[2] Plotkin, A. (2011). 'Characterizing, If Not Defining, Interactive Fiction'. En Jackson-Mead, K. y Wheeler, J. R. (ed), IF Theory Reader. 1st ed. Boston, MA: Transcript On Press. pp.(59-66).
[3] Short, E. (2019) Conversation as Gameplay (Talk) [Online]. Transcripción de coloquio en la Oxford/London IF Meetup. Disponible en: https://emshort.blog/2019/01/20/conversation-as-gameplay-talk/ (Consultado el 2019/02/08).
[4] IFDB (2015). Interactive Fiction Top 50 of all time (2015 edition) [Online]. Gijsbers, V. (ed.). Disponible en: https://ifdb.tads.org/viewcomp?id=p6s9uem6td8rfihv (Consultado el 2019/02/10).
[5] Mastodon (2011). Ahora que me acuerdo... [Online]. Disponible en: https://lanemastodon.wordpress.com/2011/04/02/ahora-que-me-acuerdo/ (Consultado el 2019/02/10).
Categorías: Planeta

(c)1998-2022 CAAD

Todos los contenidos de esta web son propiedad de CAAD. Las colaboraciones son propiedad de sus respectivos autores.