On avait déjà parlé d’Adventuron l’année dernière, après la jam de la Sens Dessus Dessous, avec les retours d’expérience sur des outils de création de FI. Petit rappel, Adventuron est un outil de création FI hybride à la fois analyseur syntaxique (similaire à Inform, Dialog ou Donjon FI) et à choix (comme Moiki ou Twine), pouvant inclure des illustrations et bandes sonores, sur une interface rétro. Les commandes sont simples : “verbe” ou “verbe + nom”.

Adventuron ne supporte pour l’instant que l’anglais et l’espagnol, mais il est possible de créer une interface en français avec un peu de code supplémentaire. Le code, par contre, est seulement en anglais.

Note : Adventuron est à usage non-commercial.

Si vous trouvez la documentation officielle un peu difficile, voici un petit tutoriel pour créer une aventure basique avec Adventuron.

Le topo du jeu

Nous allons créer un petit escape game avec trois puzzles différents : la porte de sortie verrouillée, une salle cachée derrière un meuble, et un mécanisme à pression.

Ce jeu comportera quatre pièces : la salle d’entrée, un bureau, l’extérieur, et une pièce secrète. Nous trouverons le bureau au nord de l’entrée, et l’extérieur à son opposé. La pièce secrète est à l’est du bureau, cachée derrière une bibliothèque.

Le-a joueur-se commencera dans la salle d’entrée. En examinant la porte de sortie (ou essayant de l’ouvrir), il-elle la trouvera verrouillée, et devra se tourner vers le bureau.

Dans le bureau, le-a joueur-se devra examiner la bibliothèque, puis prendre le livre jaune, pour révéler l’entrée de la pièce secrète. En examinant le livre, il-elle verra que celui-ci est étrangement léger pour sa taille.
Il y aura aussi une fenêtre dans cette pièce, que le-a joueur-se ne pourra pas ouvrir (fausse sortie).

Dans la pièce secrète, le-a joueur-se trouvera la clé (de la porte verrouillée) sur une plaque sensible à la pression, et devra échanger la clé pour le livre, sans quoi il-elle sera enfermé-e dans cette pièce. Le-a joueur-se pourra faire cet échange directement, ou prendre d’abord la clé (ce qui l’enfermera) puis poser le livre (ce qui rouvrira l’accès).

Enfin, le-a joueur-se devra revenir à l’entrée, déverrouiller la porte, et sortir !

Coder le jeu

Tout d’abord, il vous faudra ouvrir le programme Adventuron (en ligne : Classroom ou la version BetaBeta) et ajouter le template de base en appuyant sur les touches CTRL + ESPACE (ou ALT + ESPACE).

Note : le combo CTRL + ESPACE lorsque le curseur est dans une ligne vide, entre certains guillemets, et après certaines espaces, ouvrira un menu d’options pour ajouter une nouvelle section de code, ou indiquer une salle, un objet, ou autre.

Le template comprend 4 sections : 

  • start_at, qui indique la pièce de départ
  • locations {}, qui listera les différentes salles
  • connections {}, qui indiquera les connexions entre les salles
  • objects {}, qui listera les différents objets dans le jeu

Dans ce tutoriel, nous ajouterons des sections supplémentaires, afin de pouvoir avoir un jeu qui marche.

Créer les pièces

Vu que le template contient déjà une salle codée ( my_location ), nous pouvons éditer celle-ci pour créer notre première salle : la salle d’entrée ( entree ).

Changez donc my_location pour entree , et "You are in a room." pour la description de la pièce. Enfin, vu que cette pièce est aussi la salle de départ du jeu, nous changerons  start_at = my_location avec start_at = entree.

Ajoutons maintenant les autres pièces :

Pièce IDDescription
entreeVous êtes dans la salle d’entrée.
bureauVous êtes dans le bureau.
piece_secreteVous êtes dans la pièce secrète.
sortieVous êtes (enfin) dehors!

Dans une ligne vide dans locations {}, vous pouvez appuyer sur CTRL + ESPACE pour ajouter un nouveau template de pièce à éditer (comme my_location dans le template de départ).

Décrire les pièces

Si vous voulez indiquer plus d’information dans la description de la salle, mais avec un retour à la ligne, vous aurez besoin d’ajouter le bloc on_describe {} à la pièce voulue.

Entre le guillemet " et la point virgule ; , ajoutez les accolades { } puis appuyez sur ENTRÉE. 

Dans la ligne vide, appuyez sur CTRL + ESPACE et choisissez on_describe {} dans la liste. À l’intérieur, appuyez de nouveau sur CTRL + ESPACE et choisissez print. Vous pouvez ensuite écrire la description voulue pour la pièce en question.

Par exemple, pour l’entrée :

Note : Il est aussi possible d’avoir une section on_describe {} en dehors de locations {} pour décrire une pièce. Vous aurez besoin, par contre, d’une expression conditionnelle pour connecter la description à la pièce. Comme ci-dessous :

Connecter les pièces

Pour que les pièces soient bien reliées et que le-a joueur-se puisse passer d’une à l’autre, nous allons créer des connexions dans la section connections {}.

DépartDirectionArrivée
entreenordbureau
entreesudsortie
bureauestpiece_secrete

Dans la ligne vide dans from, direction, to = [], appuyez sur CTRL + ESPACE pour avoir la liste des pièces. Vous pouvez soit cliquer sur la pièce voulue, ou utiliser les flèches du clavier puis ENTREE, pour la sélectionner. Répétez cette action pour sélectionner la direction, et la pièce d’arrivée.

Répétez ceci afin de connecter toutes les pièces.

Ajouter des objets

Maintenant que nous avons des pièces, nous pouvons lister des objets, dans la section objects {}.

Dans Adventuron, il y a deux types d’objets : object et scenery. Scenery sont des “objets” que nous pouvons examiner ou interagir, mais que nous ne pouvons pas prendre. Les objets peuvent être assignés à une pièce dès le départ, et seront visibles à l’écran.

Dans la première partie, nous avons mentionné deux objets : le livre (dans la bibliothèque du bureau) et la clé (dans la pièce secrète). Comme le livre est caché, nous ne l’attacherons pas à une pièce.
Nous ajouterons à ceci la fenêtre du bureau et la bibliothèque, comme scenery. Il y aura aussi la plaque de pression, qui sera cachée.

idtypedescriptionemplacement
livreobjectUn livre jaune
cleobjectUne clépiece_secrete
fenetresceneryUne fenêtrebureau
bibliothequesceneryUne bibliothèquebureau
plaquesceneryUne plaque de pression

Dans une ligne vide dans la partie objects {}, appuyez sur CTRL + ESPACE pour créer le template objet. Vous pourrez choisir si l’objet doit être codé comme un object ou scenery.

Changez l’ID de l’objet (ici adjective_noun ), puis indiquez sa description entre les guillemets. Si l’objet doit être ajouté à une pièce, mettez votre curseur dans l’espace vide entre " et ; , et appuyez sur CTRL + ESPACE pour ajouter l’option at =. Indiquez enfin la pièce voulue.

Répétez ceci pour tous les objets nécessaires :

Ajouter des barrières

Avec ces objets placés, nous avons besoin d’ajouter des barrières entre certaines pièces : la porte verrouillée au sud de l’entrée, la porte cachée pour aller dans la pièce secrète, et le mécanisme dans la pièce secrète. Le code nécessaire doit être placé dans une nouvelle section : barriers {}.

Dans une ligne vide, en bas de la page, appuyez sur CTRL + ESPACE et sélectionnez l’option barriers {}.

À l’intérieur de cette section, appuyez de nouveau sur CTRL + ESPACE pour sélectionner le type de barrière.

Adventuron a trois types de barrières : block, block_path, et door. block et block_path fonctionnent de la même manière, sauf que l’emplacement de la barrière est formaté différemment. door, par contre, demande l’utilisation d’un objet sur celle-ci pour être déverrouillée. 

La porte d’entrée

Pour la porte d’entrée nous allons utiliser la barrière door, et la relier à la clé pour l’ouvrir.

Dans une ligne vide dans barriers {}, appuyez sur CTRL + ESPACE pour sélectionner door. Changez l’ID pour porte. Dans la ligne from =, indiquez entree; et dans la ligne to =, indiquez sortie. Enfin, dans la ligne key =, indiquez l’objet cle.

Note : vous pouvez aussi appuyez sur CTRL + ESPACE dans chaque ligne pour avoir la liste d’options possibles.

Du fait que les messages d’erreurs ne sont qu’en anglais (ou espagnol), nous avons besoin d’ajouter quelques options supplémentaires. En dessous de la ligne key =, appuyez sur CTRL + ESPACE et choisissez l’option messages {}

Dans cette sous-section, appuyez de nouveau sur CTRL + ESPACE pour sélectionner les options voulues. 

Ici, nous avons rempli bang_into_door = (lorsqu’on se prend la porte), et cant_open_locked_door = (lorsqu’on utilise la commande OUVRIR PORTE).

La porte cachée

Dans le bureau, nous avons une porte cachée derrière la bibliothèque. Celle-ci s’ouvre lorsque le-a joueur-se prend le livre. Pour que la barrière s’ouvre seulement lorsque le livre n’est plus dans la bibliothèque, nous allons avoir besoin d’une variable – appelons-là livre_dans_bilio.

Dans une ligne vide dans barriers {}, appuyez sur CTRL + ESPACE pour sélectionner block. Changez l’ID pour biblio. Dans la ligne location =, indiquez piece_secrete. Replacez ensuite la ligne message = par block_when =, et indiquez sur la ligne livre_dans_bilio.

À ce stade, Adventuron vous lancera sûrement un message d’erreur, parce que la variable n’a pas encore été définie. Pour remédier à ceci, nous devons ajouter la section booleans {}. En bas de la page, appuyez sur CTRL + ESPACE et sélectionner donc booleans {}.

À l’intérieur de cette section, appuyez encore sur CTRL + ESPACE pour ajouter le template de la variable. Remplacez l’ID par livre_dans_bilio et ajoutez default = "true" entre boolean et ; (car le livre est dans la bibliothèque au départ).

Le mécanisme dans la pièce secrète

Vu que les barrières ne bloquent qu’une seule direction, nous avons besoin d’une barrière supplémentaire de la pièce secrète vers le bureau, qui se fermera si la plaque de pression n’a pas assez de poids. Nous utiliserons ici une variable appelée poids.

Dans une ligne vide dans barriers {}, appuyez sur CTRL + ESPACE pour sélectionner block_path. Changez l’ID pour mecanisme. Dans la ligne from =, indiquez piece_secrete; et dans la ligne to =, indiquez bureau. Remplacez ensuite la ligne message = par block_when_not =, et indiquez sur la ligne poids.

À ce stade, Adventuron vous lancera sûrement un nouveau message d’erreur, parce que la variable poids n’a pas encore été définie. Dans la section booleans {}, appuyez sur CTRL + ESPACE pour ajouter le template de la variable. Remplacez l’ID par poids et ajoutez default = "true" entre booleans et ; (car la clé est sur la plaque de pression).

Ajouter les commandes pour résoudre les puzzles

Le jeu a trois puzzles : prendre le livre pour révéler la pièce secrète, échanger le livre pour la clé sur la plaque de pression, et déverrouiller la porte de sortie.

Pour que le-a joueur-se puisse faire ceci, nous avons besoin de créer des commandes.

Révéler la pièce secrète

Pour révéler la pièce secrète, nous avons besoin de créer deux commandes : examiner la bibliothèque et prendre le livre.

Créer le livre

Pour que l’objet devienne visible lorsque le-a joueur-se examine la bibliothèque, nous devons lier la création de l’objet à la commande spécifique. Pour faire ceci, nous aurons besoin de créer une section on_command {} et un bloc de commandes avec match.

Dans une ligne vide, en bas de la page, appuyez sur CTRL + ESPACE et sélectionnez l’option on_command {}.

À l’intérieur, appuyez sur CTRL + ESPACE et sélectionnez l’option match.

Remplacez get lamp avec la commande voulue, ici x bibliotheque. Afin de limiter l’utilisation de cette commande pour seulement le bureau et de créer un seul livre, nous avons besoin de créer une expression conditionnelle.

À l’intérieur des parenthèses { }, appuyez sur CTRL + ESPACE et sélectionnez l’option if. Puis dans les parenthèses ( ), appuyez sur CTRL + ESPACE et sélectionnez l’option is_at (). Enfin, appuyez sur CTRL + ESPACE et sélectionnez la pièce bureau

Ceci crée la première condition (être dans le bureau). Nous devons maintenant ajouter la deuxième condition (ne pas créer plus d’un seul livre).

Mettez le curseur entre " et ), et ajoutez && (pour indiquer la seconde condition),  appuyez sur CTRL + ESPACE et sélectionnez has_not_created (). Enfin, appuyez sur CTRL + ESPACE et sélectionnez l’objet livre.

À l’intérieur de cette expression, nous allons ajouter deux lignes de codes :

Dans la ligne vide, appuyez sur CTRL + ESPACE et sélectionnez l’option create, puis indiquez l’objet livre entre les guillemets.

Nous pouvons aussi ajouter une réponse à la description, pour indiquer au-à la joueur-se de la création du livre, avec la commande print.

Il est aussi possible d’inclure des réponses différentes dépendant de l’emplacement du livre dans cette pièce, en jouant avec les expressions conditionnelles.

Prendre le livre

Dans une ligne vide dans on_command {}, tapez sur CTRL + ESPACE, sélectionnez l’option match, et indiquez la commande prendre livre.

Dans ce bloc de code, nous avons besoin de créer une expression conditionnelle, pour s’assurer que le livre est bien présent dans la pièce (avec is_present ()) et qu’il n’est pas dans notre inventaire (avec is_carried () ).

Note : [ ! ] indique l’inverse.

Si ces conditions sont remplies, nous allons ajouter le livre dans l’inventaire du-de la joueur-se, grâce à pocket, et un message de réponse avec print.

Enfin, pour révéler la pièce secrète, nous avons besoin d’une nouvelle expression conditionnelle (pour s’assurer que nous sommes bien dans le bureau) et changer la valeur de la variable livre_in_biblio avec set_false.

Examiner le livre

Pour donner un indice que le livre doit être utilisé plus tard, nous allons ajouter une commande pour examiner le livre. Cette commande ne sera utilisable que lorsque le livre est dans l’inventaire.

Récupérer la clé

Pour récupérer la clé posée sur la plaque de pression, nous aurons besoin de plusieurs commandes et lignes de code pour lier les actions au mécanisme de la porte secrète. Nous allons aussi donner l’option au joueur d’échanger la clé pour le livre ou de faire ces actions séparément.

Examiner la clé

Lorsque le-a joueur-se arrive dans la pièce, seule la clé est indiquée sur la page. De ce fait, il faudra lui montrer que la clé est sur la plaque dans la description. Par contre, la clé étant prenable, nous aurons besoin d’indiquer seulement la plaque si la clé n’a pas encore été prise.

En examinant la clé, nous révélerons aussi la plaque de pression dans la description de la salle.

Examiner la plaque de pression

En examinant la plaque de pression, le-a joueur-se trouvera un indice pour manipuler le puzzle. En utilisant la variable poids et des expressions conditionnelles, nous pouvons changer la réponse pour cette action.

Notez qu’il n’y a pas qu’une mais deux commandes possibles pour cette action. Adventuron laisse la possibilité d’ajouter des synonymes ou commandes alternatives en les séparant par un point virgule ;.

Échanger la clé

Codons maintenant la commande pour que le-a joueur-se puisse échanger la clé contre le livre. Le livre restera donc dans cette pièce, et la clé dans son inventaire.

Prendre la clé puis poser le livre

Pour cette action, nous allons créer deux commandes : prendre la clé et poser le livre. Chaque commande influencera la description du mécanisme et la valeur de la variable poids.

Après la réponse à la commande, la clé se retrouvera dans l’inventaire, la valeur de poids deviendra faux (ce qui fermera la barrière créée au départ), et dans le cas où le-a joueur-se aurait pris la clé sans l’examiner, nous ajouterons la plaque de pression à la pièce.

Afin de rouvrir la porte, le-a joueur-se devra poser quelque chose sur la plaque de pression. Pour qu’il-elle ne soit coincé-e dans la pièce, dans le cas où le livre n’est pas dans l’inventaire ou dans la pièce, le-a joueur-se aura aussi l’option de redéposer la clé sur la plaque.

Déverrouiller la porte

Enfin, la clé dans l’inventaire, le-a joueur-se pourra déverrouiller la porte et s’échapper!

Nous aurons besoin du code door_operation pour manipuler la porte, et la déverrouiller si la clé est insérée dans la serrure. Grâce à l’opération open_unlock, la porte sera non seulement déverrouillée mais aussi ouverte.

Ajouter un écran de départ

Si vous voulez ajouter un écran au début du jeu pour une introduction, vous pouvez utiliser la section on_startup {}. Vous pouvez utiliser print pour ajouter du texte press_any_key pour amener le-a joueur-se dans la pièce de départ.

Par exemple :

Terminer le jeu

Adventuron a une commande spéciale pour “gagner” le jeu, avec win_game. Ceci peut être inclus dans une description ou une réponse à une action.

Ici, nous l’ajouterons lorsque le-a joueur-se se trouvera dehors.

Exporter en HTML

Adventuron a plusieurs options afin d’enregistrer un jeu : Save file pour télécharger le code dans un fichier .txt ou Compile pour exporter en format HTML (la version jouable).
Un jeu codé en format Adventuron ne peut être que compilé dans l’interface en ligne.

Afin de pouvoir compiler le jeu, vous devez vous assurez qu’il n’y ait aucune erreur, et d’avoir appuyé sur CTRL + S (pour “sauvegarder” la dernière version). Cliquez ensuite sur le bouton MENU puis Compile.

Vous pouvez maintenant jouer à votre jeu !

Vous pouvez trouver le code du jeu de cet article ainsi que sa version compilée ci-dessous: