Protocole réseau de la version temps réel

De OpenESubWiki.

Ce document décrit le protocole de communication entre un client et le serveur temps réel.

Le protocole est en mode texte. Chaque ligne se termine par CRLF (\r\n). Les commandes (qui apparaissent ici en majuscule) ne sont pas sensibles à la casse (CLASSES = classes = ClASsEs). Elles peuvent être abrégées s'il n'y a pas d'ambiguïté (par exemple la commande NOM peut être remplacée par N car elle est la seule à débuter par cette lettre).

Lorsqu'il reçoit une commande, le serveur répond par une ligne de la forme :

<CODE> [<MESSAGE>]

Le paramètre CODE peut-être « OK » pour dire que tout va bien ou « ERR » pour indiquer une erreur dans la commande envoyée. Le paramètre MESSAGE précise l'erreur.

Lorsque le serveur répond par du texte, celui-ci se termine par une ligne ne contenant qu'un point : .\r\n. Dans ce cas, le serveur envoie :

<CODE> ...
<TEXTE>
.

Il y a deux types de commandes :

  • des commandes accessibles à tous ;
  • des commandes réservées aux administrateurs du serveur (login : admin et/ou root)

Sommaire

Liste des commandes accessibles à tous

Commande PING

Syntaxe:

PING

Description :

Envoie un "ping" au serveur. Si le serveur est "toujours là", il renverra la réponse :
OK PONG

Commande LOGIN

Syntaxe :

LOGIN <login> <mot de passe> <pseudo>

Description :

Envoie le login et le mot de passe au serveur pour demander une identification. En fonction du type de serveur (standalone ou connecté à openesub.org), le pseudo pourra être choisi ou sera imposé par le serveur.

Commande CONSTRUIRE

Syntaxe :

CONSTRUIRE <id_classe> <nom sous-marin>

Description :

Envoie un ordre de construction au serveur. Le premier paramètre est l'identifiant de la classe de sous-marin choisi, le second est le nom du sous-marin. Le serveur répond OK id_soum si la classe existe et si le joueur a le droit de construire un sous-marin. Il renvoie ERR sinon.

Commande SUBMARINES

Syntaxe :

SUBMARINES [<idPacha>]

Description :

Liste les différents sous-marins enregistrés. Si l'identifiant d'un pacha est spécifié, seuls les sous-marins du pacha en question sont affichés.
Chaque sous-marin est représenté par une ligne. Chaque ligne comprend un certain nombre de champs séparés par des virgules. Le nombre de champ peut être amené à augmenter dans le futur. Actuellement, les champs (dans l'ordre) sont les suivants :
  • identifiant (unique) du sous-marin ;
  • identifiant (unique) du pacha ;
  • identifiant de la classe du sous-marin ;
  • nom du sous-marin.

Commande FAITS [PAS ENCORE IMPLEMENTE]

Syntaxe :

FAITS [<numero tour>|*]

Description :

Demande au serveur les faits marquants. En l'absence d'argument, le serveur renvoie les faits marquants du dernier tour. Si l'argument est '*', le serveur envoie tous les faits marquants de la partie. Si l'argument est un numéro de tour, le serveur renvoie les faits marquants de ce tour.

Commande CR

Syntaxe :

CR [<numero tour>] [xml]

Description :

Demande au serveur le compte-rendu du tour passé en argument. Si aucun tour n'est spécifié c'est le compte-rendu du dernier tour qui est renvoyé. Si le paramètre 'xml' apparaît c'est le compte-rendu au format XML qui est renvoyé sinon c'est celui au format texte.

Commande STATUT

Syntaxe :

STATUT

Description :

Demande au serveur son statut actuel. Le serveur renvoie son statut qui peut prendre les valeurs suivantes :
  • START (le serveur est en cours de lancement) ;
  • STOP (le serveur est en cours d'arrêt) ;
  • ATTENTE (le serveur est en attente) ;
  • OCCUPE (une partie est en cours).

Commande QUITTER

Syntaxe :

QUITTER

Description :

Indique au serveur que le joueur se déconnecte.

Commande ORDRE

Syntaxe :

ORDRE <idSoum> [dv <dv>] [dcap <dcap>] [tir]

Description :

Envoie au serveur les ordres pour le sous-marin dont l'identifiant est 'idSoum'. Le paramètre 'dv' s'il existe est la variation de vitesse en noeuds, le paramètre 'dcap' est la variation de cap en degrés, le mot-clé 'tir' indique que le sous-marin tire. Si 'dv' n'est pas présent, il est supposé nul, de même pour dcap. Un ordre annule et remplace complétement un ordre précédent. Ainsi si le joueur envoie :
ORDRE 1 dv 10 tir
puis
ORDRE 1 dcap 20
L'ordre exécuté sera :
  • pas de changement de vitesse ;
  • 20 degré à droite ;
  • pas de tir.
Par ailleurs, le serveur renvoie OK si le sous-marin appartient au joueur et si les ordres sont interprétables. Dans le cas contraire, il renvoie ERR.
Les paramètres 'dv' et 'dcap' sont interprétés comme des entiers : seuls les caractères formant un entier sont retenus. Ainsi "+45.65" sera interprété comme "+45".

Commande CLASSES

Syntaxe :

CLASSES

Description :

Demande au serveur la liste des classes de sous-marins disponibles. Celui-ci renvoie le contenu complet d'un fichier XML décrivant toutes les performances des classes de sous-marins et torpilles. Aucune TDT n'est écrite mais le fichier est de la forme suivante :

[PAS ENCORE IMPLEMENTE] : A RAJOUTER AVEC LA VERSION ALPHA 6

Commande SCORES [PAS ENCORE IMPLEMENTE]

Syntaxe :

SCORES

Description :

Demande au serveur la liste des joueurs et de leurs scores.

Commande TUER [PAS ENCORE IMPLEMENTE]

Syntaxe : TUER

Description :

Demande au serveur de tuer toutes les connexions du joueur sauf celle-ci.

Commande RESTE

Syntaxe :

RESTE

Description :

Renvoie le nombre de secondes séparant de la prochaine compilation. Une erreur est envoyée s'il n'y a pas de partie en cours.


Liste des commandes accessibles aux admins uniquement

Commande GAME

Syntaxe :

GAME

Description :

Cette commande lance la partie si le nombre de sous-marins et de pachas est suffisant.


Commande COMPILER [PAS ENCORE IMPLEMENTE]

Syntaxe :

COMPILER [OUI|NON]

Description :

"COMPILER OUI" ou "COMPILER" indique au serveur que le joueur est prêt pour la compilation. "COMPILER NON" demande au serveur d'attendre l'heure normale pour la compilation. La compilation démarre soit à l'heure prévue soit dès que tous les joeurs ont envoyés la commande "COMPILER OUI".

Commande CONNECTIONS

Syntaxe :

CONNECTIONS

Description :

Renvoie la liste de toutes les connexions aux serveurs (connexions admins et services gérés par le serveur compris). Chaque connexion est représentée par une ligne. Chaque ligne comprend un certain nombre de champs séparés par des virgules. Le nombre de champ peut être amené à augmenter dans le futur. Actuellement, les champs (dans l'ordre) sont les suivants :
  • identifiant de la connexion ;
  • adresse IP de la connexion ;
  • port de la connexion ;
  • login de la connexion ;
  • pseudo de la connexion ;
  • timestamp (en secondes) de la connexion ;
  • timestamp (en secondes) de la dernière commande.

Commande KICK

Syntaxe :

KICK <identifiantConnexion>

Description :

Déconnecte la connexion dont l'identifiant est passé en arguments.

Commande KICKALL

Syntaxe :

KICKALL [<identifiantConnexionSurvivante>]

Description :

Tue toutes les connexions aux serveurs à l'exception de celle dont l'identifiant a été eventuellement passé en arguments.

Commande STOP

Syntaxe :

STOP

Description :

[Ancienne version] Prépare l'arrêt du serveur. Les nouvelles connexions seront refusées.
Arrête simplement et proprement le serveur (fermeture des connections et arrêt du serveur)
Outils personnels