Ce programme écrit en Python permet de créer son propre jeu d’aventure à la façon des livres-jeu « dont vous êtes le héros » qui étaient si populaires fin des années 80s. L’idée de créer ce programme m’est venue en lisant le numéro 31 du magazine Jeux et Stratégie, qui comporte un article d’initiation au jeu d’aventure, Le mystère de la statue maudite (voir la suite de cet article). J’ai eu envie d’en faire une version informatique (34 ans après la publication) puis eu l’idée de faire un programme générique de gestion de jeu d’aventure simple.
Le principe
L’aventure est décrite dans un fichier ini dont la syntaxe est explicitée dans la suite de cet article.
Le jeu est très simple. Le joueur navigue dans l’aventure en effectuant un choix parmi un nombre fini d’options numérotées. En début de partie, il dispose d’un nombre de points de vie prédéfini qui par la suite évolue à la hausse ou à la baisse. Si le nombre de points de vie tombe à zéro, l’aventure est terminée…
L’aventure peut être lancée suivant deux modes ; en mode console (dans un terminal) ou en mode graphique (dans une fenêtre). Le mode graphique permet d’ajouter des images.
Installation et lancement
Extraventure est distribué sous licence GPL version 3. L’archive au format tar compressé est téléchargeable ici :
L’archive contient, à titre d’exemple, le jeu d’aventure « Le mystère de la statue maudite« . Le fichier mystere_statue_maudite.ini
ainsi que les fichiers images contenus dans le répertoire img sont donnés à titre d’exemple et ne sont pas distribués suivant la licence GPL. Ils sont issus du magazine Jeux et Stratégie dont les actuels propriétaires conservent la propriété intellectuelle.
Pour installer le jeu, il suffit d’extraire l’archive dans un répertoire de votre choix :
tar xvzf extraventure.tar.gz
Pour lancer une aventure, depuis la console saisir la commande suivante :
./extraventure.py <option> <fichier ini>
Mode console si <option> est 'text','texte','txt' ou 'console'
Mode graphique si <option> est 'graphic', 'graphics' ou 'graphique'
<fichier ini> désigne le fichier qui décrit l'aventure qui sera entreprise par le joueur.
Comment créer votre aventure ?
Très simplement, en décrivant votre aventure dans un seul fichier ini. La syntaxe est volontairement simple. Il comporte une première section INTRO
suivie de plusieurs sections SCENE
.
La section INTRO
est unique, elle permet de présenter l’aventure et affiche une aide si le joueur le souhaite. Voici la syntaxe :
INTRO = { titre = "titre de l'aventure" image = "image_intro.pgm" # Nom du fichier image d'intro, vide ("") si pas d'image. desc = "description ou introduction" vie = 12 # Nombre de points de vie en début de partie. aide = "aide pour le joueur" }
Chaque SCENE
décrit une scène de l’aventure, c’est à dire ce que voit le joueur et les actions possibles. La SCENE
comporte un numéro qui est son identifiant unique, une image optionnelle, une description, une sous-section VIE
(optionnelle) permettant de faire évoluer les points de vie du joueur, – plusieurs sous-sections CHOIX
(optionnelles) qui décrivent les options offertes au joueur, et une sous-section FIN
(optionnelle) qui met fin à l’aventure.
SCENE = { num = 1 # Identifiant unique de la scène. image = "image_scene.pgm" # Nom du fichier image de la scene, peut être vide (""). desc = "description de la scène" VIE = { desc = "description", vie = nombre } # Optionnel. Permet de faire évoluer le nombre de points de vie de la valeur indiquée (positive ou négative). CHOIX = { desc = "description du 1er choix", goto = id_scene_choix_1 } # Si le joueur choisi cette option, la scène suivante sera celle définie par l'id à la droite du goto CHOIX = { desc = "description du 2ème choix", goto = id_scene_choix_2 } ….. ….. # Autant de choix que l'on veut }
Implémentation
Extraventure a été développé en langage Python 3 et utilise la programmation objet. L’interface graphique s’appuie sur Tkinter qui est l’interface standard de Python. Ainsi, Extraventure est multi-plateforme. Le détail des fichiers sources figurer dans le README.txt
distribué avec le programme.
Hommage à Jeux & Stratégie
Ce jeu est un hommage au magazine Jeux & Stratégie. Il a été publié dans le numéro 31 datant de février/mars 1985 (le magazine était bimensuel à cette période).
Le scénario a été conçu par Denis Gerfaud (concepteur du jeu de rôle onirique Rêve de Dragons). Il a été conçu comme un jeu d’initiation au jeu de rôle, en présentant un jeu d’aventure simplifié, pouvant également servir de base à un scénario plus élaboré.
Le jeu initial se déroulait sans l’aide d’un ordinateur, à la manière d’un jeu d’aventure dont vous êtes le héros.
Vous êtes au départ dans un lieu inconnu ; votre but est de trouver la sortie.
Vous possédez au début 12 points de survie. Chaque situation difficile, un combat par exemple, vous coûtera un certain nombre de points.
Tant qu’il vous reste des points de survie, vous êtes en vie et sortez vainqueur de la situation (avec les points en moins) ; s’il ne vous en reste pas assez, vous succombez… et c’est la fin.
Bon courage !!
Bonjour, quelques petites erreurs dans le fichier mystere-statue-maudite.ini :
l’orbitre => orbite
possédez vous ? => possédez-vous
la petite see => la petite salle
oeil => œil
A => À
vous a vu! => vu !
à gronder! => gronder !
des horreurs! => horreurs !
est immédiate! => immédiate !
à déblayer? => déblayer ?
resté ouvert? => ouvert ?
qu’un seul oeil: => oeil :
Merci pour ces corrections, ces erreurs ont échappé à ma vigilance… Je regarde pour corriger. Sinon, êtes-vous arrivé au bout de l’aventure ?
Non, je n’ai pas joué. Je fais une lecture séquentielle de l’histoire d’après le code source qui correspond, à peu près, à ce que j’ai pu faire en Inform 6. La syntaxe est très lisible et m’apparaît accessible pour qui voudrait s’essayer à ce genre d’exercice et de distraction ; c’est bien là l’essentiel.
Merci pour ce retour.
Afin d’éviter l’affichage d’une valeur négative : « Il vous reste moins -4 points de vie. », je suggère, après la mise à jour de la variable self.life, self.life += sc.delta_life, de la mettre à 0 si elle est négative.
Oui c’est une bonne suggestion, et simple à mettre en oeuvre. Je vais modifier le programme quand j’aurai un moment (j’ai d’autres projets en cours)