Skip to content

polysource-projects/cs108-chacun-multiplayer-docs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 

Repository files navigation

ChaCuN serveur pour multijoueur (CS-108)

Un serveur pour la version électronique du jeu Chasseurs et cueilleurs au Néolithique, abrégé ChaCuN, pour le cours CS-108 à l'EPFL.

Ce jeu se joue normalement sur le même ordinateur et il est possible de faire une version permettant de fonctionner avec deux ordinateurs connectés au même réseau local.

Cependant, cela ne donne clairement pas une expérience de jeu satisfaisante surtout pour faire quelques parties pendant les vacances d'été pour fêter la fin de la première année :)

Avec l'accord de M. Schinz, nous mettons sur ce dépôt GitHub la documentation complète d'un serveur de jeu hébergé dans un datacenter et que vous pouvez utiliser dans votre propre jeu.

Ce serveur permet, entre autre :

  • de rejoindre une partie (existante ou une nouvelle)
  • de synchroniser une liste des joueurs
  • d'envoyer des messages de chat
  • d'exécuter des actions

Grâce au websocket, tout ça est fait en temps réel depuis deux ordinateurs connectés sur des réseaux différents.

Un anti-cheat vérifie que le joueur courant a bien les permissions de jouer, même si un utilisateur essaye d'envoyer des paquets modifiés malveillants.

Un exemple de rendu du jeu (chacun chez nous, voir les messages de chat en temps réel à droite) :

demo

Qui devrait utiliser ce dépôt ?

Il est assez difficile de créer un serveur Websocket en Java sans librairie externe, et il faut avoir un serveur physique connecté à Internet et en ligne 24/7. C'est assez pénible de s'embêter avec ces détails semaine 12 de l'EPFL :)

Si vous n'avez pas envie de perdre beaucoup de temps avec le projet mais souhaitez implémenter une version multijoueur, utiliser cette API ne ne sera pas considéré comme du plagiat par M. Schinz, mais aucun point lors du bonus n'est garanti. Faites-le pour le challenge et pour le plaisir d'avoir un jeu qui marche !

Le serveur sera open-sourcé quelques jours après la fin des cours.

Serveur Discord

Pour toute question ou problème, n'hésitez pas à rejoindre le serveur Discord : https://discord.gg/QPHmesEzKe.

Documentation

Les messages à envoyer au serveur sont représentés par un emoji ⬆️ et les messages envoyés par le serveur par un emoji ⬇️.

Rejoindre une partie

Il est possible de rejoindre une partie en se connectant au serveur via cet endpoint: wss://cs108-chacun-multiplayer-v2.sys.polysource.ch?username=USERNAME&gameName=GAMENAME.

Un exemple de client Websocket est ici : https://stackoverflow.com/a/55464326/11856499.

Une fois connecté, vous recevrez un message du serveur vous indiquant si vous avez bien rejoint la partie, suivi des pseudos des autres joueurs triés dans l'ordre d'arrivée (le vôtre sera donc à la fin).

⬇️ GAMEJOIN_ACCEPT.Username1,Username2,Username3

Rester connecté

Pour rester connecté, vous devez répondre à chaque message de ⬇️ PING du serveur en renvoyant ⬆️ PONG.

Envoi et réception des actions

Lorsqu'un joueur effectue une action, vous devez envoyer ⬆️ GAMEACTION.codecode représente l'action encodée en base 32 selon les spécifications de l'énoncé.

Notez que le serveur vérifie que le joueur qui envoie une action a bien l'autorisation de le faire (dans le sens où c'est bien son tour).

Le serveur envoie ensuite un message ⬇️ GAMEACTION_ACCEPT.code à tous les joueurs, ou ⬇️ GAMEACTION_DENY si l'action est invalidée par le serveur.

Envoi et réception des messages

Lorsqu'un joueur souhaite envoyer un message, vous devez envoyer ⬆️ GAMEMSG.contentcontent est le contenu sérialisé du message.

Vous et les autres joueurs recevez en réponse ⬇️ GAMEMSG.username=contentusername=content est le message sérialisé.

Déconnexion de joueurs

Si un joueur se déconnecte lors d'une partie, tous les joueurs reçoivent le message ⬇️ GAMELEAVE.Username1,Username2,Username3 et la partie repasse en mode lobby (vous devez réinitialiser la partie côté client).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published