Récréation multijoueur du classique R-Type en C++20, avec architecture client-serveur réseau temps réel et moteur ECS.
Telecharger & tester
cmake -B build && cmake --build build && ./r-type_server puis ./r-type_client (jeu reseau client/serveur type shoot-em-up, moteur ECS en C++)
R-Type est un projet Epitech (Tek3, module Advanced C++) qui consiste a recreer, en C++, une version reseau du celebre shoot'em up horizontal R-Type, en concevant au prealable un veritable moteur de jeu generique et reutilisable plutot qu'un jeu monolithique. Le projet impose une architecture client-serveur ou plusieurs joueurs affrontent simultanement les ennemis Bydos, avec un serveur faisant autorite absolue sur l'etat du jeu et des clients purement charges du rendu et de la saisie utilisateur.
Le serveur doit etre multithreade pour ne jamais bloquer sur les communications reseau et faire tourner la boucle de jeu independamment des clients, notifier chaque client de tous les evenements (apparition de monstres, deplacements, destructions, tirs) et rester robuste a la deconnexion inopinee d'un joueur. Les communications, obligatoirement en UDP pour toute donnee de jeu (une connexion TCP annexe etant toleree mais devant etre justifiee), s'appuient sur un protocole binaire concu et documente par l'equipe, avec gestion explicite des paquets malformes pour eviter tout crash ou depassement de tampon.
Le client peut utiliser SFML, SDL ou Raylib pour le rendu, l'audio et les entrees, mais les moteurs de jeu existants (Unreal Engine, Unity, Godot) sont formellement interdits. Le gameplay reproduit les mecaniques originales : defilement horizontal du starfield independant de la vitesse CPU (gestion par timers), deplacement au clavier, monstres apparaissant aleatoirement a droite de l'ecran, tirs des deux camps, et jusqu'a quatre joueurs simultanement identifiables visuellement.
Le projet est structure en deux livrables : une premiere partie centree sur l'architecture logicielle du moteur (avec des sous-systemes decouples pour le rendu, le reseau et la logique de jeu, inspires du pattern Entity-Component-System) menant a un prototype jouable, puis une seconde partie ou l'equipe choisit librement d'approfondir un ou plusieurs axes avances parmi l'architecture logicielle (rendre le moteur generique, reutilisable comme bibliotheque independante, et capable de faire tourner un second jeu different), le reseau avance, ou le design de gameplay.
Les exigences transversales imposent CMake comme systeme de build avec un gestionnaire de dependances tiers (Conan, Vcpkg ou CMake CPM) garantissant un projet auto-suffisant sans dependance systeme, une portabilite Linux obligatoire et Windows/MSVC fortement recommandee (le sous-systeme WSL ne comptant pas comme portabilite reelle), ainsi qu'une documentation technique complete en anglais couvrant l'architecture, une etude comparative des choix technologiques, le protocole reseau documente sous forme de RFC, et les aspects d'accessibilite pour utilisateurs en situation de handicap.
Projet suivant
