Paul
 Le Flem

Agathe Verasdonck - Aventure culture

Un jeu vidéo pour apprendre

Jouer au jeu
Mockup du portfolio de Agathe Verasdonck

LE CLIENT

Agathe Verasdonck est actuellement en dernière année de Bachelor Création Numérique. Dans le cadre de ces études, il lui à été demandé de présenter 4 de ces mentors. Après reflexion sur le sujet, elle à décidé de les présenter sous forme d'un petit jeu vidéo, baptisé l'aventure culture.

CAHIER DES CHARGES

Agathe m'as transmis une maquette représentant les différents éléments du jeu, et m'a présenté le fonctionnement souhaité. Le principe est le suivant : au lancement du jeu, des dialogues apparaisent au fur et a mesure, introduisant le jeu. Suite à ces dialogues, le joueur à la possibilité de choisir entre trois Agathe différentes en guise de personnage. Un menu est ensuite affiché, proposant de choisir le niveau souhaité (un seul est actuellement disponible). Le jeu peut alors démarrer ! Sur la carte on retrouve les quatre mentors, chacun proposant au joueur de répondre à un quizz sur sa vie.

Mon portrait
LA COLLAB
PAUL LE FLEM X AGATHE VERASDONCK
Portrait de Agathe Verasdonck

Technologies utilisées

  • HTML
  • Javascript
  • Css

Rôle

  • Conception technique
  • Développement

Conditions de travail

  • Travail seul
  • Réalisé à partir d'une maquette

Conception du jeu

J'ai vu la réalisation de ce jeu comme un challenge. N'étant absolument pas développeur de jeu vidéo, j'ai décidé de le concevoir en Javascript, ayant déjà eu l'occasion de réaliser quelques petits jeux pendant mon temps libre. Je n'ai utilisé aucun framework ou librairie, souhaitant garder la base de code simple. J'ai utilisé une balise HTML Canvas, qui me sert de "tableau", où je viens afficher les éléments du jeu.

Conception des composants

Par préférence et pour pouvoir facilement créer de nouveaux niveaux, j'ai développé le jeu en orienté objet. Une classe principale Game représente le jeu dans sa globalité. C'est elle qui en gère le fonctionnement et qui vient instancier les différents éléments. Une classe "secondaire", Level, est étendue par les différents niveaux du jeu. C'est elle qui à pour rôle de démarrer "l'event loop" : une fonction appelée à chaque "frame", qui démarre les différentes routines.

Création du joueur

Le joueur est représenté par la classe Player. Elle ne comporte qu'un minimum de responsabilitées : afficher le joueur, et lui permettre de se déplacer. Elle stocke également toutes ces informations, telles que l'image à utiliser (qui est choisit par l'utilisateur au début du jeu), sa position etc...

Personnages

Les personnages sont "le gros" du jeu : c'est en intéragissant avec eux que l'on peut alors lire leur biographie, et répondre à un quizz, ce qui permet, une fois tous les quizz validés, de terminer le jeu et d'obtenir le certificat de réussite.

Ils sont représentés dans le code par la classe Caracter. C'est elle qui à la responsabilité de gérer les évènements en rapport avec le joueur, comme d'ouvrir le dialogue permettant de lire leur biographie et répondre a leur quizz, si le joueur appuie sur la touche "e"

Invitation à répondre au quizz Steve Jobs
Instanciation d'un niveau

Création d'un niveau

Souhaitant pouvoir faire évoluer le jeu, j'ai donc créé une classe Level, qui permet la création d'un niveau de manière simple, en l'étendant.

Pour la création d'un niveau (image à gauche), il suffit de décrire les éléments qui le composent. Le jeu étant assez simple dans sa conception, seuls deux éléments sont à renseigner : les personnages présents sur le niveau, stockés dans le tableau this.caracters et les murs présents sur le niveau (seul un sol est présent).

Une fois les personnages non-joueurs instanciés, il faut alors définir un "callback" : la fonction qui sera appelé lors de l'intéraction avec un personnage. Chaque personnage a son propre "callback", dans lequel on crée un objet correspondant aux informations de sa biographique, et aux questions de son quizz. Cet objet sera alors passé à une nouvelle instance de CaracterQuizz, qui à pour rôle d'afficher une page comportant toutes les informations renseignés dans l'objet qui lui est transmis.