Dans cette série d’articles, nous apprendrons les bases du logiciel Inform 7, ce qui vous permettra d’écrire vos premières fictions interactives à analyseur syntaxique.
Ce tutoriel est une mise à jour d’un tutoriel écrit par farvardin, sous licence CC BY-NC-SA. Un grand merci à lui !
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 écrites 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 développement intégré (EDI) 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 du résultat final de ce que nous aurons écrit, 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 versions futures 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 Inform 7 sur le site officiel :
et plus précisément à la page :
Si vous êtes sur macOS, il faut télécharger la version 7.9.3 (build 6M62) intitulé « interim 2019 release ».
Si vous êtes sur Windows ou Linux, il faut télécharger la version 7.9.2 (build 6L38) plus bas sur la page.
Attention, la traduction française d’Inform 7 n’est compatible qu’avec une version spécifique d’Inform. Assurez-vous d’avoir téléchargé la bonne version selon votre système d’exploitation.
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é.
Parenthèse pour les utilisateurs de Windows
Si vous êtes sur macOS ou Linux, sautez cette section. Sinon, il est fortement recommandé de lire ce qui suit !
L’antivirus de Windows ralentit fortement le fonctionnement d’Inform 7. Pour empêcher cela, il faut lui dire de ne pas vérifier ce que fait Inform 7.
Oui, cela crée une faille de sécurité sur votre ordinateur, mais si vous téléchargez bien Inform depuis le lien donné plus haut, il ne devrait pas y avoir de risques. Si cela peut vous rassurer, de nombreux sujets sur le forum anglophone intfiction.org mentionnent ce problème et la solution que je vais indiquer (là, là, là, là, là et là, par exemple). Ce n’est pas obligatoire, à vous de voir si vous en aurez besoin. Faites-le en tout connaissance de cause !
Alors commençons.
- Ouvrez l’application Sécurité Windows (touche Windows puis taper « sécurité windows »).
- Dans le menu latéral, sélectionnez « Protection contre les virus et les menaces ».
- Sur le nouvel écran, dans la section « Paramètres de protection contre les virus et menaces », cliquez sur « Gérez les paramètres ».
- Sur l’écran qui s’affiche, descendez jusqu’à « Exclusions » et cliquez sur « Ajouter ou supprimer des exclusions ».
- Cliquez sur le bouton « Ajoutez une exclusion » et sélectionnez « Processus ».
- Dans le champ qui apparaît, entrez le chemin du compilateur Inform, « ni.exe », et validez. Si vous avez installé Inform dans l’emplacement par défaut, cela sera :
C:\Program Files (x86)\Inform 7\Compilers\ni.exe
Encore une fois, n’oubliez pas ce que cela implique ! Dans le cas (très improbable, certes) où il vous arriverait quelque chose, vous serez le seul responsable.
Maintenant que cela est derrière nous, continuons avec notre introduction à Inform !
Faisons connaissance avec Inform 7
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).
Créons un dossier qui contiendra le projet. Par exemple, un dossier nommé « Sable » dans un dossier « Projets Inform » dans vos documents. (Évitez des accents dans le chemin, ils peuvent parfois causer des problèmes.)
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.
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).
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 (le cheminement des parties que vous avez réalisées sous forme d’arborescence).
Petite manipulation à faire avant de continuer si vous êtes sur macOS : allez dans l’onglet « Settings » du projet et sélectionnez la version 7.9.2 (6L38) comme version d’Inform. Ce sera important pour faire fonctionner le français.
Notre premier code
Les projets nouvellement créés contiennent le code source minimal requis. Adaptez-le afin d’obtenir le code suivant — en anglais pour le moment. Ce n’est pas grave si vous ne le comprenez pas encore, tout sera expliqué par la suite.
"Sable" by Fiction-interactive.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.
Sur Windows, c’est cette étape qui prend vraiment beaucoup de temps si vous n’avez pas désactivé l’antivirus comme indiqué précédemment. Vous pouvez tester cette étape avec et sans antivirus pour juger si vous avez vraiment besoin de le désactiver.
Si tout va bien, 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 française 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 à l’adresse ci-dessous.
https://gitlab.com/fiction-interactive-fr/inform7-fr
Sur la page, cliquez sur le bouton de téléchargement (flèche entrant dans un carré, à gauche du bouton « Clone »), choisissez le format ZIP et dézippez le fichier obtenu.
Ensuite, copions le fichier « about.txt » inclus dans le téléchargement des fichiers d’Inform, en remplaçant celui déjà présent :
- Windows :
C:\Program Files (x86)\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 » ; de là, le fichier se trouve dans
Contents/Resources/retrospective/6L38/Languages/French/about.txt
- Linux :
/usr/share/gnome-inform7/Extensions/Reserved/Languages/French/about.txt
ou/usr/share/gnome-inform7/Languages/French/about.txt
(Je ne suis pas sûr pour Linux.)
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 » parmi ce 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 Fiction-interactive.fr (in French)
Nous nous retrouvons donc avec ce code :
"Sable" by Fiction-interactive.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 Fiction-interactive.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 française).
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 (f) 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 »).
Nous voici enfin parés pour la suite. Rendez-vous à la suite de cette article pour commencer à écrire notre fiction interactive !
2 mai 2020 at 14 h 43
Bonjour,
Quelques soucis en suivant vos instructions sur OSX:
1. J’ai du changer le « Story File Format » de Glulx vers Z-Code sinon j’ai juste un écran blanc quand je clique sur « Go! »
2. Avec l’extension FR, la compilation plante. Avez-vous une idée du problème ?
« `
/Applications/Inform.app/Contents/Resources/Compilers/inform6 \
-kE2SDwv8 +include_path=/Applications/Inform.app/Contents/Resources/Library/6.11,.,../Source /path/to/Test.inform/Build/auto.inf /path/to/Test.inform/Build/output.z8
Launching: inform6 « -kE2SDwv8 » « +include_path=/Applications/Inform.app/Contents/Resources/Library/6.11,.,../Source » « /path/to/Test.inform/Build/auto.inf » « /path/to/Test.inform/Build/output.z8 »
Inform 6.33N for Mac OS X (20th August 2014)
File « /path/to/Test.inform/Build/auto.inf »; Line 28077 # Error: Character can only be used if declared in advance as part of ‘Zcharacter table’: (ISO Latin1) $a0
> print « @< print « @<x, « @{A0}@>> »
File « /path/to/Test.inform/Build/auto.inf »; Line 28089 # Error: Character can only be used if declared in advance as part of ‘Zcharacter table’: (ISO Latin1) $a0
> print « @< print « @<> »
File « /path/to/Test.inform/Build/auto.inf »; Line 33501 # Error: Character can only be used if declared in advance as part of ‘Zcharacter table’: (ISO Latin1) $a0
> print h, « @{A0}h »
File « /path/to/Test.inform/Build/auto.inf »; Line 33502 # Error: Character can only be used if declared in advance as part of ‘Zcharacter table’: (ISO Latin1) $a0
> if (t % ONE_HOUR) print « @{A0} »
File « /path/to/Test.inform/Build/auto.inf »; Line 33503 # Fatal error: Branch out of range: divide the routine up?
Compiler finished with code 1
« `
2 mai 2020 at 20 h 52
Bonjour !
Ces erreurs du compilateur sont dues au fait que l’extension française n’est pas compatible avec la Z-machine (les jeux produits en français sont trop lourds, mais de toute façon, même en anglais, les limites de la Z-machine sont vite atteintes avec les dernières versions d’Inform).
Pour le problème original de l’écran blanc avec Glulx, Je pense que c’est à cause des dernières versions de macOS qui ont cassé des choses depuis la sortie d’Inform 7 6L38.
Télécharger la version « Interim 2019 release » à http://inform7.com/downloads/ devrait résoudre le problème. (Il ne faut pas oublier de sélectionner la version 7.9.2 dans les settings du projet.)
Ça fait longtemps que je n’ai plus de Mac, j’espère donc ne pas dire de bêtises et que ça marchera !
N’hésite pas à nous rejoindre sur Discord ou notre forum (ou tout simplement répondre ici) !
Si ça fonctionne, je mettrai à jour l’article. Merci !
7 mai 2020 at 10 h 31
Merci !
Désolé pour le délai, je m’attendais à recevoir une notification par mail, j’ai cru que je n’avais pas encore reçu de réponse.
Je n’avais pas pris la version Interim parce que le tuto précise de prendre la 6L38 alors que le téléchargement de l’interim indique 6M62. Par contre, dans les settings il est bien indiqué que 7.9.2 = 6L38 donc c’est parfait.
Enfin, comme cette version d’interim embarque 3 versions, il faut modifier le bon about.txt : Inform.app/Contents/Resources/retrospective/6L38/Languages/French/about.txt
Merci pour l’aide, ça compile correctement désormais !
7 mai 2020 at 22 h 05
En fait, les prochaines versions de l’application Inform donneront la possibilité de choisir la version du langage pour les projets. Pour corriger les choses que Catalina avait cassé, une nouvelle version de l’application Inform, intégrant cette fonctionnalité, a dû sortir un peu en avance. (Ce n’est pas encore le cas pour Linux et Windows).
Lors de l’écriture de l’article, il n’y avait pas cette fonctionnalité, d’où l’instruction de ne pas prendre 6M62.
Mais bref. Content que ça marche et merci pour ces infos, je vais mettre l’article à jour ! (Et pas de problème pour le délai, bien sûr.)
12 juillet 2020 at 2 h 29
Bonjour,
j’ai essayé de créer le code de base que vous avez donné, mais cela ne fonctionne pas. Je crois avoir une erreur avec les extensions. Je vous laisse un screen de l’erreur rencontrée pour que vous puissiez potentiellement m’aider 🙂
http://prntscr.com/tg4eaf