Canal de Noticias del equipo INFSP y asuntos técnicos relacionados

sábado, 11 de julio de 2009

Glk and all the stuff

Es (estre|intere)sante darse una vuelta de vez en cuando por la raif . La masa critica guiri con frecuencia produce nuevas herramientas relacionadas con lo conversacional (no puedo ocultar mi tendencia tool-lover).

Este es el turno de (casi) java: GlkJNI es una implementación de la API GLK escrita en C que utiliza JNI (Java Native Interface). (qué diablos es glk linkeado al fondo)

¿Las posibilidades? Con glkJNI, un emulador de la máquina glulx o Z escrito en C (y que use glk) puede utilizar Java como interface I/O, lo que incluye la interfaz gráfica. Ejemplo: se podria conectar el típico intérprete glulxe (glulx+glk) de D Kinder o el correcaminos intérprete Demona (Z+glk) de J McGrew con una interfaz de usuario hecha en java.
¿Es una patada a la portabilidad pregonada por java? Lee mis labios.
De todas maneras, con esto se deja de lado la lentitud de un intérprete escrito puramente en java y se reutiliza el trabajo de los muchachos que vienen puliendo sus emuladores por meses.
Por cierto, esto también pica la curiosidad para ese autor de aventuras que quiere una interfaz de jugador más conectada con la historia que está pergeniando (y que además tiene un amig@ con dotes javaticos).
Otra cosa: el autor de glkJNI (por injerencia aguda de nuestro mapache) tiro la idea de que le gustaría avanzar en el porting de glk para Android....

GlkJNI fue anunciada ayer por Edward McCardell y tiene licencia GNU General Public License v3. Desde su repositorio en gcodes puede bajarse la implementacion en su version actual (0.6) y una minimalista demo.
Nota: Ya existia una implementacion glk-JNI del 2002.


Hablando de implementaciones glk; me preguntaba qué otras implementaciones habrían dando vueltas por alli. Aqui va un listado rápido:

* CocoaGlk, de Andrew Hunter. Implementacion glk para Mac OS X. Usada por Zoom y por el intérprete embebido de I7 para Mac.
* WindowsGlk, de David Kinder. Implementacion glk para Windows. Usada por WinGlulxe y por el intérprete embebido de I7 para Windows.
* GarGlk, de Tor Andersson. Implementacion glk escrita en C para Windows y Linux. Usada por la suite Gargoyle, que la adopta como I/O de todos sus intérpretes (frotz, nitfol, hugo, alan, git, glulxe, etc).
* CheapGlk, de Andrew Plotkin. Implementacion liviana glk escrita en C para Windows y Linux. Es usada por cheapglulxe y por ende -creanlo amigos- Rebot.
* GlkJNI, de Edward McCardell. Escrito en C usando JNI. Permite el core del emulador en C y la I/O en java.
* GlkOte, de Andrew Plotkin. (casi) una implemetacion en Javascript analoga a la api glk, pero adaptado al ambiente de desarrollo web.
* Pocket Glk, de Stark Springs. Implementacion glk para Windows CE (Pocket PC).
* Glk.java, de Jon Zeppieri. Implementación glk en java. Es usada en el intérprete glulx (escrito en java) Zag. La librería es parte del paquete Zag, dentro de la clase org.p2c2e, con licencia tipo BSD.

Al margen del sitio oficial de glk, existe un muy recomendable artículo sobre el tema glk aqui.

La inciativa FyreVM (de la casa TextFyre) reniega de la api glk y utiliza su propia API I/O basada en una filosofia de flujo de datos, o "canales i/o", entre la maquina virtual FyreVM (basada en glulx, pero escrita en C#) y la interface de jugador (cualquier cosa hecha para el framework .Net).

6 comentarios:

mapache dijo...

Hola Sarganar,

Pues parece que mi comentario ha encendido la chispa y el intérprete glulxe para android está avanzando con dos desarrolladores metiendo horas (lo cual es mucho en este ámbito)

Saludetes
Mapache

Sarganar dijo...

notable, siga extendiendo vuestro control mental a esos territorios...

El Clérigo Urbatain dijo...

¿No te has dejado 2 olvidadas? La implementación de Textfyre y la del intérprete en Java ZAG, que también tiene su propia versión derivada de Glk :P

Sarganar dijo...

gracias por apuntarmelo (no recordaba a zag).

Respecto a Textfyre, no se trata de glk. Ellos usan su propia API (o lo que es lo mismo: otra API). No es derivacion o variacion, es sustitucion.

"FyreVM does not use Glk as its primary I/O layer. This is by design and not a specific limitation. You could alter the Shared Source FyreVM source code to accommodate a Glk I/O layer. Our implementation uses a Channel I/O layer." - from TextFyre site

Eliuk Blau dijo...

Por cierto, GarGlk no es de Ben Cressey. Es de Tor Andersson.

Ben Cressey es el "mantenedor" actual de Gargoyle. =)

Buen artículo! =)

Sarganar dijo...

gracias por la correccion.

Etiquetas

>>Buscar en este blog

>>Foro