Lien vers le jeu : En cavale
Comment y jouer ? Ouvrez le jeu avec le lien au dessus et demander à votre adversaire de faire de même ! La partie commence lorsque les deux s’auront connecter en inscrivant leur nom respectif.
Lien vers la vidéo de démonstration : Vidéo

Objectif du jeu
Vous êtes actuellement prisonnier et l’objectif est de s’évader cependant cette mission est impossible seul vous et votre compatriote devez ensemble trouver un moyen de s’enfuir de cette prison malgré la garde de policier. Devant vous des boutons, pièces, cible et téléporteur vous permettrons d’atteindre le drapeau vers la sortie !
Aspects techniques
Architecture multijoueur
Le jeu repose sur une architecture client-serveur en temps réel. Un serveur Node.js gère les connexions via WebSocket, permettant à deux joueurs de communiquer instantanément. Chaque action d’un joueur (déplacement, tir) est envoyée au serveur qui la redistribue à l’autre joueur.
Rendu graphique
Le jeu utilise la librairie EaselJS pour gérer le rendu sur un élément canvas HTML5. Les personnages sont animés via des spritesheets découpées en frames, et la scène est rafraîchie à 12 images par seconde via un ticker.
Détection de collisions
Un système de collision par rectangles (AABB) est utilisé pour détecter les interactions entre les objets. Pour optimiser les performances, une division de l’écran en quadrants évite de tester les collisions entre objets trop éloignés.
Gestion de la carte
La map est générée dynamiquement à partir d’une matrice de tuiles (0 = herbe, 1 = mur). Les murs peuvent être supprimés en cours de partie, par exemple en tirant sur une cible, ce qui modifie la matrice et retire le bitmap correspondant de la scène.
Déploiement
Le serveur Node.js est hébergé sur un VPS Linux et maintenu actif grâce à PM2. Apache sert les fichiers statiques du jeu et proxifie les connexions WebSocket vers le serveur Node.js via les modules proxy_wstunnel et rewrite.
Voici le lien vers un autre de mes jeux : https://portefolio.maxcorb.cv/jeu/travaux-de-donnees/
Partagez cet article :