Skip to content

Documentation multi

Shad0wC0der edited this page Apr 8, 2013 · 41 revisions

Principe

  • 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)
      

Api bwss.js

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 : **

Requêtes clientes

  • 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).

Notifications serveur

  • 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"}}

Clone this wiki locally