Introduction

Les jeux vidéo en mode texte

Un jeu vidéo en mode texte (text-based game en anglais) est un jeu vidéo sur écran dans lequel le joueur est plongé dans un univers fictif et doit résoudre des énigmes pour progresser dans l’histoire. Le joueur interagit avec le jeu en tapant des commandes dans un terminal. Le jeu répond en affichant du texte. Le jeu est donc très proche d’un jeu de rôle papier, mais avec un ordinateur pour gérer les règles et l’univers. Le jeu n’utilise pas de graphisme, mais uniquement des phrases (texte, des questions et des réponses).

Le jeu d’aventure textuel est un jeu très ancien, qui a connu son heure de gloire dans les années 80. Il est aujourd’hui un peu tombé en désuétude, mais il reste un excellent exercice de programmation. Il est aussi très facile à mettre en oeuvre, car il ne nécessite pas de graphisme, ni de son, ni de réseau, ni de base de données, ni de moteur physique, ni de moteur de rendu, etc. Il ne nécessite qu’un terminal et un langage de programmation. Il est donc idéal pour un premier projet de programmation.

Pour avancer dans un jeu textuel, le joueur est invité à entrer des actions (se baisser pour ramasser une clé, examiner un tronc d’arbre, marcher vers le sud, tuer un monstre, etc.) en fonction du contexte et lieu où il se trouve. Ce lieu est décrit par le programme (vous vous trouvez devant le porche de la maison, vous êtes dans la forêt face à un orc, etc…) . De multiples autres critères entrent parfois en compte (vie, arme, état du personnage, etc.).

Les jeux textuels sont souvent des jeux de rôle, mais il existe aussi des jeux de stratégie, de gestion, de simulation, etc.

Un exemple : Zork

Zork I: The Great Underground Empire est un jeu vidéo d’aventure textuel développé à l’origine en 1977 par un groupe d’étudiants du MIT, connu sous le nom de « Dynamic Modeling Group ». Il est considéré comme l’un des jeux les plus emblématiques de l’histoire des jeux vidéo et a contribué à populariser le genre des jeux d’aventure textuels.

Dans Zork I, le joueur incarne un aventurier qui explore les profondeurs d’un empire souterrain, où il doit résoudre des énigmes, trouver des trésors et vaincre des ennemis pour progresser. Le jeu se déroule entièrement par le biais de descriptions textuelles et de commandes tapées au clavier. Le joueur doit utiliser son imagination et sa logique pour résoudre les énigmes et progresser dans l’aventure.

Le jeu a connu un grand succès dans les années 1980 et a inspiré de nombreux autres jeux d’aventure textuels ainsi que des adaptations pour d’autres supports, tels que des romans et des bandes dessinées.

_images/zork.jpg

On peut y jouer en ligne ici.

Voici quelques pas dans le jeu

West of House
You are standing in an open field west of a white house, with a boarded front door.
There is a small mailbox here.

>open mailbox
Opening the small mailbox reveals a leaflet.

>read leaflet
(Taken)
"WELCOME TO ZORK!
ZORK is a game of adventure, danger, and low cunning. In it you will explore some of the most amazing territory ever seen by mortals. No computer should be without one!"

>drop leaflet
Dropped.

>go south
South of House
You are facing the south side of a white house. There is no door here, and all the windows are boarded.

>go east
Behind House
You are behind the white house. A path leads into the forest to the east. In one corner of the house there is a small window which is slightly ajar.

>open window
With great effort, you open the window far enough to allow entry.

>enter house

Kitchen
You are in the kitchen of the white house. A table seems to have been used recently for the preparation of food. A passage leads to the west and a dark staircase can be seen leading upward. A dark chimney leads down and to the east is a small window which is open.
On the table is an elongated brown sack, smelling of hot peppers.
A bottle is sitting on the table.
The glass bottle contains:
A quantity of water

La solution complète

_images/zork_map.png

Objectifs

L’objectif est de créer un jeu vidéo en mode texte (beaucoup plus modeste que Zork !), en utilisant le langage Python.

Une première partie du travail consiste à définir l’univers du jeu : le lieu où se déroule l’action, les personnages, les objets, etc. Une fois l’univers défini, il faut définir les règles du jeu : comment le joueur interagit avec l’univers, comment l’univers réagit aux actions du joueur, etc. Enfin, il faut écrire le code qui implémente ces règles.

Dans sa première version, la communication entre le joueur et la machine se fera uniquement en mode texte dans un terminal.

Comme il est assez facile de le porter dans un environnement graphique, dans une seconde version, une interface graphique améliorera la jouabilité.

Organisation

Le mini projet est réalisé en binôme, dont la constitution est libre. Les étudiants n’ont pas besoin d’appartenir au même groupe pédagogique.

Remise du travail

Les instructions et la date limite de remise du travail sont précisées sur la page d’accueil de l’unité.

La remise du travail s’effectue sous la forme de la remise d’une archive zip sur la plateforme Blackboard.

L’archive devra contenir les seuls fichiers strictement nécessaires pour exécuter le code (et uniquement ceux là) ;

  • un fichier principal main.py qui permet de lancer le jeu avec la commande $ python main.py;

  • les autres fichiers .py nécessaires au fonctionnement du jeu ;

  • un rapport au format pdf structuré de la façon suivante :

    • guide utilisateur (comment jouer à votre jeu : les conditions de victoire, les commandes, etc.) ;

    • guide développeur (le diagramme de classes) ;

    • perspectives de développement (ce que vous imaginez pour améliorer votre jeu) ;

  • une vidéo de démonstration de votre jeu (3 minutes max, OBS Studio est une solution open source performante). La vidéo doit contenir :

    • présentation de l’univers du jeu (carte, personnages, objets, etc.) ;

    • démonstration d’un parcours perdant ;

    • démonstration d’un parcours gagnant.

Evaluation

Votre code doit pouvoir être exécuté sur une machine différente de la machine utilisée pour le développement. Il est fondamental d’avoir ce contexte en tête. En particulier toute référence absolue à un fichier est proscrite.

Il sera impératif de vérifier que votre projet se dézippe et marche correctement sur une machine différente de celle utilisée pour la conception avant de le soumettre.

Le projet sera évalué sur la base des critères suivants :

  • sur 2 points : la fonctionnalité du code

    • 0 : il y a une erreur à l’exécution ;

    • 1 : une erreur se produit parfois ;

    • 2 : le code fonctionne.

  • sur 5 points : le score pylint (comme vu dans le chapitre Qualité du code). A travers ce score sont évalués : la structuration, les commentaires, le nommage, etc. ;

  • sur 5 points : la qualité du jeu (jouabilité, intérêt, etc.) ;

    • 1 : le travail est trop loin des attentes ;

    • 2 : il y a quelques améliorations à apporter ;

    • 3 : le travail correspond à ce qui est attendu ;

    • 4 : le travail est supérieur à ce qui est attendu ;

    • 5 : le travail est exceptionnel.

  • sur 4 points : la qualité du rapport. Il doit satisfaire les critères énoncés dans la section Remise du travail ;

    • 1 : le travail est trop loin des attentes ;

    • 2 : il y a quelques améliorations à apporter ;

    • 3 : le travail correspond à ce qui est attendu ;

    • 4 : le travail est supérieur à ce qui est attendu ;

  • sur 4 points : la qualité de la vidéo de présentation. Elle doit satisfaire les critères énoncés dans la section Remise du travail ;

    • 1 : le travail est trop loin des attentes ;

    • 2 : il y a quelques améliorations à apporter ;

    • 3 : le travail correspond à ce qui est attendu ;

    • 4 : le travail est supérieur à ce qui est attendu ;