Zork et Z-Machine: comment les développeurs ont transféré le jeu des mainframes aux ordinateurs personnels 8 bits


Les jeux informatiques existent presque autant que les ordinateurs eux-mêmes. Bien que cela soit difficile à croire, l'aventure texte de Zork était la Fortnite de son temps. Mais Zork était aussi quelque chose de plus. Dans un souci de portabilité et d'économie d'espace, Zork lui-même a été écrit dans le langage d'implémentation Zork (ZIL), qui utilisait activement le tout nouveau concept de programmation orientée objet de l'époque, et a été exécuté sur une machine virtuelle. Et tout cela s'est produit en 1979. Les développeurs ont utilisé toutes sortes de trucs pour intégrer autant d'Underground Empire que possible dans des ordinateurs qui n'avaient que 32 Ko de RAM. Cependant, Zork n'était pas seulement une percée technologique, mais également une étape majeure dans l'histoire des jeux informatiques. En même temps, il n'est pas sorti de zéro.


Module de puce informatique DEC PDP-10

La révolution informatique a commencé pendant la Seconde Guerre mondiale, et dans les années 50 et 60 ne pensait pas s'arrêter. Des systèmes informatiques de plus en plus accessibles pour les entreprises et les universités sont apparus à la vente. Le Massachusetts Institute of Technology (MIT) Laboratory of Computer Science (LCS) a eu la chance d'être affilié à l' ARPA , qui a fourni au LCS et au MIT Artificial Intelligence Laboratory (anciennement partie du projet MAC ) d'importantes ressources informatiques , principalement fournies par les systèmes DEC PDP .

En conséquence, les étudiants du groupe de modélisation dynamique du MIT (pièces LCS) ont eu accès au mainframe PDP-10 KA10, la machine la plus puissante de l'époque. Bien que ce PDP-10 particulier soit le modèle original de 1968 avec des modules de transistors Flip Chip discrets et un câblage enveloppant, il a été fortement modifié : il a ajouté la prise en charge de la mémoire virtuelle et des pages de mémoire pour étendre les 1152 Ko de mémoire du noyau d'origine.

L'ordinateur exécutant le système d' exploitation à temps partagé incompatible (ITS) développé dans le MIT était un système multi-utilisateur hautement fonctionnel.

Naturellement, il était principalement utilisé pour jouer à des jeux.

Êtes-vous prêt pour l'aventure?


Au printemps 1977, un jeu appelé Colossal Cave Adventure (ou «Adventure» en abrégé) est apparu sur MIT. Ce jeu a été le premier jeu informatique du genre fiction interactive , permettant au joueur de faire un voyage texte à travers un grand système de grottes, qui, selon les rumeurs, regorgeait de trésors. Presque comme dans les livres «Choisissez votre aventure» , le joueur fait son choix, qui le déplace à travers les pièces de la grotte, et par conséquent, soit découvre le trésor et s'échappe, soit rencontre sa mort prématurée.

Inspiré par ce jeu, un groupe d'étudiants LCS s'est rendu compte qu'ils pouvaient dépasser ce projet de Stanford. Le principal point faible d'Aventure s'est avéré être écrit en FORTRAN, une langue qui n'était pas célèbre pour son bon travail avec du texte dynamique, en particulier pour les besoins d'un jeu du genre fiction interactif. En substance, Adventure était complètement codé en dur dans le code, ce qui limitait la flexibilité et compliquait l'extensibilité et le support du jeu.

Dans Adventure, chaque chambre avait un ID numérique, auquel la description dans le tableau était associée. Un autre tableau lui a demandé une brève description. Dans un autre tableau, à l'aide d'ID numériques, l'emplacement des pièces par rapport aux autres pièces a été répertorié. Cela signifiait que pour ajouter une salle, vous deviez éditer manuellement toutes ces tables et faire attention afin de ne pas causer de problèmes avec ces changements.

Compétition de hackers



En utilisant l'expérience de travail avec les langues naturelles disponibles dans les laboratoires LCS et AI, Dave Lebling a d' abord écrit un analyseur simple et a jeté les bases d'un moteur de jeu similaire au moteur Adventure. Pour ce faire, il a utilisé le langage de programmation dérivé de MDL LISP. Grâce aux puissantes capacités de traitement du langage naturel, Mark Blanc , Bruce Daniels et Tip Anderson ont créé, sur la base du travail de Lebling, create - le premier jeu prototype, qui au fil du temps est devenu ce que nous appelons aujourd'hui Zork.

La révolution de Zork était que, contrairement aux simples commandes Adventure (dans lesquelles LAMP GET et GET LAMP étaient équivalentes), grâce aux excellentes capacités de traitement du langage naturel de MDL, il pouvait gérer des phrases entières. Il pouvait traiter des phrases complètes et même plusieurs phrases (équipes) combinées en une seule phrase. La présence d'un analyseur puissant combinée à la facilité de modéliser de nouvelles pièces sur MDL dans un style orienté objet signifiait qu'après avoir écrit l'analyseur et le moteur de jeu, le monde pouvait s'étendre presque sans limites.

Une pièce à Zork pourrait être définie en utilisant un morceau de code aussi simple:

 <ROOM "WHOUS" "This is an open field west of a white house, with a boarded front door." "West of House" <EXIT "NORTH" "NHOUS" "SOUTH" "SHOUS" "WEST" "FORE1" "EAST" #NEXIT "The door is locked, and there is evidently no key."> (<GET-OBJ "FDOOR"> <GET-OBJ "MAILB"> <GET-OBJ "MAT">) <> <+ ,RLANDBIT ,RLIGHTBIT ,RNWALLBIT ,RSACREDBIT> (RGLOBAL ,HOUSEBIT)> 

Cela définit la "maison blanche" depuis le début du jeu, ainsi que les sorties de cette pièce, les propriétés spéciales des sorties (par exemple, une porte verrouillée) et les objets dans la pièce. Cela garantit que toutes les propriétés de la pièce, y compris sa description, sa brève description, ses propriétés et ses étiquettes, seront réunies au même endroit. Le moteur de jeu sera alors en mesure de changer les étiquettes individuelles (bits) des salles, en stockant une base de données centrale de toutes les salles et leur état actuel. Gérez les connexions aux salles lors de la création de la conception d'un jeu en utilisant leurs noms et non les ID numériques du tableau.

Coup fort


Il suffit de dire que Zork était absolument fantastique sur les mainframes. À la demande d'autres joueurs intéressés, il a été porté sur le système d'exploitation DEC TOPS-20 beaucoup plus courant pour PDP-10. Bien que les développeurs de Zork aient été si généreux qu'ils l'ont distribué gratuitement, ils ont distribué la version chiffrée en lecture seule. Ils ont même stocké le code source de Zork dans un dossier sécurisé sur le mainframe ITS, pour lequel ils ont dû patcher le système d'exploitation du mainframe ITS entièrement ouvert et non sécurisé.


À ce stade de l'histoire des ordinateurs dans le monde, il y en avait encore pas mal. Le concept d'un ordinateur personnel commençait à peine à émerger: en 1977, des ordinateurs tels que le TRS-80 et Apple II sont apparus , mais même ce système était incroyablement limité par rapport aux ordinateurs centraux sur lesquels des étudiants américains jouaient à des jeux d'aventure textuels à l'époque. L'idée de porter un jeu comme Zork - un fichier exécutable de 1 Mo - sur des ordinateurs personnels semblait très prématurée.

Bien que les ordinateurs personnels soient encore rares, le concept de vente de logiciels aux consommateurs ordinaires est également resté nouveau. C'était le moment où l' Atari 2600 venait d'apparaître dans le commerce de détail, lançant la deuxième génération de consoles de jeux, sur lesquelles non seulement un jeu pouvait être joué à l'aide de cartouches insérées. Il s'agissait d'un nouveau marché, qui posait beaucoup de questions aux étudiants du MIT, de Stanford et d'autres établissements d'enseignement sur l'opposition de la culture des hackers au monde des logiciels commerciaux. Certains, comme Richard Stallman , n'ont pas changé leurs convictions depuis leurs jours d'étudiant au MIT.

Lorsque les développeurs de Zork ont ​​quitté l'institut, ils ont réalisé que le succès du jeu était entre leurs mains: ils ont eu la chance de le commercialiser, de diriger leur vie et leur carrière dans une direction complètement nouvelle par rapport à leurs objectifs d'origine. Ainsi, presque sans la moindre entrave, le 22 juin 1979, la société Infocom a été fondée.

Maintenant, nous avons juste besoin de le porter


Il n'y avait qu'une seule petite mise en garde pour déplacer Zork des systèmes mainframe PDP-10 vers les petits ordinateurs personnels: à cette époque, Infocom n'avait rien à vendre. Les développeurs ont proposé diverses idées de jeux qui pourraient être adaptées pour fonctionner sur des ordinateurs personnels, mais la principale valeur était le portage de Zork. Ils n'avaient besoin que de résoudre le problème de la conversion de 1 mégaoctet de code de jeu MDL en micro-ordinateurs avec 32 Ko de RAM (ou même moins) et de minuscules disques.

De plus, ils ne voulaient pas porter le jeu individuellement sur TRS-80, Apple II, puis sur de nouveaux systèmes. Que faire si vous essayez d'utiliser un code MDL existant? Cela a marqué le début du développement de ce qui allait bientôt devenir la Z-Machine .

Bien sûr, au début, ils voulaient résoudre le problème de compatibilité de Zork avec les micro-ordinateurs, en réduisant le jeu en supprimant le contenu. Coupant beaucoup, ils ont réussi à se rapprocher de la taille de Adventure. Ensuite, ils ont fait quelque chose de similaire avec MDL, supprimant toutes les fonctionnalités dont Zork n'avait pas besoin. C'est ainsi que le langage d'implémentation Zork (ZIL) est sorti, dans lequel ils pouvaient facilement porter Zork avec MDL. Après cela, le compilateur ZIL pourrait créer des fichiers exécutables beaucoup plus petits que le compilateur MDL.

En regardant la description de la lanterne en laiton Zork sur ZIL, nous pouvons voir qu'elle est plus facile à lire que MDL:

  <LANTERNE D'OBJET
 (SALON LOC)
 (LUMIÈRE DE LANTERNE À LAMPE SYNONYME)
 (LAITON ADJECTIF)
 (DESC "lanterne en laiton")
 (DRAPEAUX TAKEBIT LIGHTBIT)
 (LANTERNE D'ACTION-F)
 (FDESC "Une lanterne à piles est sur le trophée
 cas. ")
 (LDESC "Il y a une lanterne en laiton (alimentée par batterie)
 ici. ")
 (TAILLE 15)> 


Bien sûr, c'était merveilleux, mais cela ne permettait toujours pas de lancer Zork sur le TRS-80. Bien sûr, à ce stade, ils pourraient écrire un compilateur ZIL pour chaque plate-forme, ainsi qu'un fichier exécutable ZIL, pour passer beaucoup de temps plus tard, à configurer chaque jeu sur chaque plate-forme cible. Mais au lieu de cela, ils ont décidé d'écrire une machine virtuelle: Z-Machine. En fait, c'était une plate - forme idéale pour les jeux d'aventure basés sur du texte qui supportaient directement les fichiers binaires ZIL, et implémentait également de nombreuses optimisations, dont la plus importante était le conditionnement des caractères en 5 bits, qui ressemblait au code Bodo .

Grâce à toutes ces optimisations, une machine virtuelle et leur propre langage de programmation, ils ont réussi à mettre le monde tronqué de Zork I dans un «fichier historique» de 77 kilo-octets avec un interprète (machine virtuelle). Puisqu'il y avait encore plus de 32 Ko de mémoire, puis des ordinateurs populaires, un système de mémoire virtuelle a été implémenté dans la machine virtuelle, dans lequel seules les données dynamiques (variables) étaient chargées dans la RAM, et toutes les données statiques (texte) étaient lues à partir de la disquette si nécessaire.

Vers l'avenir



Les disquettes Apple II avaient une taille de 140 Ko et les disques TRS-80 une taille de 180 Ko, c'est-à-dire que le problème d'espace était résolu. Seul l'interprète devait être optimisé pour la plate-forme cible, ce qui signifiait qu'à l'avenir le même interprète pourrait être utilisé dans tous les jeux publiés par Infocom, sans avoir besoin de porter sur des plates-formes distinctes. Ils avaient encore beaucoup de contenu coupé de la version mainframe de Zork. Ils étaient prêts pour la suite.

Suite au succès commercial de Zork I, les développeurs ont continué à produire des pièces découpées à partir de la version mainframe originale sous la forme de Zork II et Zork III. Année après année, les ventes de Zork I ont continué de croître et sont devenues un jeu incontournable, souvent associé à de nouveaux systèmes. De nouvelles versions de Z-Machine ont été développées, dans lesquelles de nouvelles fonctionnalités ont été ajoutées pour des jeux encore plus complexes. Aujourd'hui, nous pouvons toujours profiter des jeux Infocom sans nous soucier des problèmes de compatibilité: les sources Zork sur MDL ont été publiées, ainsi que le code source des autres jeux Infocom classiques . Si vous n'avez jamais ou jamais joué à Zork depuis longtemps, essayez de jeter un coup d'œil à ce qui se passe à l'intérieur du jeu. Il est possible de dire sans le moindre effort qu'un groupe de pirates des universités américaines dans les années 1970 était très susceptible de déterminer l'avenir du monde des jeux vidéo et de la narration interactive.

Source: https://habr.com/ru/post/fr479690/


All Articles