Aujourd’hui, un sujet technique, mais qui devrait ravir les gens qui s’intéressent à l’abandonware. Je vais vous parler du format d’histoires utilisé par Inform, et pourquoi ça veut dire que vous (oui, vous !) pouvez créer en un clic des nouveaux jeux qui marchent aussi bien sur Android que sur l’Amiga, sur iOS ou sur Apple II !

La Z-machine

Je vous fait la version courte ; si vous voulez en savoir plus, je vous encourage à lire la page Wikipédia sur la Z-machine (que j’ai écrite, au passage…).

Dans les années 80, le marché du jeu vidéo était fragmenté en une dizaine de micro-ordinateurs, chacun avec ses spécificités, et incompatibles entre eux : les jeux disponibles pour Commodore 64 n’étaient pas disponibles pour Oric, ou Apple II, à moins que le développeur décide de recoder le jeu (plus ou moins) pour qu’il tourne sur ceux-ci.

De nos jours, on n’a pas ce problème : un créateur de jeux vidéo n’a pas besoin de faire une version pour les HP et une autre pour les Toshiba : le système d’exploitation, comme Windows ou Linux par exemple, unifie la façon dont les ordinateurs marchent. Mais il nous reste quand même un petit nombre de plateformes incompatibles entre elles (Windows, macOS, Linux, Android, iOS, etc.). De nos jours, les développeurs ont des outils pour produire des versions de leur jeu adaptées à chaque environnement, mais à l’époque, beaucoup moins.

Infocom, l’entreprise majeure dans le domaine de la fiction interactive, dont les jeux sont la référence pour les anglophones, est parvenue à sortir tous ses jeux pour plus d’une dizaine de micro-ordinateurs différents. Comment ont-ils fait ? Leur solution a été de créer une « fausse machine », une machine virtuelle, la fameuse « Z-machine », et de coder leurs jeux pour cet ordinateur virtuel. (La Z-Machine n’est donc pas un objet physique, juste un objet théorique !) Ensuite, il leur a suffit d’écrire un programme pour Apple II qui se comporte comme la Z-machine, puis un programme pour l’Atari ST qui se comporte comme la Z-machine, et ainsi de suite. Une fois ces programmes écrits, ils n’y touchent plus, ils créent leur jeu en format Z-machine, qu’ils mettent sur des disquettes (qui ne change pas), en plus du programme correspondant au micro-ordinateur visé !

Quelques années plus tard, lorsque Graham Nelson a créé le langage de programmation Inform (qui sert à créer des jeux similaires — même qu’on a plein de tutos sur notre site !), il s’est assuré que le format de sortie était la Z-machine : tout le monde pouvait écrire des jeux dans le même format que celui d’Infocom !

Traducteur de machines

Le fait qu’Inform permette d’obtenir un fichier de jeu Z-machine veut dire qu’en théorie, un jeu que vous avez codé avec Inform peut tourner sur les mêmes micro-ordinateurs que ceux visés par Infocom. Il suffit de récupérer le programme pour ce micro-ordinateur qui se comporte comme une Z-machine : le mot technique est « interpréteur » (même si c’est une mauvaise traduction de l’anglais interpreter, qui veut dire « traducteur/interprète »). Par exemple, certaines personnes ont réussi à extraire l’interpréteur qu’Infocom avait écrit pour l’Apple II et à s’en servir pour faire des disquettes qui lancent leur propre jeu sur Apple II. Idem pour le Commodore 64 — et même, encore mieux, quelqu’un nommé Linus Akesson a recodé son propre interpréteur, Zeugma, qui va plus vite et permet de lancer des jeux plus gros que celui d’Infocom. On peut également lancer les jeux sur Amiga, avec Frotz.

Et ça, c’est assez incroyable ! Ça veut dire que vous pouvez télécharger Inform 6 sur notre site, suivre nos tutos, faire un petit jeu, suivre les instructions ci-dessus, copier tout ça sur la bonne disquette, remonter au grenier de chez vos parents, trouver le vieil ordinateur poussiéreux des années 80, mettre votre disquette dedans, et votre jeu se lance ! Ensuite vous pouvez remonter dans le temps et vendre votre jeu (où le personnage a un iPhone et mange des kebabs) pour 300 FF sans problème. Blague à part, les FI sont à ma connaissance le seul type de jeu vidéo que l’on peut facilement créer nous-même et faire tourner sur tout un tas de machines anciennes !

Par contre ça ne sera jamais possible sur certaines (très) vieilles machines, vu qu’un jeu requiert jusqu’à 256 ko de place, voire 512 pour les jeux .z8. Et toutes les machines ne sont pas concernées : il n’existe pas d’interpréteur pour Amstrad CPC ou pour Oric par exemple (même si quelqu’un pourrait toujours s’amuser à en coder un aujourd’hui).

Mais il y a mieux que les interpréteurs pour vieilles machines. Déjà, notons qu’il existe des interpréteurs pour nos systèmes actuels : vous pouvez jouer à la même fiction interactive sur Windows, Mac, et Linux avec Gargoyle, ou sur iOS (Frotz) et Android (Text Fiction) — et ce, sans que l’auteur ait eu besoin de faire quoi que ce soit. Vous pouvez même y jouer dans votre navigateur grâce à Parchment, l’interpréteur JavaScript qui nous permet d’avoir des boutons « Jouer au jeu en ligne » sur notre site. Et en fait, tant qu’un appareil permet d’afficher du texte, vous pouvez coder un interpréteur qui lance des FI sur cet appareil ! On peut ainsi jouer à vos jeux sur un Raspberry Pi, sur un stylo LiveScribe, ou même, grâce à mon collègue Natrium729, tous ensemble sur notre salon Discord !!

Les limites de la machine

Il y a quelques limitations à ce que je viens de vous dire. La première est celle des formats : la plupart des plateformes peuvent jouer à des jeux correspondant à la version 5 de la Z-machine, dont la taille est limitée à 256 ko ; certains (mais peu de vieilles machines) prennent en charge la version 8, qui va jusqu’à 512 ko. Ces formats correspondent à des jeux Inform 6, respectivement de taille moyenne ou très grande. Mais Inform 7, qui se base sur une approche différente, génère beaucoup plus de code (et ça ne s’arrange pas avec les versions) ; en conséquence, il y a quelques années, l’équipe d’Inform 7 a annoncé abandonner la possibilité de créer des jeux pour la Z-Machine (utilisant un autre format, Glulx, à la place), sauf pour de très très petites fiction interactives. En clair, si vous voulez faire des jeux pour des vieux ordinateurs, il faut passer par Inform 6.

La deuxième limitation est malheureusement celle des accents… C’est celle qui m’embête le plus pour tout dire. La Z-machine (en tout cas, la version Inform — j’avoue que ça n’est pas très clair) est capable d’afficher les accents, mais la plupart des interpréteurs ne les prennent pas en charge… Mettez votre jeu dans un interpréteur pour vieux ordinateurs et il y a des chances que les accents soient illisibles, et votre jeu aussi ! C’est dommage, et c’est une combinaison de « les vieilles machines sont limitées » et « les anglophones s’en fichent »… Espérons qu’un jour ça soit résolu !

Je termine cet article par un rêve, et un défi pour vous. Les premiers ordinateurs n’avaient pas d’écran, et le résultat et le texte étaient imprimés sur du papier ; c’est comme ça que les gens jouaient à Adventure dans les années 1970. Mon rêve serait d’avoir un système similaire, en couplant un Raspberry Pi avec une imprimante thermique (celles qui impriment les tickets de caisse) ; il y a un tutoriel pour faire quelque chose de similaire sur Internet. Je pense que l’on peut prendre un Raspberry Pi (modèle 3 avec WiFi par exemple), y faire tourner une Z-Machine qui donne le texte sur la sortie usuelle (avec les accents…), puis rerouter la sortie vers l’imprimante thermique pour que ça soit imprimé immédiatement. La façon de communiquer avec le Raspberry Pi est à préciser : par Twitter,  par une application spéciale, en envoyant un courriel, n’importe. J’annonce que je suis prêt à offrir un prix, disons de 50 € pour l’instant, à quiconque me fera un tutoriel avec les bons scripts qui font tout ! (En plus de ce prix, nous publierons le tuto ici, et en parlerons autour de nous — personnellement je pense que ce genre de dispositifs peut intéresser les bibliothécaires et les enseignants !)

À vous !