Inform 7 : créer des jeux textuels

Porteur du projet : Caroline Brun

Date : 05/02/2016

Licence : libre !

Liens :
Téléchargement du logiciel Inform
Extension francophone pour Inform
Tutoriel de création de jeu textuel
Tutoriel Open-Classrooms
Syntaxe utilisée avec Inform
Introduction à la fiction interactive
Un jeu pour expliquer Inform

Description

Le langage de programmation Inform a été créé en 1993 par Graham Nelson. Il est destiné à la création de fictions interactives, dans lesquelles le joueur rentre manuellement des commandes afin de progresser dans la narration. Ce système est composé de deux éléments majeurs : le compilateur, qui génère des fichiers de jeu lisibles sur des machines virtuelles (émulateurs), et des bibliothèques qui aident à la modélisation d’aventures textuelles. La dernière version à ce jour est Inform 7, apparue en 2006, et évolue sur MacOSX, Windows et Linux. Le code est dit « naturel » : c’est un langage déclaratif, plus simple à utiliser puisqu’il utilise des phrases que l’on utilise pour parler, et non une syntaxe propre (la seule langue utilisable est l’anglais). L’ensemble des interfaces graphiques, les interpréteurs et tout les composants de ce logiciel sont distribués de façon libre, sauf le compilateur : il est question de publier prochainement sous une licence libre ce dernier élément qui ne l’est pas.

Installation

Ce tutoriel se base sur une intallation MacOSX de la version Inform 7 6L38 disponible sur le site Inform (cf. lien en haut de l'article). Le logiciel pour les systèmes d’exploitation Windows ou Linux est également disponible. Une fois installé et ouvert, l’interface d’accueil s’affiche.

Il est essentiel pour un francophone d’installer une extension qui lui permettra de produire des jeux en français. En effet, si l’extension n’est pas installée les descriptions rédigées par l’auteur seront bien en français, mais les formules automatiques du logiciel comme « vous ne pouvez pas faire cela » par exemple, seront affichées en anglais. L’extension francophone pour la version 6L38 (elle ne fonctionne pas encore avec la version la plus récente d’Inform 7, la version 6M62) est disponible sur le lien cité en début d'article. Toutes les étapes d’installation sont détaillées. Une fois l’extension installée, il sera nécessaire de faire appel à cette bibliothèque dans le code pour l’activer.

Commencer un projet

Sélectionner « Create New » > « Project ». Une fois le dossier de destination sélectionné, l’interface d’Inform 7 s’affiche.

Dans le menu « Préférences », il est possible de spécifier le nom de l’auteur ainsi que des paramètres de typographie, de couleurs, de taille de police, etc.

L’interface d’Inform se présente séparée en deux fenêtres.
La partie de gauche est active sur l’onglet « Source », il s’agit de la fenêtre de programmation. La fenêtre de droit permet d’accéder à toute la documentation, la carte arborescente générée par la narration créée, les erreurs de compilation, l’index, l’affichage du jeu et les options. Les onglets « Source » (code) et « Game » (test du jeu) sont les plus importants, puisqu’ils permettent de composer le jeu et de le tester directement.

Dans la fenêtre de programmation, nous pourrons rentrer notre code écrit dans un langage quasi-naturel : cependant, toutes les instructions doivent être rédigées en anglais. La bibliothèque francophone permettra de franciser le jeu pour le joueur une fois qu’il sera terminé.

Par défaut, le logiciel affiche dans la console de programmation :

"Untitled" by Caroline Brun
Example Location is a room.

Nous avons précédemment installé l’extension francophone : pour l’activer, il est nécessaire de l’appeler dans le code. Pour cela, il suffit d’ajouter «(in French)» à la première ligne du code.

«Untitled» by Caroline Brun (in French) [active la bibliothèque francophone]
Example Location is a room.

Toutes les mentions entre crochets sont des commentaires, qui ne sont pas lus par le logiciel.

Commencer notre première aventure

Nous allons créer un premier exemple : nous allons renommer notre histoire « Aventure de poisson », le joueur jouera le rôle d’un poisson, et nous allons créer une salle que nous allons appeler « océan ». Chaque lieu que nous utiliserons dans le jeu est une « salle », que nous devons créer pour la faire exister.

“Aventure de poisson“ by Caroline Brun (in French) [active la bibliothèque francophone]
Océan is a room.
The description of Océan is ”Un océan immense, profond, plein de vie et de courants.
[Paragraph Break]
Un peu plus loin au nord se trouve grotte sous-marine.„.
[description qui s’affichera au joueur quand il entre dans la salle. Ici, elle s’affichera dès le début du jeu puisque le joueur commence son aventure dans cette pièce.]
Grotte sous-marine is a room.

Nous pouvons tester notre début d’aventure et voir ce qui s’affiche en cliquant sur le bouton « Go! » (le bouton replay relance l’aventure jusqu’au point où l’on s’est arrêté, pour ne pas avoir à rentrer toutes les commandes pour aller plus loin dans le jeu).

Le symbole de chevron supérieur (« > ») placé sous la description de notre océan caractérise le prompteur : il s’agit de la ligne sur laquelle nous pouvons entrer des commandes afin de faire effectuer des actions à notre personnage. Les commandes que l’on écrit doivent être simples, composées d’un verbe généralement à l’infinitif, suivi de l’objet auquel s’appliquer l’action.

Nous pouvons déjà essayer de taper quelque chose : à part la fonction « décrire » qui réaffichera la description de la pièce, il n’est pas encore possible d’interagir puisque nous n’avons encore rien programmé.

Nous allons créer un objet, un animal, et un humain pour voir comment caractériser les éléments autour de notre poisson. Ils ne sont pas actifs, mais nous pouvons cependant leur donner une description.

Nous avons tout à l’heure défini qu’au nord de notre position se trouvait une grotte sous-marine. Nous avons créé la salle « grotte sous-marine », mais nous ne l’avons pas encore spatialisée. Pour cela, il faut ajouter une mention :

Grotte sous-marine is a room.
Grotte sous-marine is north of the océan.

Ainsi, notre salle se trouve bien au nord de notre position actuelle dans la salle « océan ». Dorénavant, grâce à la commande « aller au nord », notre poisson pourra se rendre dans la grotte. Nous allons extrapoler dans notre histoire en supposant que notre poisson est particulièrement malin, et qu’il est capable d’ouvrir des portes avec des clés et se comporte comme un humain.

Nous allons donc créer une porte, la verrouiller, et créer la clé qui permet de l’ouvrir.

La cavité is a room. [création de la salle qui se trouve derrière la porte]
The description of la cavité is «Un long boyau sombre se dessine devant vous, ce n’est pas très rassurant.»
Une vieille trappe is a locked lockable door. [créer une porte (door), qui est verrouillable/déverrouillable (lockable), et qui est initialement en position verrouillée (locked)]
Une vieille trappe is north of Grotte sous-marine and south of cavité. [la trappe est au nord de la grotte sous-marine, et au nord de la porte se trouve la cavité]
La clef unlocks the vieille trappe. [la clef ouvre la trappe]
La clef is an object in the Grotte sous-marine. [création de l’objet « clef »]
The description of la clef is «La clef vieille, rouillée et un peu tordue. Espérons que ça fonctionne !’.»
After taking La clef, say «Elle va sûrement vous servir à quelque chose.» [si le joueur prend la clé, cette phrase apparaîtra]

Il est possible, à n’importe quel moment de notre aventure, de consulter son inventaire pour voir les objets en notre possession en tapant la commande « inventaire ».

Nous allons abréger notre histoire avec deux possibilités simples : nous allons créer deux petites grottes, le joueur devra se diriger sur l’une d’entre elles. L’une lui fera découvrir un trésor, l’autre un terrible requin qui va le dévorer.

Le couloir de gauche is a room. [création de la salle qui se trouve derrière la cavité]
Le couloir de gauche is west of the cavité. [spatialisation de la salle]
The description of le couloir de gauche is «À gauche, un couloir tortueux et étroit.»
Instead of going west: [si le joueur écrit qu’il veut aller à l’ouest...]
say «Vous trouvez au fond de la cavité une magnifique coffre rempli de pièces d’or. Malheureusement, vous êtes un poisson, ça ne vous servira pas à grand chose.»; [... afficher la phrase]
end the story. [terminer l’histoire : le jeu propose de recommencer, de charger une partie ou d’annuler la dernière action]
Le couloir de droite is a room. [création de la salle qui se trouve derrière la cavité]
Le couloir de gauche is east of the cavité. [spatialisation de la salle]
The description of le couloir de droite is «À droite, un couloir plutôt large, couvert d’algues.»
Instead of going east: [si le joueur écrit qu’il veut aller à l’ouest...]
say «Un requin terrifiant surgit devant vous. Vous tentez de lui échapper, en vain : vous êtes devenu son petit déjeuner.»; [... afficher la phrase]
end the story. [terminer l’histoire : le jeu propose de recommencer, de charger une partie ou d’annuler la dernière action]

Notre histoire est maintenant terminée : nous pouvons par exemple examiner comment utiliser des synonymes. Nous allons faire en sorte que le joueur puisse écrire «clef» ou «clé» sans problème d’interprétation.

Pour cela, il suffit d’écrire la commande suivante :

Understand «cle» as clef.

Il est nécessaire de ne pas mettre l’accent sur «clé», car c’est inutile : l’interpréteur se charge automatiquement de retirer l’accent s’il ne comprend pas un mot, en revanche l’inverse n’est pas vrai. Si le joueur tape «cle» sans accent alors qu’il a été spécifié dans le code, le mot ne sera pas reconnu. Cette technique permet d’élargir le champs de compréhension des synonymes par l’interpréteur.

Exporter un jeu

Le bouton «Release» permet de publier le jeu en créant un export direct sous forme de fichier de jeu.

Avant d’exporter, il faut vérifier dans les options (onglet « settings »), que « Format of compiled story file » est bien sur Z-code version 5 ou version 8, et que « Create a Blorb archive for release » est décoché.

Ce fichier de jeu généré sera jouable en ligne sous ces conditions :
En plaçant le fichier sur un site internet (site perso par exemple, via ftp), par exemple à une adresse telle que http://ifiction.free.fr/jeux/sable/sable.z5
Puis en entrant simplement l’adresse du jeu dans ce formulaire :
http://parchment.googlecode.com/svn/trunk/zcode.html)
Le site vous fournira une adresse sur laquelle les utilisateurs pourront jouer.

L’extension .js à la fin de cette adresse indique juste d’une conversion réalisée avec un script en python pour accélérer le traitement de notre histoire.

Le format z5 (ou z8) appelé zcode est interprété par une machine virtuelle, et des interpréteurs pour cette machine existent pour presque toutes les plates-formes existantes (windows, macosX, linux, freebsd, nintendo ds, pocket pc, iphone, javascript (version en ligne) et même atari ou amiga). L’avantage, c’est qu’en plus de pouvoir être interprété dans un navigateur, c’est le même fichier qui pourra être redistribué sur tous les systèmes opératifs à la fois sans avoir besoin de recompiler une version différente pour chaque OS.

Il est possible d’installer le logiciel Gargoyle pour lire les jeux sous windows et linux. Cette façon d’utiliser un logiciel est similaire à ce qu’on retrouve par ailleurs : pour lire un document en vidéo sur ordinateur il faut utiliser un logiciel de type lecteur vidéo, et pour lire un document de texte il en faut un logiciel de traitement de texte.