La máquina Z es una máquina virtual que fue desarrollada por Joel Berez y Marc Blank en 1979 y utilizada por Infocom para sus juegos de aventuras de texto . Infocom compilaba el código del juego en archivos que contenían instrucciones de la máquina Z (llamados archivos de historia o archivos de código Z) y, por lo tanto, podía trasladar sus aventuras de texto a una nueva plataforma simplemente escribiendo una implementación de la máquina Z para esa plataforma. Con la gran cantidad de sistemas informáticos domésticos incompatibles que se utilizaban en ese momento, esto era una ventaja importante sobre el uso de código nativo o el desarrollo de un compilador para cada sistema.
La "Z" de Z-machine representa a Zork , el primer juego de aventuras de Infocom. Los archivos Z-code suelen tener nombres que terminan en .z1, .z2, .z3, .z4, .z5, .z6, .z7 o .z8, donde el número es el número de versión de la máquina Z en la que se pretende ejecutar el archivo, tal como lo indica el primer byte del archivo de la historia. [1]
Sin embargo, se trata de una convención moderna. Infocom utilizaba las extensiones .dat (Data) y .zip (ZIP = Z-machine Interpreter Program), pero esta última chocaba con el uso generalizado de .zip para archivos de almacenamiento compatibles con PKZIP a partir de los años 90, después de que Activision cerrara Infocom. Infocom produjo seis versiones de Z-machine. Los archivos que utilizan las versiones 1 y 2 son muy raros. Solo se sabe que Infocom publicó dos archivos de la versión 1 y solo dos de la versión 2. La versión 3 cubre la mayoría de los juegos publicados por Infocom. Las versiones posteriores tenían más capacidades, que culminaron en cierto soporte gráfico en la versión 6.
El compilador (llamado Zilch) que Infocom utilizó para producir sus archivos de historias nunca fue publicado, aunque todavía existe documentación del lenguaje utilizado llamado ZIL , un lenguaje de la familia Lisp similar a MDL , y se ha escrito un reemplazo de código abierto "ZILF" [2] . Después de que Mediagenic trasladara Infocom a California en 1989, Computer Gaming World declaró que "ZIL... está funcionalmente muerto", e informó sobre rumores de un "analizador completamente nuevo que tal vez nunca se use". [3] En mayo de 1993, Graham Nelson publicó la primera versión de su compilador Inform , que también genera archivos de historias de la máquina Z como salida, aunque el lenguaje fuente de Inform es bastante diferente de ZIL.
Inform se ha vuelto popular en la comunidad de ficción interactiva . Una gran proporción de ficción interactiva se presenta en forma de archivos de historias de la máquina Z. La demanda de la capacidad de crear archivos de juego más grandes llevó a Nelson a especificar las versiones 7 y 8 de la máquina Z, aunque la versión 7 rara vez se utiliza. Debido a la forma en que se manejan las direcciones, un archivo de historia de la versión 3 puede tener una longitud de hasta 128K, una historia de la versión 5 puede tener una longitud de hasta 256K y una historia de la versión 8 puede tener una longitud de hasta 512K. Aunque estos tamaños pueden parecer pequeños para los estándares informáticos actuales, para aventuras de solo texto, son lo suficientemente grandes para juegos elaborados.
Durante la década de 1990, Graham Nelson elaboró un estándar Z-Machine basado en estudios detallados de los archivos Infocom existentes. El estándar también incluye extensiones utilizadas por sus versiones más nuevas, así como enlaces al formato de recursos " Blorb " utilizado por Infocom y un formato de archivo de guardado " Quetzal ". [4] En 2006, Nelson amplió Z-Machine al formato Glulx de 32 bits para Inform 7. La Interactive Fiction Technology Foundation , fundada en 2016, administra todos estos estándares. [5]
El ZIL se basa en el MDL del MIT. Aquí está la definición de la linterna de bronce de Zork I:
<OBJETO LINTERNA ( LOC SALA DE ESTAR ) ( SINÓNIMO LÁMPARA LINTERNA LUZ ) ( ADJETIVO LATÓN ) ( DESC "linterna de latón" ) ( BANDERAS TAKEBIT LIGHTBIT ) ( ACCIÓN LINTERNA-F ) ( FDESC "Hay una linterna a batería en la vitrina de trofeos." ) ( LDESC "Aquí hay una linterna de latón (a batería)." ) ( TAMAÑO 15 ) >
En una publicación de blog de 2019 de Andrew Plotkin se presenta un ejemplo más complejo que involucra combate, junto con su equivalente MDL Zork. Cabe destacar que la máquina Z no tiene soporte para recolección de basura y ZIL no tiene el concepto del sistema de listas de Lisp. [6]
Los intérpretes para archivos Z-code están disponibles en una amplia variedad de plataformas. El sitio web Inform incluye enlaces a intérpretes disponibles gratuitamente para 15 sistemas operativos de escritorio (incluidos microordenadores de 8 bits de la década de 1980, como Apple II , TRS-80 y ZX Spectrum , y agrupando "Unix" y "Windows" como uno solo cada uno), 10 sistemas operativos móviles (incluidos Palm OS y Game Boy ) y cuatro plataformas de intérpretes (Emacs, Java, JavaScript y Scratch). Según Nelson, es "posiblemente la máquina virtual más portátil jamás creada". [7]
Entre los intérpretes más populares se encuentran Nitfol y Frotz. Nitfol utiliza la API Glk y es compatible con las versiones 1 a 8 de la máquina Z, incluida la versión 6 de la máquina Z gráfica. Los archivos guardados se almacenan en el formato de guardado estándar de Quetzal . Los archivos binarios están disponibles para varios sistemas operativos diferentes , incluido el clásico Mac OS , sistemas similares a Unix , DOS y Windows . [8]
Frotz fue escrito en C por Stefan Jokisch en 1995 para DOS. Con el tiempo fue portado a otras plataformas, como sistemas tipo Unix , [9] RISC OS , [10] e iOS . [11] Los efectos de sonido y los gráficos fueron soportados en diversos grados. Para 2002, el desarrollo se estancó y el programa fue retomado por David Griffith. La base de código fue dividida entre la máquina virtual y las porciones de interfaz de usuario de tal manera que la máquina virtual se volvió independiente de cualquier interfaz de usuario. Esto permitió una mayor variedad en la portabilidad de Frotz. Una de las portaciones más extrañas es también una de las más simples: un bot de mensajería instantánea se envuelve alrededor de una versión de Frotz con la mínima funcionalidad de E/S creando un bot con el que uno puede jugar la mayoría de los juegos de Z-machine usando un cliente de mensajería instantánea. [12]
Otro cliente popular para macOS y otros sistemas similares a Unix es Zoom. [13] Admite el mismo formato de guardado Quetzal , pero el empaquetado de la estructura de archivos es diferente.