# Z-machine

La Z-machine est une machine virtuelle développée par Joel Berez et Marc Blank en 1979, et utilisée par Infocom pour ses jeux d'aventure textuels.

## Histoire

Le jeu d'aventure textuel Zork fut originellement créé pour les mini-ordinateurs PDP-10, par Dave Lebling et Marc Blank, alors étudiants au MIT. Devant le succès du jeu, qui se répandit via l'Arpanet, ils participèrent à la création d'Infocom, une société de développement de jeux d'aventure textuels. L'idée était d'adapter Zork pour les ordinateurs personnels, mais le jeu original, codé en MDL (en), pesait 1 Mo, ce qui était bien trop lourd pour les micro-ordinateurs de l'époque. Il fut donc divisé en trois parties (Zork I, II et III), et un langage de programmation, le ZIL (Zork Implementation Language) fut créé à partir de MDL.
Afin de pouvoir commercialiser le jeu sur un grand nombre de plateformes et résoudre les problèmes de portabilité, il fut décidé de créer une machine virtuelle, concept relativement nouveau à l'époque, capable de lancer Zork et tout autre jeu codé en ZIL. Le jeu, compilé pour cette machine, pouvait fonctionner sur tout type de micro-ordinateur disposant d'un programme capable d’interpréter correctement les spécifications de celle-ci. C'est ainsi que les jeux Infocom sortirent sur un grand nombre de micros nord-américains (Atari 400/800, CP/M, IBM PC, TRS-80 Model II et III, NEC APC, DEC Rainbow, Commodore 64, TI Professional, DECmate, Tandy-2000, Kaypro II, Osborne 1, MS-DOS, TI 99/4A, Apple Macintosh, Epson QX-10, Apricot, Atari ST, Amiga ; on peut noter l'absence de l'Amstrad CPC ou l'Oric, plus populaires en Europe.
Plusieurs versions de la Z-machine furent développées par Infocom pendant les années 1980. La version 3 vit le jour en 1982, et permettait de jouer à des jeux n'excédant pas 128 Ko ; les jeux développés pour cette version étaient ceux de la série « Standard ». La version 4 vit le jour en 1985, avec A Mind Forever Voyaging, Trinity, et d'autres jeux de la série « Plus ». La version 5 apparut en 1987 avec Beyond Zork, et introduisit de nouvelles fonctionnalités et opcodes qui enrichissent la Z-machine (jeux de 256 Ko ou effets temporels).
Activision ayant racheté Infocom et voyant les ventes ralentir, voulut augmenter le rythme de production et la rentabilité. Ce qui conduisit à l'implantation de nouvelles fonctionnalités, pas forcément très heureuses, dépassant le cadre des jeux purement textuels. La version 6 de la Z-machine vit le jour en 1988, et ajouta des capacités graphiques et la gestion de la souris, ce qui l'éloignait des jeux Infocom traditionnels ; seulement quatre jeux sortirent avant la fermeture du studio.

## Scène amateur

Au début des années 1990, Graham Nelson créa le langage de programmation Inform. Destiné à la conception de jeux d’aventure textuels, le compilateur est capable de produire un bytecode (Z-code) interpretable par la Z-machine. La version 6 d’Inform, associée à des bibliothèques – fonctions qui étendent le langage – stables et performantes, a facilité et rendu possible la création de nombreux jeux amateurs ou professionnels (Galatea, Spider and Web, Photopia, etc.)
Afin de lever certaines limitations de la Z-machine, Andrew Plotkin conçut la machine virtuelle Glulx (en). Capable de gérer des données et des adresses 32 bits, de supporter des jeux d’un poids supérieur à 512 Ko, elle permet aussi l’intégration de contenu multimédia dans les jeux. Le compilateur Inform est capable de produire du code pour la machine virtuelle Glulx ; ce qui fait de celui-ci une alternative à la Z-machine, dont les limitations ne permettent pas d’interpréter les jeux compilés avec la dernière version du langage, Inform 7.
Il est toujours possible d'écrire des jeux pour la Z-machine, en utilisant le langage Inform 6, ZIL, Dialog, etc.

## Interpréteurs Z-machine

Il existe de nombreux interpréteurs capables d’émuler le fonctionnement de la Z-machine. Ils permettent de jouer aux jeux les plus récents comme à ceux – anciens mais encore très populaires – d’Infocom, avec le confort des machines modernes.
L'interpréteur historique, des jeux Infocom et de ceux créés pour Z-machine, est Frotz ; un logiciel libre écrit en C, disponible sur une grande variété de plateformes : Windows (Windows Frotz), Mac, Unix, iOS, Palm OS, mais aussi Kindle, Game Boy Advance ou Raspberry Pi. L'interpréteur Parchment, écrit en JavaScript, permet de jouer dans un navigateur web.
Il existe aussi des interpréteurs sur mobile (iOS et Android), iRC (Grue), pour de vieux micro-ordinateurs (Zeugma, permet de jouer à certains jeux Z-machine sur un Commodore 64) ou des calculatrices scientifiques (Foblub pour TI-89) ; mais également, de façon plus inattendue, pour Arduino (Zorkduino) ou même pour stylos Livescribe.
En 2014 la Z-machine a été implantée en hardware (pour la première fois, s'agissant d'une machine virtuelle), sur FPGA.