Un jeu en ligne de Pong en 3D, avec un matchmaking, un tchat, et un classement.
Transcendence est le dernier projet du cursus principal de l'École 42. Il doit être réalisé en équipe, dans notre cas nous étions 4 (Lucas, Alex, Arthur et moi-même). L'objectif est de réaliser un jeu de Pong en ligne avec quelques contraintes :
Alors que nous étions en train d'avancer sur RedesignerLab avec Arthur et Alex, Lucas qui n'avait jamais fait de web a pris les devants pour ce projet. On a choisi au préalable les technologies qu'on allait utiliser (Vue.js, TypeORM, Three.js, TailwindCSS), et Lucas a commencé à travailler sur le frontend, et la structure du projet. Arthur a alors pris en charge la partie sociale du backend (amitié, chat, blocage), tandis qu'Alex s'est occupé de l'authentification. De mon côté, j'avais en charge du jeu en lui-même, du matchmaking, et du classement.
J'avais dès le départ l'ambition de réaliser le jeu en 3D, avec Three.js, dans un style minimaliste. J'ai regardé quelques exemples de jeux de Pong en 3D, et j'ai commencé à travailler sur la physique de la balle, et des raquettes, sans gestion en multijoueur. J'ai ensuite intégré la gestion des rooms, et le matchmaking, pour finalement intégrer la gestion des scores et du classement.
L'une des difficultés rencontrées a été de gérer correctement les collisions, notamment avec la latence. Tres.js, n'était pas tout à fait stable à ce moment, et j'ai dû faire quelques modifications pour que le jeu soit jouable.
Lorsque le jeu a été fonctionnel, j'ai également refactor certaines parties du backend pour éliminer des bugs et de potentiels side-effects indésirables de certaines fonctionnalités. Enfin, j'ai aidé au déploiement, particulièrement sur l'élaboration de la configuration Nginx.
Le jeu est fonctionnel, et a été présenté à la fin du cursus. Nous avons eu d'excellents retours de la part des autres étudiants et du staff de l'École, et nous avons été très fiers de ce que nous avions accompli, particulièrement dans le temps imparti. Alors que le projet se réalise généralement en 4 mois, nous l'avons réalisé en 3 mois, en allant plus loin que ce qui était demandé (avec le jeu en 3D, et sur la robustesse de nos endpoints).
Le code est librement consultable sur GitHub, des instructions sont également disponibles pour déployer notre réalisation.