Jeu de Tank Multijoueur en node

Auteur :

Auteur(s) du travail : Léopold(Moi)

Date : Mars-Avril 2025

Technologie(s) : Node, Javascript, serveur, socket, communication serveur-client

Interoperabilité : Sur navigateur d'ordinateur

 

Description

Mon jeu multijoueur est un jeu de combat de tank simple et amusant, il a surtout été un moyen pour moi d’expérimenter avec les sockets et la communication entre un client et un serveur dans un contexte de jeu. C’est un jeu plutôt simple, le joueur peut bouger dans les quatre directions : haut, bas, gauche et droite et tirer avec le clic gauche de la souris. La balle va directement où la souris pointe et disparait en cas de collision avec l’autre tank ou après quelques secondes pour rendre le jeu un peu plus compliqué. Le jeu est actuellement en ligne sur https://www.leopold.monster/ et deux utilisateurs peuvent y jouer en même temps. Malheureusement, par manque de temps je n’ai pas implémenté la possibilité d’avoir plusieurs parties en même temps, mais ça ne serait probablement pas très compliqué. Vous pouvez l’essayer en ouvrant deux onglets et en créant un joueur sur chaque. L’espèce de bloc noir est simplement un mur.

Aspects Techniques

Le jeu est entièrement fait en langage web comme le HTML et le JavaScript. Le fichier HTML sert seulement à créer des SVG pour les balles et à créer un canvas qui sera ensuite envoyé et utilisé par les fichiers JavaScript pour afficher des images pour l’arrière plan et les tanks des joueurs. La communication entre le client et le serveur est faite à l’aide des sockets. Le principe est que le client envoie un message avec certaines informations au serveur, le serveur fait des transformations avec ces données ou pas selon le message et les renvoie aux deux joueurs/clients, par exemple lorsqu’un joueur tire une balle. Dans certains cas, le serveur ne renvoie pas de données, comme lors de l’initialisation de certains objets comme les murs. Les détections de collisions sont faites du côté des clients puisque mon serveur est trop médiocre et introduisait beaucoup de latence. Les positions des joueurs sont par contre synchronisées à chaque secondes pour s’assurer qu’il n’y ait pas de différence majeure dans les deux écrans.