Inform (programmation)
Inform est un compilateur et un langage de programmation, créé par Graham Nelson, dédié à la création de fictions interactives — ou jeux d'aventure en mode texte.
Il permet de transformer des descriptions textuelles en un monde simulé pouvant être exploré par les joueurs depuis un ordinateur, grâce à un interprétateur[1]. Inform a été inventé en 1993, et a permis la création de milliers de jeux de fiction interactive dans plusieurs langues[1].
Inform n’était pas, lors de son lancement, le premier du genre. C’est en 1975 que la fiction interactive naquit, avec le jeu Adventure[2]. Si les aventures textuelles ont été populaires durant les années 80, elles ont cependant été supplantées par les jeux dotés d’une interface graphique durant la décennie suivante[3].
Cependant, même après sa vie commerciale, Inform perdure grâce à une communauté active[3]. En 2006, un nouveau langage Inform est lancé, basé sur Inform 6: Inform 7[4]. Ce dernier est un langage de programmation de plus haut niveau en comparaison de son aîné.
Vue d’ensemble
Le système Inform est composé d’un compilateur et de bibliothèques qui aident à la modélisation de jeux d’aventure textuels. Il existe deux versions majeures et populaires du système : Inform 6 et 7.
Les manuels disponibles pour l’apprentissage d’Inform, dont le DM4, sont en anglais ; il est cependant possible de réaliser des jeux dans d’autres langues, notamment en français, grâce à la traduction d’une partie des bibliothèques du système.
Z-Machine et Glulx
Toutes les versions d'Inform génèrent des fichiers en Z-code, aussi appelés fichiers histoires, à partir d'un code source.
Ces fichiers peuvent ensuite être exécutés par n’importe quel interpréteur qui implémente correctement les spécifications de la Z-machine — ordinateur imaginaire créé en 1979 par Joel Berez, Marc Blank et d’autres personnes travaillant pour la société Infocom — ou Glulx.
Comme il existe au moins un interpréteur de ce type pour de nombreuses plates-formes, cela signifie que le même fichier Z-code peut être exécuté sur une multitude de systèmes sans modification. Néanmoins, la Z-machine ayant ses limites, une autre machine virtuelle, connue sous le nom de Glulx — crée par Andrew Plotkin —, a gagné en popularité. 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.
Inform 6
Le compilateur
Le compilateur, nommé Inform, transforme le code source d'un jeu et des bibliothèques — écrits en langage Inform 6 ou 7 —, en un fichier Z-code lisible par les machines virtuelles Z-machine ou Glulx.
Il est disponible sur les systèmes d'exploitations MS Windows, Mac OS et Linux ; la version actuelle est la 6.34.
Il supporte l’encodage de caractères UTF-8 pour les fichiers sources des bibliothèques et des jeux.
Le langage de programmation
Le langage Inform, dont la syntaxe générale est proche du C, est orienté objet et procédural ; les objets sont un élément clé du langage.
Étant donné que ce langage sert à construire des histoires, les objets d'Inform ne sont pas nécessairement des entités réelles reproduites (par exemple une voiture, un bâtiment historique, etc.), mais sont plus précisément des objets fictionnels qui s’inscrivent par conséquent dans un monde fictionnel cohérent suivant une logique fictionnelle. Dans The Informer Beginner’s Guide, un objet est décrit comme étant «une collection de variables qui ensemble représentent les capacités et le statut actuel d’une composante spécifique du monde modélisé[3]».
Voici l'exemple le plus simple d'un code source en langage Inform 6.
!% -Cu
[ Main;
"Bonjour, le monde !";
];
Les bibliothèques
Les bibliothèques, associées au compilateur, constituent le moteur de jeu. Elles assurent la cohérence et la prise en charge de la complexité des interactions entre les commandes du joueur – saisies au clavier –, et le monde textuel imaginaire, modélisé sous la forme d’objets, dans lequel il évolue.
Ce sont des fichiers de code, écrits en langage Inform, partageables en trois catégories distinctes : le moteur de jeu ; la grammaire ; les messages par défauts.
Exemple de jeu
!% -Cu
!% +Language_name=french
Constant Story "Exemple de jeu";
Constant Headline "^Écrit pour Wikipédia.^";
Constant NO_SCORE;
Include "parser";
Include "verblib";
Object Lieu_Ici "Ici"
with
description "Vous êtes dans une grande pièce avec de hauts piliers.^
Au nord, une porte imposante mène à Wikipédia.",
in_to [; << Go n_obj >>; ],
n_to [;
if (porte has locked)
"La porte est verrouillée.";
return Lieu_Wiki;
],
has light;
Object Lieu_Wiki "Ailleurs"
with
initial "La porte s'ouvre et vous entrez dans la bibliothèque Wikipédia.",
description "Wikipédia, l'encyclopédie libre !"
has light;
Object porte "porte" Lieu_Ici
with
name 'porte',
door_to Lieu_Wiki,
door_dir n_to,
with_key clef
has static female concealed door openable lockable locked;
Object chapeau "chapeau"
with
name 'chapeau',
description "C'est un chapeau en feutre noir, à bord court et relevé sur l'arrière."
has male clothing worn;
Object clef "clé"
with
name 'clé' 'clef',
description "C'est une clé pour devenir puissant, riche et célèbre !"
has female;
[ NewRoom;
if (location == Lieu_Wiki) deadflag = 2;
];
[ Initialise;
move chapeau to player;
move clef to player;
location = Lieu_Ici;
];
Include "frenchg";
Une transcription du jeu est visible sur la page Fiction interactive.
Inform 7
Le , Graham Nelson a annoncé la version beta d'Inform 7 sur la liste de diffusion rec.arts.int-fiction[5]. Cette nouvelle version qui lui a pris, à lui et son équipe, trois ans de développement dans le plus grand secret, est décrite comme une « réinvention radicale ».
Inform 7 est en effet un programme complet fonctionnant sur MacOSX, Windows et Linux, avec une nouvelle syntaxe utilisant dorénavant du code source en langage naturel, sous forme de règles déclaratives, permettant à un auteur d’écrire avec plus de liberté.
Inform 6 est toujours utilisé en traitement sous-jacent du code transcrit par l'interface d'Inform 7.
Depuis avril 2022, Inform 7 est open source[6], et sa source disponible sur GitHub[7].
Notes et références
- Nelson, Graham., The Inform designer's manual, Interactive Fiction Library, (ISBN 0-9713119-0-0 et 978-0-9713119-0-9, OCLC 48181074, lire en ligne)
- « Frequently Asked Questions About Interactive Fiction », sur iftechfoundation.org (consulté le )
- (en) Roger Firth et Sonja Kesserich, The Inform Beginner's Guide, Illinois, The Interactive Fiction Library, , 256 p. (ISBN 0-9713119-2-7, lire en ligne), Page 155
- « Wayback Machine », sur web.archive.org, (consulté le )
- (en) Annonce.
- (en) Graham Nelson, « Inform 7 v10.1.0 is now open-source », sur The Interactive Fiction Community Forum, (consulté le )
- (en) « ganelson/inform: The core software distribution for the Inform 7 programming language. », sur GitHub