Interactive Fiction Mapper (IFMapper)
by Gonzalo Garramuño
User's Manual
Introducción
¿Qué son los Juegos de Ficción Interactiva?
Son juegos de aventuras, que usualmente contienen poco o nada de gráficos pero usan prosa para describir localidades, eventos y, con suerte, una buena historia. El primer juego de ficción interactiva fue creado a finales de 1970 y se lo conoce como Adventure (o Colossal Cave), si bien el género recién se convirtió en popular y desarrolló la mayoría de sus convenciones con la creación de Infocom en los años 80.
Si nunca han jugado un juego de ficción interactiva, tal vez la mejor
comparación es que son una versión más adulta de “Calabozos y Dragones” o de
los libros infantiles de “Elige tu Propia Aventura”.
Como las novelas, la ficción interactiva ha evolucionado hacia diferentes
estilos, géneros y niveles de interactividad.
Hoy por hoy pueden encontrarse aventuras desarrolladas en idiomas como Inglés, Español, Italiano, Alemán, etc.
Vea la sección: Soy nuevo en esto de la Ficción Interactiva. ¿Qué juegos me recomendás?
¿Qué es IFMapper?
IFMapper es una herramienta para ayudar con el mapeo
de los juegos de ficción interactiva. Como estos juegos dependen principalmente de descripciones textuales y por lo general usan los puntos
cardinales para navegar por el juego, es relativamente fácil perderse. En los viejos tiempos, los jugadores usaban papel cuadriculado para dibujar sus mapas, usando rectángulos y líneas para mostrar cada localidad y sus salidas. IFMapper es básicamente, la versión del siglo 21 de esa misma práctica.
Aunque IFMapper es principalmente una herramienta de
mapeo, puede ser también utilizada como herramienta de diseño en las primeras
etapas de desarrollo de nuevos juegos (para los lenguajes de aventuras Inform o TADS3).
Características de IFMapper
Instalación
Lo que necesitarás
Para usar IFMapper, necesitás
tener el language de programación Ruby instalado (al menos v2.0) y FXRuby (al menos v1.6).
Para imprimir documentos PDF, necesitarás el módulo PDF::Writer de Austin Ziegler.
Microsoft Windows
Baje y corra la última versión recomendada de 64-bits de
RubyInstaller para Windows para instalar Ruby y el MSYS2 Devkit, acceptando todas las opciones por defecto, siguiendo las instrucciones aquí:
https://rubyinstaller.org/downloads/
Una vez que la instalación ha completado, cliquée en la nueva entrada en el menu de Start llamada Start Command Prompt with Ruby, e instale IFMapper con RubyGems:
gem install ifmapper
Esto bajará e instalará la ultima versión de IFMapper, junto con todas las otras dependencias requeridas, y las instalará como gemas dentro del directorio de instalación de Ruby, e.j:
C:\Ruby{RUBY_VERSION}-x64\lib\ruby\gems\{RUBY_VERSION}\gems\ifmapper-{VERSION}
Apple macOS
macOS incluye Ruby por defecto pero la gema de FXRuby gem requerida y su dependencia en el toolkit de FOX, puede no ser tan fácil de instalar.
Herramientas y bibliotecas de desarrollador pueden ser requeridas y puede que necesites intalar Homebrew, para compilar el toolkit de FOX.
El XQuartz X sistema de ventanas eserá requerido para mostrar IFMapper.
Homebrew puede ser usado para instalar Ruby también. Una vez que todas las dependencias son satisfechas, IFMapper debería instalarse con RubyGems:
sudo gem install ifmapper
Linux or UNIX
Deberás obtener Ruby de los repositorios de paquetes de tu sistema operativo.
Por ejemplo, usando apt-get:
sudo apt-get install ruby
Nótese que es probable que además tengas que instalar el toolkit de Fox, así como las herramientas de compilación, desde tu repositorio de paquetes, de la misma forma que instalaste ruby.
sudo apt-get install build-essential libfox-1.6-dev
Después que tengas a ruby corriendo, instala IFMapper y sus dependencias con RubyGems:
sudo gem install ifmapper
Esto debería bajar e instalar la última versión de IFMapper, junto con todas sus dependencias requeridas, e instalarlas como gems en, e.g:
/usr/local/lib/ruby/gems/{RUBY_VERSION}/gems/ifmapper-{VERSION}
Actualizando
Incluído con Ruby, RubyGems maneja ls bibliotecas de Ruby - puede instalar y actualizar cualquier dependencia que IFMapper necesite.
Una vez que IFMapper está instalado por RubyGems, usted puede actualizarlo a la ultima version corriendo este comando:
gem update --conservative --minimal-deps ifmapper
Si existe una nueva versió de IFMapper, será actualizada junto con cualquier biblioteca requerida, que resultará en la versión de la gema siendo actualizada en el directorio de instalación de la misma, como:
/usr/local/lib/ruby/gems/{RUBY_VERSION}/gems/ifmapper-{VERSION}
Arrancando IFMapper
Una vez instalado, puedes correr IFMapper ya sea cliqueando con el Botón Izquierdo del Ratón sobre el archivo IFMapper.rbw dentro del directorio de ifmapper o, invocando IFMapper.rbw desde cualquier shell o consola. Por ejemplo:
/usr/local/lib/ruby/gems/{RUBY_VERSION}/gems/ifmapper-{VERSION}/IFMapper.rbw
Asumiendo que todo está instalado correctamente, verás la pantalla principal de IFMapper con un mapa vacío.
Usando IFMapper
La Interfaz Gráfica
La interfaz de IFMapper consiste de un menu que permite acceder a operaciones comunes (cargar/grabarmapas, cambiar seteos, etc), una barra de herramientas con funcionalidad similar, y una o más ventanas mostrando una página de un mapa.
IFMapper te permite editar multiples
mapas simultáneamente.
Cada mapa puede tener varias “secciones”, para así mantener diferentes partes o
capítulos de los juegos organizados.
Note que estas secciones tienen poco que ver como se hace la impresión del mapa
ya que dos secciones pueden terminar impresas juntas si entran en una página o
una sección puede pasar a estar dividida en múltiples páginas por su tamaño.
Cuando arranques IFMapper por primera vez, verás un mapa vacío que muestra una grilla donde las localidades y las conexiones pueden ser creadas.
Use su ratón para la navegación. Si su ratón soporta una rueda giratoria, ésta puede ser usada para acercarse o alejarse del mapa fácilmente.
Para panear alrededor del mapa, use el Botón Medio del Ratón o, alternativamente, ALT + El Botón Izquierdo del Ratón
(Estas teclas imitan el funcionamiento de Maya y 3D Studio Max, ambos softwares populares de 3d). Puedes también moverte
por el mapa usando las barras de scroll que se encuentran en los bordes del mapa.
Creando Localidades
Puedes crear localidades en el mapa simplemente cliqueando
en cualquiera de los rectángulos de guía. La nueva localidad será otorgada un
nombre básico (‘Nueva Localidad’) y estará vacía.
Cada localidad agregada recibe automáticamente un número, basado en su orden de creación.
Para modificar el nombre o propiedades de una localidad, puedes cliquear dos veces sobre ella y una caja de datos aparecerá
para permitirte hacerlo.
Si quieres que dicha caja de datos aparezca tan pronto como crees una nueva
localidad, puedes activar Mapa->Opciones->Editar al Crear.
Esta caja de edición de localidades tiene opciones para marcar el cuarto
como oscuro y para agregar una lista de objetos presentes en la habitación.
A medida que juegas un juego, puede que quieras también listar las acciones que necesitas realizar en la localidad para progresar en el juego (proveyendo así de un sistema rudimentario de ayuda o solución para el juego).
La caja de edición puede ser dejada abierta para rápidamente editar varias localidades.
Además de usar el ratón, puedes usar el teclado
numérico con la tecla de Bloque Numérico (Num Lock) activado y así usar los números del 1 al 9 para
crear una nueva localidad en la dirección apropiada.
Creando Conexiones
Puedes crear conexiones entre localidades cliqueando
en las areas alrededor de los rectángulos del mapa. Dependiendo
de dónde exactamente cliquees, una conexión simple será creada entre ambas localidades.
En su configuración de comienzo, puedes cliquear para
crear una conexión en un área del mapa donde no existan aún localidades. IFMapper procederá a crear las localidades faltantes
automáticamente, además de la conexión.
Note que puede cambiar el comportamiento de cómo las localidades y las conexiones son creadas desde el menú de Mapa->Opciones:
Conexión Automática - crerá una conexión a la localidad previa desde cada nueva localidad que crees.
Crear al Conectar – te permitirá agregar tanto la conexión como las localidades faltantes cuando cliquées en un área de conexión en el mapa.
Las conexiones pueden ser también modificadas en forma similar a las localidades, cliqueando dos veces sobre una de ellas.
La caja de datos de la conexión te permite especificar la conexión como una conexión libre, como una puerta, como una puerta con llave o como una conexión especial.
También te permite hacer que la conexion sea unidireccional o en ambas direcciones. Finalmente, puedes agregar texto en las conexiones para indicar Subir/Bajar o Entrar/Salir.
Hacer que la conexión sea unidireccional puede hacerse también cliqueando sobre ella varias veces en sucesión, sin necesidad de abrir la caja de edición.
Finalmente, seleccionando una conexión y usando el Botón Derecho del Ratón te permite acceder a un menu que te permite invertir la conexió o trasladar la conexión hacia otra salida de una
de las localidades.
Borrando Localidades o Conexiones
Para borrar una localidad o conexion, selecciónela primero.
Luego, presione la tecla de borrado ( Supr o Delete o Backspace ).
Note que por ahora no hay un comando de Deshacer (Undo), por lo que las habitaciones o conexiones borradas no pueden recuperarse.
Conexiones Complejas
Muchas aventuras de texto tienen laberintos con salidas que no llevan a ningún lado y salidas que cambian su dirección de una localidad a otra. Nos referimos a estas conexiones como conexiones complejas.
Para crear conexiones complejas, tipee la letra 'x'
o use la función del menú
Edit->Agregar Conexión Compleja. Luego, cliquee en una salida de la primera localidad a conectar y luego en la salida de la segunda localidad.
Si quiere salir del modo de agregar una connexion compleja, puede presionar la tecla de ESC en cualquier momento.
IFMapper intentará calcular el camino en el mapa
que te lleva desde la salida de la primera localidad a la salida de la segunda.
Para que una conexión compleja ocurra, el camino entre ambas localidades debe estar ‘libre’ de otras localidades que se interpongan. IFMapper también tratará de evitar que diversos caminos complejos se crucen, pero aún así lo permitirá.
Para crear salidas que no van a ningún lado (en loop), puedes crear una connexion compleja cliqueando CTRL + Botón Izquierdo del Ratón, sin necesidad de ir al modo de Conexi&oactue;n Compleja.
Moviendo Localidades en el Map
Cuando construyas mapas grandes de juegos complejos, probablemente te encontrarás en la necesidad de mover las localidades. Para hacerlo, selecciona las localidades que quieras mover usando CTRL+Botón Izquierdo del Ratón sobre ellas, y luego usa las teclas de las flechas del cursor para mover las habitaciones una unidad de grilla a la vez.
Puedes usar también SHIFT+Botón Izquierdo del Ratón y mantenerlo apretado para dibujar una caja alrededor de varias localidades a seleccionar.
Si hay conexiones entre las localidades que moves y
las que no, IFMapper seguirá recalculando nuevos
caminos para las conexiones a medida que movés las
habitaciones.
Note que las conexiones complejas pueden a veces “fallar” debido a quedar
bloqueadas. En esos cases, verás que la conexión queda rígida y se vuelve roja.
Trabajando con Múltiples Secciones
Algunos juegos de aventuras pueden ser bien grandes y estar divididos en capítulos.
En esos casos, puede que quieras aprovechar la opción de IFMapper
de crear varias secciones del mapa. Esto mantendrá a tu mapa organizado y puede que te ayude a imprimirlo más tarde.
Puedes crear o borrar secciones desde los menus de Mapa->Secciones->Crear Sección y Mapa->Secciones->Borrar Sección.
Para moverte de una sección a otra, puedes usar las flechas localizadas en la parte derecha de la barra de herramientas o las opciones del menú der Mapa->Secciones->Próxima/Previa Sección.
Buscando
Puedes buscar palabras en las localidades, lista de objetos, tareas o
descripciones de la sección activa o en todo el mapa, usando el pseudo lenguaje llamado “expresiones regulares”.
La búsqueda es interactiva, como en Emacs, lo que
significa que mientras escribes, las localidades que tienen una coincidencia se
seleccionan automáticamente.
El número de coincidencias para el mapa y la sección se muestra en la barra de estatus.
Puedes usar los botones de Próxima/Previa Coincidencia para centrar la vista del mapa sobre cada localidad que coincide (y automáticamente cambiar de sección si estás buscando cosas en todo el mapa).
Preferencias
IFMapper te permite cambiar y setear las preferencias para cada mapa (colores, opciones de edición, etc). Puedes grabar tus preferencias para que así IFMapper arranque con esos seteos al crear mapas nuevos.
Grabando y Cargando Mapas
Para grabar un mapa que estás editando, puedes ir a Archivo->Grabar o Archivo->Grabar Como. El formato propio de los mapas de IFMapper es el formato .map, que es un archivo binario. Este formato graba todas las preferencias de tu mapa asi como todas las conexiones y descripciones de las localidades.
Para cargar un mapa, puedes usar Archivo->Abrir.
Además del formato propio de IFMapper, el software también soporta otros formatos populares de la comunidad de Ficción Interactiva. IFMapper puede leer:
- .ifm files (Dave Chapeski's IFM, una popular y gratis herramienta de mapeo y soluciones de Unix)
- .gmp file (GUEmap's maps, a shareware (v1) / open source (v2) herramienta de mapeo de Windows)
- .inf files (Inform 6 archivos de codigo fuente)
- .inform files (Inform 7 archivos de codigo fuente)
- .trizbort files (Trizbort archivos de mapas)
- .t3m or .t files (TADS 3 makefiles o archivos de codigo fuente)
Clausurando Mapas
Una vez que termines una aventura, puedes clausurar el mapa para su distribución.
Puedes hacerlo llendo a Mapa->Datos del Mapa
y cliqueando en el switch de Lectura Solamente y luego asegurarse de grabar el mapa como archivo .map (El formato nativo de IFMapper).
Hacer que el mapa sea de lectura solamente no te permitirá editar el mapa (y así prevendrás accidentalmente mover o cambiar las descripciones de las localidades por error).
Cuando se lee un archivo IFM, el modo de Lectura Solamente se activa automáticamente, ya que se asume que estos mapas fueron creados y finalizados con otro software.
Si necesitas modificarlos, desactive el modo de Lectura Solamente en el panel de Datos del Mapa.
Mapeando Juegos desde sus Transcripciones (Mapeo Automático)
La forma en que el mapeo automático funciona es que leerá un archivo de transcripción o bitácora de tu juego, e intentará interpretarlo para generar localidades y conexiones (¡aún cuando estás todavía jugando al juego!).
Para usar el mapeo automático, ve a tu juego y comienza una transcripción. Usualmente esto se hace con:
> verbose
> script
y luego especificando el nombre del archivo.
Luego, ve al IFMapper y en un mapa (usualmente uno
vacío) corre: Mapa->Mapeo Automático->Comenzar.
Esto abrirá una ventana donde debes indicar a IFMapper
el nombre de tu archivo de transcripción.
Luego, se abrirá una ventana de opciones.
Las opciones permiten indicar cómo se va a identificar cada localidad como única.
El mapeo automático puede determinar si estás en una nueva localidad ya sea comparando la descripción del lugar (lo estándar) o comparando sólo el encabezado de la localidad. Juegos que tienen
localidades con encabezados repetidos (usualmente, laberintos) se beneficiarán de ser identificados por su descripción mientras juegos que cambian la descripción de las localidades frecuentemente o tras varias visitas puede que se mapeen mejor usando sólo los encabezados. Nótese que podés cambiar de un modo a otro en cualquier momento del juego.
Otra opción te permite indicar de qué tipo de transcripción
se trata. La mayoría de juegos utilizan el formato Clásico aunque algunos juegos viejos de Infocom (Witness y Moonmist) tienen su propio formato.
Y eso es todo. Inmediatamente, deberías ver a IFMapper trabajar y comenzar a crear localidades y conexiones.
Si continúas jugando al juego y el comando de transcripción
permanence activo, IFMapper continuará mapeando el juego en forma interactiva.
Esto funciona muy bien para juegos que corren bajo WinFrotz,
por ejemplo, aunque otros intérpretes no agregan el texto al archivo de transcripción en forma inmediata, lo que lleva a un mapeado menos interactivo (con esos intérpretes, probablemente debas tipear varios comandos antes de que el archivo de transcripción sea actualizado).
Además de intentar extraer las localidades y tus movimientos, el mapeo automático también intentará extraer los objetos visibles en cada habitación, a través del monitoreo de tus commandos de ‘get’ o ‘take’ y recordando dónde fue encontrado cada
objeto por primera vez, para así agregarlo a la localidad correspondiente.
Nótese que, en cualquier momento del mapeo automático,
es posible acceder a la ventana de propiedades del mapeo automático para así cambiar las preferencias.
¿Cómo hace el mapeo automático para distinguir localidades?
Como hemos mencionado el mapeo automático leerá todo el texto de la transcripción del juego, tratando de encontrar las
descripciones de las localidades. No sólo las respuestas
a los comandos de movimiento.
Esto se hace así para que los comandos de teleportación
(como las palabras mágicas) o los eventos especiales que trasladan a tu
personaje funcionen correctamente.
Las localidades son determinadas al encontrar el encabezado de las mismas (un texto donde todas las palabras de más de cuatro letras están
en mayúsculas – al menos en el modo clásico—o donde el texto sigue el formato especificado, como el caso de Witness/Moonmist).
El párrafo que sigue al encabezado se asume que es la descripción del lugar.
Dependiendo de tus seteos, el mapeador automático tomará más en cuenta la descripción de la localidad o el encabezado
para determinar si cierta localidad ya ha sido visitada.
Limitaciones del Mapeo Automático
Exportando Mapas a Formato Scalable Vector Graphics (SVG)
Nuevo en v1.2 y mejorado en v2.1.0, una facilidad ha sido agregada
para dejarte exportar mapas al formato de Scalable Vector Graphics (SVG)
que puede ser impreso e interactuado usando un web browser.
Cuando haya completado el mapa, cliquee en Archivo->Exportar->Exportar Como SVG... para abrir el panel de opciones de Grabar como SVG.
Hay varias opciones disponibles para customizar la grabación, cada
una con un tooltip que muestra más detalles cuando el cursor del ratón
flota sobre él. El primer set de checkboxes permutan las varias
partes del map que son incluídas, como el Texto de Localidad, el Número
de Localidad, los Commentarios de Sección, etc.
El deslizador del tamaño de la Brújula te permite modificar el tamaño
del gráfico de la brújula incluído en el SVG, o desactivarla completamente. El Grosor de la Localidad y la Conexión cambian el tamaño de las líneas usadas para dibujar las cajas de la Localidad y las líneas de Conexión entre ellas, repectivamente, mientras que la opción del Esquema de Color modifica el color usado para algunos de los items opcionales, incluyendo el menu de Información Interactivo de la Localidad y el Número de la Localidad.
Usted puede elegir entre exportar entre la opción por defecto de exportar todas las secciones del mapa a un solo archivo SVG, exportar todo el mapa a
secciones de archivos SVG individuales o sólo exportar la sección activa a un archivo SVG.
Esta última opción permite dos mas selecciones - si usted marca la opción de Solo Incluir los Elementos Seleccionados, entonces el archivo SVG
tendrá solo esas localidades que han sido seleccionados en la ventana principal. Esto te permite crear un mapa SVG parcial, que puede ser de ayuda a nuevos jugadores.
La última opción - Incluir Todas Las Localidades, Sólo Mostrar el Texto de la Locación para Localidades Seleccionadas Actualmente- imprimirá un mapa
con todas las localidades, pero sólo las localidades seleccionadas
tendrán su Texto de Localidad incluído. Similar a la opción previa,
esto permite la creación de mapas parciales customizados que pueden ser
usados como modelo por nuevos jugadores. Sólo Conexiones que estén
seleccionadas serán mostradas.
Nota: sin importar que opciones estén seleccionadas, la localidad de
comienzo - no. 1 - de un mapa será incluída.
Una vez que haya especificado sus opciones preferidas, cliquée en el botón de OK
y especifique un archivo para grabar el formato SVG.
Si usted abre el archivo SVG en un editor de texto y busca la palabra
UNCOMMENT, encontrará un camino que puede ser descomentado asi:
<!--UNCOMMENT LINE BELOW TO ENABLE mysvgmap.jpg BACKGROUND IMAGE-->
<!--<path d='M5,5 l0,3570 l2400,0 l0,-3570 l-2400,0' fill='url(#backgroundimg)'/>-->
Si usted descomenta esta línea (remueve los marcadores <!--
y -->
del comienzo y final del elemento de camino), re-graba
el SVG y coloca un gráfico JPEG con el nombre del archivo listado en el comentario, e.g. mysvgmap.jpg
en el extracto de ahí arriba,
en el mismo directorio del archivo de SVG exportado, será usado
como una imagen de fondo. Esto permite significante customización del
mapa interactivo. La imagen de fondo debería ser de las mismas
dimensiones que el SVG - use los valores especificados en el elemento
de camino. height: 3570px
y width: 2400px
,
en este ejemplo. Si usted desea usar un archivo o formato de imagen
diferente, simplemente reemplace ambas ocurrencias de el arhivo
existente.
e.j. mysvgmap.jpg
to mysvgmap.png
, en el
archivo SVG.
Creando un Nuevo Juego (Inform/TADS3) game
IFMapper ahora permite grabar un mapa como código
fuente de Inform o TADS3.
Esto significa que podés utilizar a IFMapper para fácilmente crear el esqueleto básico para un nuevo juego.
Con IFMapper, podés colocar los objetos, los personajes y las localidades con sus puertas y salidas.
Luego puedes escribir la descripción de cada localidad.
Para hacer esto, asegúrate de activar el mostrar las descripciones de las localidades con:
Mapa->Representación Visual->Descripción de la Localidad
Puedes luego escribir todas las descripciones de todas las habitaciones y
sus objetos en forma manual. Luego, una vez que tu mapa está
terminado, podés usar:
Archivo->Exportar->Exportar a Inform
Archivo->Exportar->Exportar a TADS3
Estas opciones crearán un grupo de archivos de código fuente de Inform o TADS3 (un archivo por sección del mapa), que puedes compilar inmediamente y comenzar a jugar.
Obviamente, en un juego real, los archivos .inf o .t que obtienes de IFMapper son solo un esqueleto, ya que tendrás que programar la lógica de tu juego.
Apéndices
Soy nuevo en esto de la Ficción Interactiva. ¿Qué juegos me recomendás?
Si hablás ingles y podés obtener una copia (a través de Lost Treasures of Infocom o similar), creo que Wishbringer de Infocom es probablemente uno de los juegos introductorias más lindos.Contactando al Autor
Actualmente, se me puede contactar a través de:
ggarra13 @ dominio
(Donde el "dominio" es gmail.com )