Dans cette série d’articles, nous apprendrons les bases du logiciel Inform 7, ce qui vous permettra de d’écrire vos premières fictions interactives à analyseur syntaxique.

Introduction à Inform 7

Inform 7 est un langage de programmation en langage naturel permettant de créer des mondes imaginaires, de les remplir d’objets et de personnages, et par ce biais, de créer des histoires, des aventures et des jeux, également nommés fictions interactives.

Mais à la différence des jeux modernes impliquant des effets 3D, des animations, des images et du son, les fictions interactives utilisent uniquement du texte pour communiquer avec le joueur et lui décrire son environnement, comme dans un livre ; l’unique moyen d’entrer des commandes pour le joueur est de les taper au clavier.

Cela n’enlève néanmoins pas la possibilité à l’auteur d’ajouter des images, des sons et une interface sophistiquée à sa fiction interactive, s’il le juge nécessaire.

Voici à quoi une fiction interactive peut ressembler. Il s’agit en fait d’un extrait de celle que nous allons créer pas à pas dans ce guide. Les commandes que le joueur a entrées sont écrite après le symbole « > ».

Crypte
Un silence de mort règne entre ces murs oppressants, et le murmure enjoué du vent n'arrive pas jusqu'ici.

Vous pouvez voir une porte de pierre, une momie et un cimeterre.

>prendre le cimeterre
Ce sabre légendaire, le Shamshir, vous avait toujours fasciné, et maintenant vous pouvez enfin mettre la main dessus.

Au moment où vous prenez l'arme, la porte donnant vers l'extérieur se referme !

L'air commence à manquer…

>ouvrir la porte
La porte est trop lourde pour vous.L'air commence à manquer…

Inform 7 est l’un des systèmes les plus efficaces et modernes pour créer ce type de jeux. Il est composé :

  • d’un environnement graphique de développement (IDE) pour écrire le code, interpréter le jeu et avoir accès à la documentation ainsi qu’à divers modules (par exemple, la liste des relations entre les objets, la liste des verbes, l’arborescence des choix possibles…) ;
  • d’un compilateur permettant de créer le fichier d’histoire dans un langage machine spécial, qui sera par la suite interprété ;
  • de bibliothèques permettant d’établir les règles de base qui régissent le monde.

Ce guide ne prétend pas se substituer au manuel fourni avec le logiciel, très complet même si uniquement en anglais pour le moment. C’est en revanche le premier du genre qui aborde, en français, une initiation à Inform 7 et qui donne les bases nécessaires pour concevoir un univers textuel. Le lecteur pourra ensuite se référer au manuel officiel, et à ses nombreux exemples commentés, pour en savoir plus.

À la fin de votre lecture, vous serez en mesure de créer vous-même une petite aventure textuelle. Pour avoir une idée de résultat final, vous pouvez jouer à Sable en ligne.

À titre d’exemple des possibilités évoluées de ce langage, notons qu’il est possible de modéliser aisément les règles de la physique, de tester des équations et de les résoudre (nous n’aborderons pas cela ici).

Un petit exemple

La principale originalité d’Inform 7 est d’être un langage naturel déclaratif au lieu d’un langage de bas niveau procédural, impératif, comme le C par exemple (ou comme Inform 6, le prédécesseur d’Inform 7).

Voici un exemple de code écrit en Inform 7 :

Les murs sont des choses décoratives dans la Crypte. La description est "Les murs sont recouverts de carreaux en terre cuite qui représentent des dieux et des animaux fabuleux. Une partie est restée en pierre brute.".

Instead of inserting le cimeterre into les murs:
	si la portedepierre est verrouillée:
 		dire "Vous glissez votre cimeterre dans l'interstice entre les deux pierres, et la porte est de nouveau ouverte.";
 		maintenant la portedepierre est déverrouillée;
 		maintenant la portedepierre est ouverte;
 	sinon:
 		dire "Il ne se passe rien de spécial.".

Même une personne n’ayant jamais fait de programmation pourrait deviner ce que fait l’extrait ci-dessus, et c’est là l’un des attraits d’Inform 7. Malheureusement, on peut aussi remarquer que certains passages n’ont pas pu être traduits dans notre langue.

En effet, jusqu’à récemment, il n’était possible d’écrire sa source qu’en anglais. Ce n’est que depuis la version 6L02 qu’il est possible d’obtenir une source presque entièrement en français ; les prochaines versions d’Inform 7 devraient permettre de l’écrire entièrement dans la langue de Molière. Gardez à l’esprit que la syntaxe en français n’est pas définitive, et qu’elle est encore susceptible de changer.

Mais trêve de bavardage, et entrons dans le vif du sujet.

Il est recommandé de taper les extraits de code dans Inform 7 avant de les lire et d’essayer de les comprendre ; en effet, Inform 7 colorera la source et il sera plus facile de vous y retrouver.

Installation d’Inform 7

En premier lieu, téléchargeons la version 6L38 d’Inform 7 sur le site officiel :

http://inform7.com/

et plus précisément à la page :

http://inform7.com/download/

Attention, la traduction française d’Inform 7 n’est pas compatible avec la version 6M62. Assurez-vous bien de télécharger la version 6L38.

Choisissez la version pour votre système d’exploitation : macOS, Windows, Linux ou autre (les captures d’écran dans la suite de ce tutoriel ont été réalisées sous macOS, mais l’interface est à peu de choses près la même quel que soit le système utilisé).

Une fois l’installation terminée, démarrez le logiciel et cliquez sur le bouton « Start a new project… » (Windows, Linux) ou « Project » dans la colonne de droite (macOS).

Accueil d'Inform 7 sur Windows

Accueil d’Inform 7 sur Windows

Accueil d'Inform 7 sur macOS

Accueil d’Inform 7 sur macOS

Il est conseillé de créer tous ses projets dans le même dossier (même si rien ne vous y oblige). Par exemple :

  • Windows : C:\Documents and Settings\votre-nom\Mes documents\Inform\Projects
  • macOS : /Users/votre-nom/Documents/Inform Projects
  • Linux : ~/Inform/Projects

Appelons notre nouveau projet « Sable ». Choisissez également votre nom de plume.

La fenêtre principale s’ouvre alors. L’interface est séparée en deux zones, comme dans un livre ouvert.

Interface d'Inform 7

Interface d’Inform 7

La page de gauche est généralement utilisée pour taper le code et la page de droite pour visualiser le jeu ou lire la documentation, mais il est possible d’obtenir en vis-à-vis n’importe quelle combinaison d’onglets, par exemple deux fenêtres de source pour comparer du code. Il suffit de sélectionner les onglets se trouvant au-dessus des fenêtres (Windows) ou sur le côté (macOS, Linux).

Ces onglets sont :

  • Source (le code source du jeu) ;
  • Results (les messages d’erreurs ou d’autres événements s’étant déroulés lors de la compilation) ;
  • Index (la liste des lieux, des objets, des verbes, etc.) ;
  • Skein (le cheminement des parties que vous avez réalisées, sous forme d’arborescence) ;
  • Transcript (la transcription des parties que vous avez réalisées) ;
  • Story (où vous jouerez et testerez votre jeu) ;
  • Documentation (les deux manuels — an anglais seulement — d’Inform 7) ;
  • Extensions (où vous pourrez télécharger de nouvelles extensions et consulter leur documentation) ;
  • Settings (les options).

Pour le moment, nous nous concentrerons sur les onglets « Source » et « Story », qui sont les plus importants. Lorsque vous aurez un peu plus d’aisance avec Inform (nous utiliserons à partir de maintenant les termes « Inform » et « Inform 7 » indifféremment), vous pourrez découvrir les autres modules (certains sont très optionnels, comme le skein et le transcript).

Notre premier code

Les projets nouvellement créés contiennent le code source minimal requis. Adaptez-le afin d’obtenir le code suivant. Ce n’est pas grave si vous ne le comprenez pas encore, tout sera expliqué par la suite.

"Sable" by IFiction-FR

Oasis is a room. "Une belle oasis ensoleillée…".
The dromadaire is an animal in Oasis.

When play begins, say "Bonjour, voyageur.".

Cliquez sur le bouton « Go! » en haut à gauche de la fenêtre pour compiler le jeu. Vous verrez le résultat s’afficher sur la page de droite :

Bonjour, voyageur.

Sable
An Interactive Fiction by IFiction-FR
Release 1 / Serial number 150903 / Inform 7 build 6L38 (I6/v6.33 lib 6/12N) SD

Oasis
Une belle oasis ensoleillée…

You can see a dromadaire here.

Argh, nous avons du français et de l’anglais mélangé et ce n’est pas ce que nous souhaitons !

En effet, Inform 7 étant à la base tout en anglais, il n’a pas encore moyen de savoir que nous voulons que le jeu soit en français pour toutes nos réponses, ce qui est normal. Aussi, à l’exception des noms et autres chaînes de caractères que nous avons écrits nous-mêmes en français, tout sera traité en anglais.

Mais même si ce n’est pas encore parfait, nous pouvons commencer dès maintenant à interagir avec cette histoire en franglais, en tapant des instructions (instructions pour le moment en anglais) après le signe « > » (appelé « invite de commande », ou « prompt » en anglais) ; le résultat s’affichera sur la ligne suivante.

Par exemple :

>examine the dromadaire
You see nothing special about the dromadaire.

Installation de l’extension francophone d’Inform 7

Inform 7 utilise un système d’extensions qui permet d’ajouter des fonctionnalités. Ainsi, pour franciser Inform 7, il suffit de télécharger l’extension « French Language.i7x », qui se trouve à cette adresse :

https://bitbucket.org/informfr/i7-french-language/src

Téléchargeons également l’extension « Experimental French Features.i7x » (nous verrons par la suite pourquoi).

Ensuite, allons dans les fichiers de l’application Inform et ouvrons le fichier « about.txt » situé ici :

  • Windows : C:\Program Files\Inform 7\Internal\Languages\French\about.txt
    (vous devez avoir les droits administrateur pour pouvoir modifier le fichier.)
  • macOS : clic droit sur l’icône d’Inform puis Afficher le contenu du paquet, puis /Contents/Ressources/Internal/Languages/French/about.txt
  • Linux : /usr/share/gnome-inform7/Extensions/Reserved/Languages/French/about.txt
    ou /usr/share/gnome-inform7/Languages/French/about.txt

Modifions la ligne 5 pour remplacer « Eric Forgeot » par « Nathanael Marion » (cette étape ne devrait plus être nécessaire dans les prochaines versions).

Une fois que cela est fait, nous sommes prêts à installer les extensions. Retournons dans Inform et allons dans le menu :

File > Install extension…

et choisissons le fichier « French Language.i7x » que nous venons de télécharger. Répétons l’opération pour « Experimental French Features.i7x ».

L’extension est fonctionnelle, mais des bugs sont fréquemment corrigés. Assurez-vous régulièrement que vous possédez bien la dernière version à l’adresse ci-dessus !

Maintenant, ajoutons (in French) à la fin de la première ligne, ce qui permettra d’utiliser l’extension « French Language » :

"Sable" by IFiction-FR (in French)

Nous nous retrouvons donc avec ce code :

"Sable" by IFiction-FR (in French)

Oasis is a room. "Une belle oasis ensoleillée…".
The dromadaire is an animal in Oasis.

When play begins, say "Bonjour, voyageur.".

Mais il y a mieux, nous pouvons également écrire une partie de notre source en français ! Ajoutons la ligne Include Experimental French Features by Nathanael Marion (nécessaire pour que certaines choses puissent être écrites en français) après la ligne de titre, et modifions notre code pour qu’il ressemble à ceci :

"Sable" by IFiction-FR (in French)

Include Experimental French Features by Nathanael Marion.

[Attention, il y a une espace entre le mot « Oasis » et son déterminant !]
L' Oasis (f) est un endroit. "Une belle oasis ensoleillée…".
Le dromadaire est un animal dans l' Oasis.

When play begins, dire "Bonjour, voyageur.".

Dans la source, un texte entre crochets est un commentaire, c’est-à-dire une note que l’auteur a ajoutée, mais qui ne sera pas compilée. Par défaut, les commentaires sont affichés en vert dans Inform.

Si nous compilons de nouveau le jeu avec « Go! », nous obtenons maintenant :

Bonjour, voyageur.

Sable
Une fiction interactive par IFiction-FR
Release 1 / Serial number 150903 / Inform 7 build 6L38 (I6/v6.33 lib 6/12N) SD

Oasis
Une belle oasis ensoleillée…

Vous pouvez voir un dromadaire.

Nous avons maintenant toutes les répliques du jeu en français ! De plus, nous pouvons interagir avec l’histoire en tapant nos commandes en français.

Par exemple :

>examiner le dromadaire
Rien de particulier concernant le dromadaire.

>embrasser le dromadaire
Le dromadaire n'aimera peut-être pas ça.

>le frapper
La violence n'est pas une solution ici.

Ici, comme nous n’avons rien précisé de plus, nous obtenons les réponses types prévues dans Inform 7 (et plus précisément dans les traductions de l’extension francophone).

Voici quelques précisions techniques sur ce que nous venons de faire. Il n’est pas nécessaire de les connaître pour poursuivre le tutoriel.
Ajouter (in French) à la première ligne fait en sorte que l’extension « French Language » est utilisée. Cette extension permet de traduire les réponses du jeu et les commandes du joueur en français. Elle permet également de taper une partie de sa source en français. C’est grâce à elle qu’il devient possible d’écrire L’ Oasis est un endroit et Le dromadaire est un animal dans l’ Oasis.
La ligne Include Experimental French Features by Nathanael Marion nous fait utiliser la seconde extension téléchargée plus tôt. Elle permet d’écrire une encore plus grande partie de son code en français (dire […] en est un exemple). Cette extension est expérimentale dans le sens que les fonctionnalités qu’elle ajoute ne sont pas encore officiellement supportées par Inform. Cependant, il ne devrait pas y avoir un grand risque de l’utiliser. À terme, quand Inform supportera ces fonctionnalités, elles seront ajoutées dans l’extension « French Language ».
Pour plus de précisions sur ce qui est traduit et par quoi, consultez la documentation de ces extensions (onglet « Extensions »).

Conclusion

Nous voici enfin parés pour commencer à écrire notre fiction interactive !

Je fais mes premiers pas en fiction interactive avec Inform 7 !Click to Tweet