Glulx e Inform Glulx En sus pantallas gracias a la letra En sus pantallas gracias a la letra Glk

Glk

Hay una tremenda cantidad de lenguajes para ACs, cada uno con su propia máquina virtual, y aún más están siendo creados. Hay también un buen montón de plataformas ahí afuera, y nuevo hardware y nuevos sistemas operativos están apareciendo también a un ritmo nada desdeñable. Esto ha traido un problema que debería sonar bastante familiar si has leído los apartados previos. Cada vez que un nuevo sistema para ACs aparece, es necesario escribir un intérprete para cada una de las plataformas en las que se quieran jugar los juegos creados con ese sistema: Windows, DOS, Mac, Acorn, Amiga, BeOS, Unix, y muchos muchos más. Y cada vez que una nueva plataforma en la que podrían jugarse ACs aparece -digamos que la gente quiere jugarlas desde dentro de un MUD, o a través de un teléfono móvil conectado a Internet- la nueva plataforma necesita un intérprete Z, y un íntérprete TADS, y un intérprete Hugo, y un intérprete ALAN, y así seguiríamos. Más aún, una buena parte del trabajo necesario para escribir un intérprete, es esfuerzo malgastado. Mira, un intérprete tiene que hacer dos cosas más o menos independientes: procesar datos - parsear, mantener el estado de los objetos del juego, cosas así - y entrada/salida (abreviado como E/S, o en inglés I/O), que se ocupa de cómo debe mostrarse el texto que el programa ordena imprimir. Y salvo pocas excepciones (de las que nos ocuparemos en breve), la parte de proceso de datos no se preocupa de la parte de E/S. Simplemente la dirá a la parte de E/S "eh, imprime estas tres frases" (bueno, se lo dirá en código máquina), pero a la parte que procesa datos no le importa si esas frases aparecen con un tipo de letra caprichoso en una ventana gráfica con barras de scroll. De igual forma, la parte que se ocupa de la E/S sólo debe preocuparse de mostrar el material que le han ordenado mostrar. No le interesan los algoritmos por los que la parte de proceso de datos ha llegado a su decisión de qué imprimir. Sólo se interesa de imprimirlo realmente. Esto significa que, mientras que la parte de proceso de datos de todos los intérpretes de máquina Z será prácticamente idéntica, la parte de E/S variará drásticamente: el Frotz de DOS, diseñado para ser usado en un entorno en el que no hay posibilidad de varios tipos de letra, requiere unas rutinas para imprimir texto muy diferentes de las de WinFrotz. Y de forma similar, mientras que la parte de proceso de datos de diferentes intérpretes para Mac será bastante diferente - TADS e Inform y AGT y otros, simplemente no manejan los datos de la misma forma - en cambio la parte del intérprete que maneja el "look and feel", es decir la E/S, será muy similar, con independencia de qué máquina virtual esté siendo usada. Pero ya que hay que crear cada posible par, el trabajo acaba siendo repetido muchas veces. Permitanme presentarles Glk. Glk es un intento de hacer todo este trabajo más eficiente, separando las dos funciones del intérprete de ACs tradicional. Lo hace definiendo unas cuantas rutinas, escritas en el lenguaje C de programación, y recopiladas en la librería Glk. Los programadores familiarizados con el C pueden escribir aplicaciones Glk, que hagan sus cálculos y proceso de datos, y generen sus resultados en una forma que Glk pueda comprender, y librerías Glk (también llamadas "implementaciones de Glk") que adapten las funciones Glk para una plataforma concreta: WinGlk, XGkl, MacGlk, etc. El escritor de intérpretes ve reducido su trabajo a juntar las aplicaciones con las librerías. Si no está aún clara la utilidad de todo esto, miralo de esta otra forma. Digamos que en lugar de intentar llevar los lenguajes de ACs a las diferentes plataformas, lo que estamos intentando construir es un sistema ferroviario para llevar gente desde varios lugares de la costa oeste de los Estados Unidos - Seattle, Portland, San Francisco, Los Angeles, etc. - a ciudades en la costa este: Boston, Nueva York, Filadelfia, Washington, etc. El método anterior a Glk de líneas directas significaría construir vías desde Seattle a Boston, de Seattle a Nueva York, de Seattle a Filadelfia, etc. y después de Portland a Boston, de Portland a Nueva York, etc. Si quisieramos añadir una nueva ciudad de partida, sería necesario construir un conjunto nuevo de vias: San Diego a Boston, San Diego a Nueva York, etc. Y lo mismo ocurriría si añadimos un destino nuevo: tendríamos que construir de Seattle a Miami, de Portland a Miami, de San Francisco a Miami, etc. Lo que hace Glk es crear un centro. En nuestro ejemplo, digamos que es Omaha (Nebraska). Así, en lugar de construir vías directamente desde cada origen a cada destino, construimos de Seattle a Omaha, Portland a Omaha, San Franciso a Omaha, etc. y después de Omaha a Boston, Omaha a Nueva York, etc. Esto reduce drásticamente el número de vías que tenemos que construir. Y si aparece una nueva ciudad de origen, sólo tenemos que construir una vía: San Diego a Omaha. ¿Un nuevo destino? Una vía: Omaha a Miami. Y la gente que venga desde San Diego, hará transbordo en Omaha y llegará a cualquier destino, y la gente que venga desde cualquier origen en la costa oeste, puede hacer transbordo en Omaha y llegar a Miami. Así que pongamos que alguien escribe un nuevo lenguaje para hacer ACs, llamado ABC. No se necesita escribir intérpretes para ABC-Windows, ABC-Mac, ABC-Palm; en lugar de esto, simplemente escribe un intérprete ABC-Glk y todo el mundo en todas las plataformas para las que existan librerías Glk, podrán jugar juegos ABC. De forma análoga, si Toaster Technologias construyera el Cybertoaster, basta escribir una librería Glk-para-Cybertoaster, y ya tenemos instantáneamente al Cybertoaster preparado para jugar juegos Inform, TADS, Hugo o juegos de cualquier otro sistema para el cual exista un intérprete basado en Glk. Todo lo que los usuarios de Cybertoaster necesitan hacer es enlazar esos intérpretes con las librerías Glk para Cybertoaster. Puede que te preguntes: los intérpretes basados en Glk, toman la salida de las máquinas virtuales y la conviertene en algo que Glk pueda comprender. ¿Hay alguna máquina virtual cuya salida ya esté preparada para Glk sin requerir conversiones? La respuesta: puedes apostar que sí. Eso es Glulx.
Glulx e Inform Glulx En sus pantallas gracias a la letra En sus pantallas gracias a la letra Glk