Retour au blog

Microsoft Libère le Code de Zork en Open-Source : L'Histoire des Jeux Textuels

Salut HaWkers, Microsoft a surpris la communauté de développeurs et gamers en libérant le code source de Zork I, II et III sous licence MIT. Ce mouvement préserve une partie fondamentale de l'histoire de l'informatique et des jeux vidéo, la rendant accessible pour l'étude et la modification.

Pourquoi un jeu de presque 50 ans importe-t-il encore pour les développeurs modernes ? Explorons l'histoire, le code et ce que nous pouvons apprendre de ce classique.

Qu'est-ce que Zork

Pour ceux qui ne connaissent pas, Zork est une série de jeux d'aventure basés sur le texte créés à la fin des années 1970. Le joueur explore un vaste monde souterrain en tapant des commandes en langage naturel.

Exemple de Gameplay

West of House
You are standing in an open field west of a white house,
with a boarded front door.
There is a small mailbox here.

> open mailbox
Opening the small mailbox reveals a leaflet.

> read leaflet
"WELCOME TO ZORK!
ZORK is a game of adventure, danger, and low cunning..."

> go north
North of House
You are facing the north side of a white house...

Importance Historique

Jalons atteints :

  • L'un des premiers jeux commerciaux pour ordinateur
  • Pionnier du traitement du langage naturel
  • A influencé toute l'industrie des jeux d'aventure
  • A vendu plus d'un million de copies à l'époque

Chronologie :

  • 1977 : Version originale créée au MIT
  • 1979 : Fondation d'Infocom
  • 1980-1982 : Lancement de Zork I, II et III
  • 1986 : Infocom acquise par Activision
  • 2023 : Activision acquise par Microsoft
  • 2025 : Code libéré en open-source

Pourquoi Microsoft a Libéré le Code

La décision de rendre Zork open-source reflète une tendance croissante de préservation du patrimoine numérique.

Motivations de Microsoft

Raisons déclarées :

  • Préservation historique
  • Valeur éducative du code
  • Relations publiques positives
  • Coût zéro de maintenance

Avantages pour la communauté :

  • Étude des techniques de parsing
  • Analyse du game design
  • Base pour projets éducatifs
  • Préservation de l'histoire de l'informatique

💡 Contexte : Microsoft a progressivement libéré du code historique, incluant MS-DOS et GW-BASIC, dans le cadre d'initiatives de préservation.

Explorer le Code de Zork

Le code de Zork a été écrit en ZIL (Zork Implementation Language), un langage dérivé de LISP créé spécifiquement pour les jeux textuels.

Structure du Projet

Le dépôt contient :

Fichiers principaux :

  • /zork1/ - Code source de Zork I
  • /zork2/ - Code source de Zork II
  • /zork3/ - Code source de Zork III
  • /zilf/ - Outils de compilation
  • /docs/ - Documentation originale

Exemple de Code ZIL

<ROOM WHITE-HOUSE
    (DESC "West of House")
    (IN ROOMS)
    (LDESC "You are standing in an open field west of a white house,
            with a boarded front door.")
    (EAST TO BEHIND-HOUSE IF WINDOW IS OPEN)
    (WEST TO FOREST-1)
    (NORTH TO NORTH-OF-HOUSE)
    (SOUTH TO SOUTH-OF-HOUSE)
    (FLAGS OUTSIDEBIT ONBIT)
    (GLOBAL WHITE-HOUSE BOARD FOREST)>

<OBJECT MAILBOX
    (DESC "small mailbox")
    (IN WHITE-HOUSE)
    (SYNONYM MAILBOX BOX)
    (ADJECTIVE SMALL)
    (FLAGS CONTBIT)
    (ACTION MAILBOX-F)
    (CAPACITY 10)>

<ROUTINE MAILBOX-F ()
    <COND (<VERB? OPEN>
           <COND (<FSET? ,MAILBOX ,OPENBIT>
                  <TELL "It's already open." CR>)
                 (T
                  <FSET ,MAILBOX ,OPENBIT>
                  <TELL "Opening the small mailbox reveals a leaflet." CR>)>)>>

Ce code définit la salle initiale et la boîte aux lettres, montrant comment les objets et interactions étaient programmés.

Le Parser de Langage Naturel

L'un des aspects les plus impressionnants de Zork était son parser de langage naturel, avancé pour l'époque.

Capacités du Parser

Commandes qui fonctionnaient :

  • "open the mailbox" (basique)
  • "put the sword in the case" (prépositions)
  • "give the treasure to the troll" (objets indirects)
  • "take all but the lamp" (exceptions)
  • "examine the painting carefully" (adverbes)

Architecture du Parser

Le parser de Zork fonctionnait en couches :

Étapes de traitement :

  1. Tokenisation des mots
  2. Identification des verbes et noms
  3. Résolution des pronoms (it, them)
  4. Désambiguïsation des objets
  5. Exécution de l'action

Limitations connues :

  • Vocabulaire fini (~1000 mots)
  • Certaines constructions non reconnues
  • Réponses génériques pour commandes inconnues

🔥 Curiosité : De nombreuses techniques utilisées dans le parser de Zork ont influencé le développement de chatbots et assistants virtuels des décennies plus tard.

Leçons Pour les Développeurs Modernes

Le code de Zork offre des insights précieux sur le design logiciel, même 50 ans après.

Principes Intemporels

1. Économie de ressources :
Zork fonctionnait sur des ordinateurs avec 64Ko de RAM. Les développeurs étaient forcés d'optimiser chaque octet.

2. Design orienté données :
Les salles, objets et actions étaient définis de manière déclarative, séparant données et logique.

3. Expérience utilisateur :
Malgré les limitations techniques, le jeu priorisait un feedback clair et des réponses naturelles.

4. Modularité :
Le code était organisé de manière à permettre l'expansion et la maintenance.

Applications Modernes

Concepts que nous utilisons encore :

  • Machines à états pour le flux de jeu
  • Parsing d'entrée utilisateur
  • Systèmes d'inventaire
  • World building procédural

Domaines qui ont évolué :

  • Le NLP moderne utilise des transformers, pas des règles
  • Les graphiques ont remplacé le texte dans les jeux mainstream
  • RAM et stockage sont abondants
  • Mais l'élégance compte toujours

Comment Exécuter et Modifier Zork

Si vous voulez expérimenter le code, voici comment commencer.

Prérequis

Outils nécessaires :

  • Git pour cloner le dépôt
  • ZILF (Zork Implementation Language Formatter)
  • Frotz ou autre interpréteur Z-machine

Étape par Étape

1. Clonez le dépôt :

git clone https://github.com/microsoft/zork.git
cd zork

2. Installez ZILF :

# Sur macOS avec Homebrew
brew install zilf

# Sur Ubuntu/Debian
sudo apt-get install zilf

# Ou compilez depuis le source
git clone https://github.com/zilf/zilf.git
cd zilf && make

3. Compilez le jeu :

cd zork1
zilf zork1.zil

4. Exécutez avec Frotz :

frotz zork1.z5

Modifier le Jeu

Essayez d'ajouter une nouvelle salle :

<ROOM MY-ROOM
    (DESC "Developer's Den")
    (IN ROOMS)
    (LDESC "You are in a cozy room filled with vintage computers.
            The glow of CRT monitors illuminates ancient code.")
    (NORTH TO WHITE-HOUSE)
    (FLAGS LIGHTBIT)>

L'Héritage des Jeux Textuels

Zork représente une ère où l'imagination du joueur complétait l'expérience. Cet héritage reste vivant.

Fiction Interactive Aujourd'hui

Communauté active :

  • IFComp (compétition annuelle d'IF)
  • Outils modernes comme Inform 7, Twine
  • Des milliers de jeux gratuits disponibles
  • Utilisation en éducation et thérapie

Outils recommandés :

  • Inform 7 : Langage naturel pour IF
  • Twine : IF avec hyperliens, visuelle
  • Ink : Moteur d'Inkle (80 Days, Sorcery!)
  • ChoiceScript : Pour jeux style "livre dont vous êtes le héros"

Influence sur l'Industrie

Jeux qui ont hérité de l'ADN de Zork :

  • Jeux d'aventure LucasArts
  • Visual novels japonais
  • Walking simulators modernes
  • Éléments de RPGs textuels

Concepts qui persistent :

  • Parser de commandes dans les jeux
  • Descriptions atmosphériques
  • Puzzles basés sur l'inventaire
  • Narration non-linéaire

L'Avenir de la Préservation du Code

La libération de Zork soulève des questions sur la préservation du logiciel historique.

Pourquoi Préserver le Code Ancien ?

Arguments en faveur :

  • L'histoire de l'informatique mérite d'être préservée
  • Le code ancien a une valeur éducative
  • Les techniques peuvent être redécouvertes
  • Patrimoine culturel numérique

Défis :

  • Licences complexes
  • Code propriétaire d'entreprises disparues
  • Dépendances sur du matériel obsolète
  • Manque de documentation

Initiatives de Préservation

Organisations actives :

  • Software Preservation Network
  • Internet Archive (archive.org)
  • Computer History Museum
  • GitHub Archive Program

Conclusion

La libération du code de Zork est plus que de la nostalgie. C'est une opportunité d'étudier comment les développeurs du passé résolvaient des problèmes complexes avec des ressources limitées. Les techniques de parsing, design d'interaction et économie de ressources sont des leçons précieuses même à l'ère des GPUs de teraflops et terabytes de RAM.

Pour les développeurs curieux, explorer le code de Zork est un voyage dans le temps qui éclaire le présent. Les fondations de l'informatique interactive sont là, écrites en LISP, attendant d'être découvertes.

Si vous vous intéressez à l'histoire de la programmation et comment nous en sommes arrivés là, je recommande de consulter un autre article : Introduction au JavaScript Moderne ECMAScript 6 où vous découvrirez comment le langage le plus populaire du web a évolué au fil des années.

C'est parti ! 🦅

Commentaires (0)

Cet article n'a pas encore de commentaires. Soyez le premier!

Ajouter des commentaires