Jeu vidéo en C++

Description

Nous allons créer un jeu vidéo de type RPG qui se déroule dans un monde à créer, avec un personnage principal manipulable et des personnages secondaires comme des monstres ou des vilageois·es avec lesquels interagir.

Ce projet a pour objectif de proposer une initiation au langage compilé C++, avec la mise en place de classes pour s’entrainer à la programmation orientée objet.

Contraintes

  • Durée: 2 semaines
  • Langage: C++

Notions abordées

  • Gestion d’équipe
  • Manipulation de diagrammes de classe et de maquettes

Se préparer

Plénières

Ateliers

Orientation du projet

Idées de monde à créer

Si vous manquez d’idées, voici une petite liste dans laquelle piocher:

  • Un monde d’heroic-fantasy, comme Zelda, où le personnage principal a une épée et doit combattre ce qu’il considère etre des monstres
  • Un monde rempli d’insectes, comme dans Hollow Knight
  • Un monde où l’on est un·e postier·e qui distribue du courrier. Dans ce cas, les monstres deviennent des personnages à livrer et les armes deviennent des lettres.
  • Un monde où vous etes une grenouille qui a besoin de s’hydrater dans des marres et d’éviter les faucons qui veulent les manger

Je débute

1. Initialisation du jeu

Le but est ici d’initialiser notre jeu. Dans cette étape, nous vous proposons de mettre en place:

  • une carte de jeu (que ce soit une carte avec plusieurs écrans, comme dans Zelda, ou une carte filante, comme dans Mario)
  • un personnage principal

Le personnage principal pourrait se balader dans la carte, avec les commandes du clavier de votre choix.

2. Ajout de caractéristiques aux personnages

Pour rendre notre personnage un peu plus interactif, on pourrait imaginer lui ajouter des caractéristiques comme un nom et des points de vie.

3. Ajout d’obstacles

La carte est pour le moment plutôt vide. Essayez d’ajouter des obstacles sur lesquels le personnage ne puisse pas passer (comme des buissons ou des rochers).

4. Ajout de monstres

Notre personnage a maintenant un monde à découvrir, avec possiblement des obstacles qu’il peut rencontrer. Essayons d’ajouter à notre monde deux types de monstres différents (ou des personnages avec lesquels interagir dans les étapes suivantes), avec des déplacements aléatoires.

Si vous le souhaitez, ces monstres pourraient faire perdre un point de vie au personnage principal dès qu’il y a collision avec lui.

Questions à se poser

  • Le jeu sera t-il en tours par tours ou en temps réel ?
  • De quelles classes allez vous avoir besoin ?

Ressources

Objectifs pédagogiques

  • Manipulation du C++
  • Création de classes avec héritage

Je suis à l’aise avec certains langages

1. Enrichissement du jeu

Ajoutons plus d’interactions entre nos personnages:

  • un inventaire permettant au personnage d’avoir des objets
  • des actions: marcher, taper dans différentes directions, faire interagir le personnage principal avec d’autres personnages (Par exemple: un monstre fait 1 de dégât s’il touche le personnage),
  • des lachers de certains objets par les monstres, récupérables dans l’inventaire,
  • des cases piège qui font perdre de la vie ou des cartes postales
Ressources

2. Rencontrer des PNJ

  • 1 PNJ (avec des dialogues pré-définis)

3. Pouvoir ajouter des sons au jeu

Si notre jeu contient des monstres ou d’autres personnages, on aurait envie que la perte de vie ou une action spécifique engendre un son.
Essayez d’intégrer des sons à votre jeu, avec une bibliothèque comme la SFML

4. Pouvoir mettre le jeu en pause

Des fois, on a envie de prendre une pause. Ajoutons cette option à notre jeu, pour pouvoir prendre un café entre deux mondes.

5. Pouvoir enregistrer sa partie

D’autres fois, la pause peut etre plus importante, et on voudrait enregistrer sa partie pour reprendre où nous en étions à un autre moment. Ajoutons cette option pour nous éviter de tout recommencer !

Objectifs pédagogiques

  • Elaborer l’aspect immersif d’un jeu vidéo en manipulant des actions et des sons
  • Ajout d’options pour rendre un jeu résilient
  • Personalisation d’un jeu avec mise en place d’un scenario

Je veux aller plus loin

1. Evolution du système de jeu

Continuons à ajouter encore plus d’interactions avec:

  • une gestion des collisions (bloqué par un arbre mais pas par des feuilles par exemple)
  • un ajout de nouveaux objets comme les coeurs (qui redonnent de la vie) ou une arme (qui fait perdre de la vie aux monstres)
  • un ajout des caractéristiques des armes (une arme fait X dégats)
  • une gestion de la vie du personnage et des monstres par rapport aux dégats (baisse de X si touché par un monstre, augmente de X si récupère un coeur)

2. Rendre la carte non explorée non visible à l’utilisateur·trice

Lorsque le personnage se balade, il connait la carte entièrement meme s’il ne l’a pas explorée. Que diriez-vous de cacher toute la carte qui n’a pas encore été explorée pour compliquer un peu le jeu ?

3. Jouer avec une manette

Il est des fois plus agréable de pouvoir jouer avec une manette usb qu’avec un clavier. Essayez d’ajouter cette possibilité à votre jeu.

4. Personalisation des graphiques

Si vos graphismes sont encore basiques (utilisation de la console pour affichage), essayez d’utiliser une bibliothèque, comme la SFML par exemple, pour rendre votre jeu plus coloré.

Ressources

Ressources générales