El blog personal de Morgul, donde escribe sobre sus aficiones, descubrimientos y actividades, compartiendo conocimientos.

19 de enero de 2010

Código fuente de IMaZMor liberado

Así es, he liberado recientemente (hace un par de días) el código fuente de IMaZMor, cuyo nombre viene de 'Intérprete de Máquina-Z de Morgul'. Es decir, mi intérprete de Máquina-Z, el único que he hecho yo (hasta la fecha).

Para quien no lo sepa, la Máquina-Z es una máquina virtual diseñada por la compañía estadounidense Infocom, para soportar la ejecución de aventuras conversacionales (llamadas típicamente ficción interactiva por los angloparlantes) independientemente de la plataforma física, a través de intérpretes de esta máquina virtual para cada plataforma que se quiera soportar.

Pues bien, IMaZMor es un intérprete de Máquina-Z para dispositivos móviles, concretamente para la plataforma J2ME, para dispositivos que soporten el perfil MIDP 1.0 ó superior.

Aquí podéis ver un par de capturas de IMaZMor ejecutando 'Wishbringer: The Magick Stone of Dreams', aventura de Infocom:



De momento, está lejos de ser una implementación completa, soporta un subconjunto de las instrucciones de dicha máquina virtual, y sólo permite ejecutar aventuras de la versión 3 de la Máquina-Z. Esto limita bastante la actual utilidad de este intérprete, ya que la mayor parte de las aventuras conversacionales para Máquina-Z publicadas hoy en día, son para la versión 5 de la máquina.

La mayor fuente de aventuras para la versión 3 de la Máquina-Z que se puede encontrar, son las recopilaciones de antiguos clásicos (de la década de los 80) de Infocom, que todavía siguen comercializándose pero también pueden adquirirse de segunda mano, como: 'The Comedy Collection', 'The Fantasy Collection', 'The Mystery Collection' y 'The Sci-Fi Collection'.

El código fuente de IMaZMor lo he liberado bajo la licencia GNU General Public License versión 2, y lo he publicado en un repositorio Git en Gitorious, donde ya alojé otros proyectos. La dirección del repositorio de IMaZMor es: http://gitorious.org/imazmor

Con esta acción, ahora cualquiera tendrá libre acceso al código fuente de este intérprete de Máquina-Z, igual que ya se hizo con otros intérpretes anteriores para J2ME, como ZeeME o Z2me. Ahora ya no cabe la posibilidad de que pierda el código de esta creación mía, y a la vez otros podrán colaborar conmigo en su desarrollo, o simplemente divertirse mientras la prueban.

Las herramientas necesarias para que podáis compilar vosotros mismos IMaZMor son: el Java Wireless Toolkit versión 2, de Sun Microsystems; y el preprocesador de C de GNU: CPP. Como explicaré en otra entrada, CPP lo utilizo como preprocesador para el código Java, permitiendo el uso de constantes de preprocesador y de compilación condicional, lo cual resulta en un ejecutable del programa más pequeño y eficiente.

Otra captura de IMaZMor en acción, esta vez mostrando el inicio de 'Ballyhoo':


Aprovechando que tengo otro teléfono móvil, uno que tiene pantalla táctil pero no tiene teclado ni botones, tengo en mente añadirle en un futuro próximo las siguientes características:
  • Soporte de impresión en modo gráfico (en principio, solamente con una fuente de tamaño fijo, ya que es más fácil de implementar), detectando la resolución de la pantalla. Hasta ahora, IMaZMor escribía los textos usando un formulario J2ME, pero esta característica de J2ME es tan limitada que no admite un scroll de texto adecuado y predecible, y tampoco permitía poner la línea de estado más que como título del formulario.
  • Scroll de texto funcional, que guarde las líneas de texto anteriores para poder verlas de nuevo y, sobre todo, que se espere en caso de llenarse la pantalla (de momento, lo que ocurre depende de cómo implementa Java cada teléfono, por lo general, o se queda al principio del todo siempre, o al final del todo en todo caso).
  • Soporte de pantallas táctiles. Al menos, mi intención es permitir que se pueda hacer scroll del texto de la aventura pulsando sobre la pantalla. Sobre permitir la entrada de órdenes de manera táctil también, ya veremos, lo haré según su dificultidad. Probablemente lo más sencillo sea implementar un teclado virtual, en caso de que no haya ninguna otra forma de entrada funcional para mi teléfono. Si implementara algo como T9, estaría bien utilizar el diccionario de la propia aventura para el completado.
Si hacéis alguna adaptación de este programa, haciendo cambios sobre el código, y queréis compartir vuestra versión modificada, agradecería que compartiérais el código primero conmigo, para así añadirlo al repositorio y que todos puedan aprovecharse de vuestras aportaciones.

¿Te ha gustado esta entrada? Vótala en Bitacoras.com: Votar

No hay comentarios: