-
Notifications
You must be signed in to change notification settings - Fork 2
Documentation multi
- Le mode multijoueur utilise le protocole WebSocket. L’implémentation choisie est WebSocketpp de C++ basée sur la librairie boost (http://www.boost.org/).
- Le code se trouve ici : https://github.com/Shad0wC0der/Bombermaaan-for-Firefox-OS-WSServer.git.
- Le mode multijoueur se distingue de deux partie distinctes :
-
Une partie dans laquelle l'utitlisateur peut créer des parties et rejoindre des rooms (salons de jeu -- phase précédent l'initialisation d'une partie).
![](http://lima.angelo.free.fr/images/bomberman1.png) ![](http://lima.angelo.free.fr/images/bomberman2.png)
-
Une partie dans laquelle les joueurs se retrouvent sur le plateau de jeu.
![](http://lima.angelo.free.fr/images/bomberman3.png)
-
bwss.js est une classe situé dans le répertoire utils permettant d’interfacer le client et serveur à travers des échanges de requêtes client/serveur. Le format de données utilisée pour l'échange est le JSON qui pour chaque objet JSON échangé contient un type de message (décrit ci-dessous et le contenu du message).
**Voici la liste des requêtes ainsi que les contenus échangés : **
- REFRESH_OUT_GAME_DATA : Demande de rafraichissement de données propres à la préparation d'une partie.
- MESSAGE : Envoi d'un message en spécifiant le message, le type de message, la cible (room ou général) et auteur.
- SEND_SELF_DATA : Envoi de données personnelles (envoi du nom du joueur).
- CREATE_GAME : Demande de création d'une partie.
- JOIN_GAME : Demande de rejoindre une room (prend en paramètre le numéro de la room) .
- LAUNCH_GAME : Demande de lancement de la partie une fois un nombre de joueur minimum atteint(prend en paramètre le numéro de la room) .
- SELECT_SERVER_MAP : Demande de sélection d'une map (prend en paramètre le numéro de la room et identifiant de la map).
- CHOOSE_COLOR : Demande de changement de couleur (prend en paramètre le numéro de la room et la couleur).
- MOVE : Envoi d'une requête de mouvement de personnage (prend en paramètre le numéro de la room le slot du joueur et la direction).
- DROP_BOMB : Envoi d'une requête de dépôt d'une bombe (prend en paramètre le numéro de la room et un slot du joueur).
- REFRESH_OUT_GAME_DATA : notification de rafraichissement des données hors jeu
{"type":"REFRESH_OUT_GAME_DATA","value":{"playerID":"playerID","games":["gameID",...],"players":[{"name":"name","id":"id"},...],"messages":[{"message":"message","authorName":"authorName","authorID":"authorID","submitTime":"submitTime"},..]}}
- REFRESH_IN_GAME_DATA : notification de rafraichissement des données en jeu
{"type":"REFRESH_IN_GAME_DATA","value":{"playerIDs":["pid1",...],"playerNames":["name1",...],"playerColors":["color1",...]}}
- NOTIFY_PLAYER_JOINED : notifie de l'arrivé d'un joueur dans une room
{"type":"NOTIFY_PLAYER_JOINED","value":{"name":"name","id":"id"}}
- NOTIFY_MESSAGE_SENT : notifie de l'envoi d'un message
{"type":"NOTIFY_MESSAGE_SENT","value":{"message":"message","author":"author","id":"id","submitTime":"submitTime"}}
- NOTIFY_GAME_STARTED : notifie de la création d'une partie
{"type":"NOTIFY_GAME_CREATED","value":{"id":"id","author":"authorName"}}
- NOTIFY_PLAYER_EXITED : notifie la sortie d'un joueur du multijoueur
{"type":"NOTIFY_PLAYER_EXITED","value":{"id":"id"}}
- NOTIFY_ERROR : notifie d'une erreur
{"type":"NOTIFY_ERROR","value":{"error":"error"}}
- NOTIFY_ENTERING_ROOM : notifie de l'entré dans une room
{"type":"NOTIFY_ENTERING_ROOM","value":{"name":"name","id":"id","gameID":"gameID"}}
- NOTIFY_GAME_REMOVED : notifie qu'une room a été supprimé et donc le jeu associé.
{"type":"NOTIFY_GAME_REMOVED","value":{"id":"gameID"}}
- NOTIFY_EXITING_ROOM : notifie de la sortie d'un joueur d'une room.
{"type":"NOTIFY_EXITING_ROOM","value":{"playerID":"playerID"}}
- NOTIFY_MAP_LIST : envoie la liste des maps disponibles
{"type":"GAME_MAP_LIST","value":{"maps":["smap1","smap2",...]}}
- GAME_MAP_DATA : notifie la map qui a été choisie.
{"type":"GAME_MAP_DATA","value":{"id":"gameID","map":"smap"}}
- NOTIFY_COLOR_CHANGED : notifie les couleurs choisies.
{"type":"NOTIFY_COLOR_CHANGED","value":{"gameID":"gameID","colors":[0,1,3,...]}}
- NOTIFY_INIT_GAME_FATA : renseigne les différentes données de jeux aux clients.
{"type":"NOTIFY_INIT_GAME_DATA","value":{"map":[[id1,id2,...],...],"characters":[{"x":"x","y":"y","speed":"speed","radius":"radius","bombUsed":"bombUsed","maxBomb":"maxBomb"},...],"blocks":[[false,false,true,...],...]}}
- NOTIFY_GAME_STARTED : notifie du lancement de la partie.
{"type":"NOTIFY_GAME_STARTED","value":{"gameID":"+gameID+"}}
- NOTIFY_GAME_FINISHED : notifie la fin de partie.
{"type":"NOTIFY_GAME_FINISHED","value":{"gameID":"gameID"}}
- NOTIFY_BOMB_DROPPED : notifie la dépôt d'une bombe.
{"type":"NOTIFY_BOMB_DROPPED","value":{"gameID":"gameID","playerSlot":"playerSlot","x":"x","y":"y","radius":"radius"}}
- NOTIFY_BOMB_EXPLODED : notifie qu'une bombe à explosée.
{"type":"NOTIFY_BOMB_EXPLODED","value":{"x":"x","y":"y"}}
- NOTIFY_MOVE : notifie d'une déplacement de joueur?
{"type":"NOTIFY_MOVE","value":{"gameID":"gameID","playerSlot":"playerSlot","direction":"direction"}}
- NOTIFY_ITEM_APPEARED : notifie qu'un objet est apparu sur le terrain.
{"type":"NOTIFY_ITEM_APPEARED","value":{"itemType":"itemType","x":"x","y":"y"}}
- NOTIFY_BONUS_ACQUIRED : notifie qu'un objet a été pris.
{"type":"NOTIFY_BONUS_ACQUIRED","value":{"playerSlot":"playerSlot","itemType":"itemType"}}
- NOTIFY_ITEM_DESTROYED : notifie qu'un objet a été détruit.
{"type":"NOTIFY_ITEM_DESTROYED","value":{"x":"x","y":"y"}}
- NOTIFY_PLAYER_KILLED : notifie qu'un joueur est mort.
{"type":"NOTIFY_PLAYER_KILLED","value":{"playerSlot":"playerSlot"}}