Notxor tiene un blog

Defenestrando la vida

Trokola en versión alfa

Notxor
2024-08-25

Dije en el pasado artículo que estaba quemado con la programación y que sentía que no volvería a programar. No mentí en ese momento, pero al final he seguido programando. Debe ser que la cabra tira al monte y no puedo evitar meterme en esos berengenales. El tema es que decidí, al menos, alcanzar el estado alfa de la herramienta de aventuras conversacionales que estaba desarrollando. Hoy cuento un poco el asunto.

¿Por qué este proyecto?

La respuesta a esta pregunta tiene varias vertientes. Por un lado, está el hecho de la elección del lenguaje. Por otro, también podemos preguntarnos por la necesidad de una nueva herramienta de creación de aventuras de texto. Por último, también nos podemos preguntar por qué hacer «aventuras de texto» y no otro tipo de juegos.

El motivo para elegir las aventuras de texto, también llamadas ficción interactiva o aventuras conversacionales, obedece a varias causas. Es necesario recordar, que la creación de esta herramienta, aunque puede ser utilizada de manera genérica, está enfocada a proporcionar actividades lúdico-formativas en planes de prevención del acoso escolar. Las aventuras de texto nos proporcionan las siguientes ventajas en ese ámbito:

  • Fomenta la inclusión: Podemos encontrar personas con algún tipo de déficit visual o auditivo que tienen problemas a la hora de realizar actividades lúdicas, como un videojuego convencional. Sin embargo, un juego basado en texto puede integrarlas, simplemente utilizando las herramientas de accesibilidad que cualquier sistema operativo trae ya incluidas.
  • Fomenta la comprensión lectora: Toda la aventura se basa en interacciones de texto, los participantes deben leer y comprender qué está sucediendo para responder adecuadamente a las acciones de los otros jugadores y a los eventos acaecidos en el mundo virtual que se presenta.
  • Fomenta la imaginación: Una aventura conversacional, si está bien diseñada, produce una inmersión completa en un mundo virtual que estando basado en descripciones de texto, es un completo ejercicio de imaginación para los jugadores.
  • Crear simulaciones: La ficción interactiva genera entornos virtuales que pueden ser utilizados para simular situaciones peligrosas de la vida real sin exponer a los jugadores al peligro.

Existen en la actualidad un montón de herramientas para la creación de este tipo de aventuras y quizá se podría haber utilizado otra cualquiera con los mismos objetivos. Sin embargo, se nos presentarían problemas de difícil solución:

  • Ficción interactiva: La mayor parte de las herramientas de ficción interactiva están enfocadas al juego individual. Algunas, como AGE1, sí tienen en cuenta el modo multijugador, pero se encuentra abandonada desde hace años y no se puede asegurar que su funcionamiento sea correcto.
  • MUD: Un MUD2, es un tipo de juego de texto, precursor de los actuales MMORPG3. La utilización de este tipo de juegos como herramienta es compleja, ya que están pensados para la creación de un mundo virtual estable que debe ser mantenida y desarrollada en el tiempo.

En ese sentido Trokola proporciona un sistema que se equilibra entre ambos aspectos. No necesita un mundo virtual infinito, sino tan sólo lo mínimo para poder crear una aventura específica.

Por último, para la elección del lenguaje de programación se han tenido en cuenta algunos otros aspectos:

  • Sencillez: Se buscaba un lenguaje sencillo que pudiera ser utilizado por cualquier persona, incluso los no programadores. La máxima de Tcl/Tk es «todo es texto». Cualquier expresión se trata como texto. Tanto el código como los datos son texto puro, lo que los hace también intercambiables.

    Otra de las características del lenguaje es la homoiconicidad es decir, toda la sintaxis del mismo presenta una estructura idéntica, en el formato:

    comando arg1 arg2 ... argN
    
  • Multiparadigma: Es un lenguaje que puede ser utilizado de diversas maneras, tanto desde un enfoque funcional, como desde un enfoque de lenguaje orientado a objetos o procedural.
  • Gráfica: El lenguaje Tcl, proporciona a su vez un conjunto de instrucciones gráficas mediante Tk, (el Tool Kit de Tcl4) que permite la creación de GUIs5. Un posible proyecto futuro sería alejar a los usuarios de la temida consola de comandos y de otros detalles como las conexiones a través de la red. O proporcionar una herramienta gráfica que permita crear un mundo básico rellenando algunos formularios en una ventana.
  • Multiplataforma: El lenguaje y sus librerías se pueden instalar en cualquier sistema operativo: GNU/Linux, Windows®, MacOS® o, incluso, Android® a través de Termux. En el primero es bastante habitual encontrárselo ya instalado, y el los demás es muy sencillo de instalar.

Toda la herramienta se ha programado sin recurrir a dependencias de librerías externas, de tal manera que teniendo instalado el lenguaje y teniendo el código fuente de Trokola, no se necesita instalar más.

Trokola proporciona dos elementos principales. Por un lado, tenemos el servidor y por otro la simulación de mundo.

  • El servidor: Este es un programa centralizado en la red que proporciona interacción a través de comandos de los usuarios. Por tanto, su función principal es responder a las peticiones de los usuarios conectados según el modelo de mundo cargado.
  • El mundo: Es una abstracción generada por código, de hecho toda la información está contenida en un diccionario, que es un tipo de conjunto de datos que se expresa mediante pares clave-valor. El modelo de mundo que proporciona Trokola es muy básico. Permite separar el mundo en localidades, es decir, son entidades que representan porciones de espacio que pueden contener otras entidades en su interior. Las interacciones básicas con las localidades es la posibilidad de desplazar a los personajes por ellas, creando la sensación de movimiento.

    Otro de los elementos básicos que proporciona el modelo básico de mundo virtual es la representación de objetos, que son entidades con diversas características. El subtipo más destacable son los contenedores, que son entidades que pueden tener otras entidades subordinadas.

    Por último, estarían los personajes. Aunque se pueden crear personajes por código, en Trokola se espera que los personajes estén jugados por personas reales. De estos personajes podemos distinguir dos tipos fundamentales: los jugadores base y los administradores. La diferencia entre ambos, es la posibilidad que tienen los administradores de interactuar con el servidor y no sólo con el mundo.

    La creación de un juego consiste en sobrescribir las características del mundo virtual básico creando comportamientos nuevos o modificando los ya existentes.

Es complejo decidir qué acciones o características incluir en el mundo básico. Un mundo básico, más básico, permite una mayor flexibilidad a la hora de programar las aventuras, pero también implicará que necesitarás picar más código para hacerlas.

Planes futuros

  1. Creación de una aventura básica para probar el sistema. Consistirá en una aventura multijugador para 3 ó 4 jugadores que sirva para probar a fondo todas las características del sistema. Además, se utilizará como ejemplo de programación en la documentación que estoy escribiendo sobre cómo crear aventuras con Trokola.
  2. Escribir la documentación de la herramienta. Consistirá en dos documentos fundamentales: primero el manual de usuario enfocado a la programación de aventuras sencillas a partir del mundo básico implementado y a cómo explicar el mecanismo de juego a posibles participantes; segundo un manual del programador que explique cómo funciona la herramienta y permita a los más avanzados crear sus propios mundos básicos o modificar el existente para completarlo o hacer que se comporte de una manera diferente.
  3. Facilitar el acceso. Siendo un servidor remoto, me planteo crear una herramienta, bien web o bien mediante Tk para conectarse a un juego. De manera que se pueda realizar la actividad lúdica sin recurrir a intimidantes6 consolas de texto.

Conclusiones

Captura_repositorio-trokola.png
Figura 1: Captura de pantalla del repositorio `fossil` del proyecto.

Aún queda mucho trabajo por hacer y este proyecto se lleva muchas horas de trabajo, pero está resultando gratificante. Ahora mismo toca ir implementando una aventura sencilla y buscar probadores que quieran jugarla conmigo para ayudarme a depurar errores, corregir sorderas7 del mundo básico, aumentar la cantidad y calidad de los mensajes de respuesta y, en fin, un montón de tareas que aún faltan o son manifiestamente mejorables.

Otro proyecto futuro, que no depende sólo de mí aunque resulta imprescindible desde mi punto de vista para esta herramienta, es su utilización en educación/prevención en el ámbito escolar como comenté más arriba. Me gustaría poder estudiar si esos efectos de su utilización, que espero, son ciertos o no. Por tanto, en el futuro me propongo hacer algunos estudios objetivos sobre su funcionalidad y cómo podemos ajustar su uso para maximizar la efectividad del cambio que queremos provocar en adquisición de conocimientos, hábitos saludables o conducta ajustada.

Notas al pie de página:

1

Aetheria Game Engine

2

Multi-User Dungeon

3

Massively Multiplayer Online Rol-Playing Game

4

Lo utilizan otros lenguajes, como Python o Perl para programar GUIs, pero es original de Tcl. De hecho al lenguaje se lo conoce más como Tcl/Tk.

5

Interfaz Gráfica de Usuario, por sus siglas en inglés.

6

La consola de texto puede ser algo intimidante para el usuario actual.

7

En una aventura conversacional se denomina sordera o también «síndrome de la palabra única» a situaciones en las que una determinada acción sólo puede ser disparada con una palabra, que suele ser la más habitual para el programador. Utilizar sinónimos hasta superar el escollo suele ser bastante frustrante para el jugador y debería ser cubierto por el programa.

Categoría: aventuras conversacionales tcl programación

Comentarios

Debido a algunos ataques mailintencionados a través de la herramienta de comentarios, he decidido no proporcionar dicha opción en el Blog. Si alguien quiere comentar algo, me puede encontrar en esta cuenta de Mastodon, también en esta otra cuenta de Mastodon y en Diaspora con el nick de Notxor.

Si usas habitualmente XMPP (si no, te recomiendo que lo hagas), puedes encontrar también un pequeño grupo en el siguiente enlace: notxor-tiene-un-blog@salas.suchat.org

Disculpen las molestias.

Escrito enteramente por mi Estulticia Natural sin intervención de ninguna IA.