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épartlocations {}
, qui listera les différentes sallesconnections {}
, qui indiquera les connexions entre les sallesobjects {}
, 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 ID | Description |
entree | Vous êtes dans la salle d’entrée. |
bureau | Vous êtes dans le bureau. |
piece_secrete | Vous êtes dans la pièce secrète. |
sortie | Vous ê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épart | Direction | Arrivée |
entree | nord | bureau |
entree | sud | sortie |
bureau | est | piece_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.
id | type | description | emplacement |
livre | object | Un livre jaune | – |
cle | object | Une clé | piece_secrete |
fenetre | scenery | Une fenêtre | bureau |
bibliotheque | scenery | Une bibliothèque | bureau |
plaque | scenery | Une 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:
9 octobre 2024 at 20 h 12
Bonjour !
Merci beaucoup pour cet article super utile ! Juste une petite question en tant que novice en codage, pour créer une interface en français, où faut-il entrer les lignes de codes présentes sur le Github ?
Merci encore !
maxos
10 octobre 2024 at 20 h 03
Dans différentes sections: [vocabulary] pour les verbes, mots et adjectifs, [themes] pour tout ce qui est message du système (ex: erreurs ou interface).
Depuis que le tuto a été publié, les notes pour changer la langue de l’interface ont été traduites en Français: https://github.com/paravaariar/adventuron_french_notes/blob/main/README-FR.md