Changes between Version 8 and Version 9 of InsiaProgPerlProjetBomberStep3


Ignore:
Timestamp:
Apr 15, 2007, 12:29:30 AM (14 years ago)
Author:
Vincent Caron
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • InsiaProgPerlProjetBomberStep3

    v8 v9  
    1919Enfin d'un point de vue technique, cela veut dire qu'en plus des événements clavier, il va falloir traiter un nouveau type d'événement - dit réseau - pour réagir dès que le serveur nous envoie des informations.
    2020
    21 Notez que la communication est totalement asynchrone: les évenements de sortie (envoie d'action vers le serveur) et d'entrée (réception d'ordre du serveur) ont lieu de manière indépendante.
     21Notez que pendant le jeu la communication est totalement '''asynchrone''': les évenements de sortie (envoie d'action vers le serveur) et d'entrée (réception d'ordre du serveur) ont lieu de manière indépendante. Cependant lors de l'initialisation, pour des raisons de simplicité, nous resterons '''synchrone''' (simple ping-pong entre le client et le serveur).
    2222
    2323=== Programmation du protocole ===
     
    4949}}}
    5050
    51 '''Note''': la méthode de lecture est dite en mode ''polling'', c'est-à-dire qu'elle peut ne rien renvoyer (cad. qu'il n'y a pas de message reçu et non traité). Ce cas est représenté par le retour d'une valeur indéfinie ({{{undef}}}).
     51'''Note''': pendant le jeu (hors initialisation donc) la méthode de lecture est dite en mode ''polling'', c'est-à-dire qu'elle peut ne rien renvoyer (cad. qu'il n'y a pas de message reçu et non traité). Ce cas est représenté par le retour d'une valeur indéfinie ({{{undef}}}).
    5252
    53 === Description du protocole ===
     53
     54== Description du protocole ==
     55
     56Une fois la connexion établie, c'est au client de démarrer la discussion (en rejoignant la partie).
     57
     58=== Rejoindre une partie ===
     59
     60Pour le moment nous considérons qu'il y a une seule partie globale, donc nous disons "'''la' partie":
     61 * le client doit envoyer le message {{{JOIN <player name>}}}
     62 * le serveur envoie une réponse {{{JOIN-STATUS <OK | ERROR> <reason>}}}
     63 * si l'entrée dans la partie est acceptée, le serveur envoie la configuration du niveau en diffusant le contenu au format "standard" (cf. source:/insia/perl/bomberman/level.txt) en préfixant chaque ligne avec {{{LEVEL}}}. En fin de configuration, le serveur envoie le message {{{LEVEL-DONE}}}
     64
     65Exemple:
     66{{{
     67C JOIN madmax
     68S JOIN-STATUS OK Welcome madmax
     69S LEVEL name BomberINSIA 1
     70S LEVEL width 20
     71S LEVEL height 14
     72S LEVEL row  ********************
     73S LEVEL row    *..................*
     74S LEVEL-DONE
     75}}}
     76
     77Le reste de l'initialisation sera géré par les messages d'état des joueurs pour leur placement initial.
     78
     79=== Position et état des joueurs ===
     80
     81Afin que le client puisse positionner correctement les joueurs, y compris son propre avatar, il reçoit des informations de position et d'état du serveur qu'il doit immédiatement interpréter (comme s'il avait reçu un événement clavier):
     82 * ...