Alban’s blog

October 7, 2007

Gtetrinet sur Telepathy

Filed under: Uncategorized — alban @ 9:00 pm

Gtetrinet devrait bientôt pouvoir utiliser Telepathy! Mais de quoi s’agit-il?

Actuellement, chaque joueur voulant jouer ensemble doit se connecter à un même serveur de jeu. Les connexions se font selon le modèle client-serveur:

Si les joueurs discutent déjà entre eux en utilisant la messagerie instantanée, il serait plus simple de lancer la partie en sélectionnant ses adversaires directement depuis le logiciel de messagerie instantanée. Ou alors de voir la liste de ses contacts dans Gtetrinet et les sélectionner directement sans passer par l’étape du choix du serveur.

Les tubes de Telepathy permettent de faire communiquer arbitrairement n’importe quelle application (Gtetrinet, par exemple) par la messagerie instantanée. Le schéma suivant montre les connexions après que le joueur 1 ait proposé au joueur 2 une partie. Le joueur 1 a sélectionné directement depuis Gtetrinet le joueur 2. Gtetrinet 1 propose alors un tube au joueur 2. Gtetrinet 2 l’accepte et se connecte à Gtetrinet 1.

Il est possible d’implémenter les tubes sur différents protocoles de messagerie instantanée. Avec Jabber, le message envoyé par le joueur 1 au joueur 2 ressemble à celui-là:

<message from="player1@localhost/Telepathy" id="540813737502" to="player2@localhost" >   <tube xmlns="http://telepathy.freedesktop.org/xmpp/tubes"         service="tetrinet-x"         type="stream"         id="1506758346" >     <parameters>       <parameter type="str" name="login" >foobar</parameter>     </parameters>   </tube>   <amp xmlns="http://jabber.org/protocol/amp">     <rule action="error" value="stored" condition="deliver-at" />     <rule action="error" value="exact" condition="match-resource" />   </amp> </message>

Tubes over XMPP

Le nom du service (”tetrinet-x”) permet de connaître l’application qui va gérer ce message lorsqu’il arrivera sur l’ordinateur du joueur 2. La bonne application pourrait être lancé automatiquement (après acceptation de l’utilisateur).

Pour éviter de faire trop de modifications dans Gtetrinet, le plus simple est d’utiliser les stream tubes au lieu des D-Bus tubes: cela évite de refaire le protocole de communication de Gtetrinet en D-Bus. Les stream tubes permettent d’encapsuler une socket dans un tube. Cela est rendu possible récemment par le travail de Cassidy.

Pour faire un prototype rapide, Cassidy a écrit un patch qui évite de changer de protocole: on conserve le serveur qui tourne sur l’ordinateur du joueur qui initie la connexion. Lorsque le joueur 1 sélectionne le joueur avec qui il veut jouer dans sa liste des contacts, Gtetrinet lance le serveur et configure le tube pour rediriger la connexion du joueur 2 sur le serveur. Ainsi, aucune modification du serveur n’est nécessaire.

Actuellement, la configuration du tube marche, mais le Gtetrinet du joueur 2 n’est pas encore capable de l’accepter. Ca devrait bientôt arriver!

4 Comments »

  1. Pfft, gtetrinet! Quadra, c’est plus cool! ;-)

    Comment by Pierre Phaneuf — October 7, 2007 @ 10:04 pm

  2. Pierre> Pfft, gtetrinet! Quadra, c’est plus cool! ;-)

    Je suis content d’apprendre que Quadra aura bientôt le support de Telepathy ;-)

    Comment fonctionne Quadra en réseau? Est-ce que ça peut marcher sans serveur? Combien de joueurs au maximum dans la même partie? Est-ce que ça utilise GLib?

    Comment by Alban — October 7, 2007 @ 10:58 pm

  3. Tu participes aux projets gtetrinet/telepathy ?

    Comment by Mathieu — October 8, 2007 @ 10:12 am

  4. Mathieu> Tu participes aux projets gtetrinet/telepathy ?

    Pour l’instant, je n’ai pas fait grand chose, mais j’essaie :)

    Comment by Alban — October 8, 2007 @ 6:39 pm

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress