Je suis en train de rapidement rattraper le niveau de fonctionnalités de Bérénice, rajoutant les requêtes faites par le client. Ce soir, c'était la description des objets du monde. Très sommaire pour l'instant (id, nom, description), mais ça sera simple à enrichir.
Un problème intéressant que celui de ces requêtes est la synchronisation. A la connexion, le client envoie en effet un lot de requêtes au serveur pour récupérer les informations importantes sur l'avatar incarné, la liste des types d'objets, l'inventaire... Mais si par exemple l'inventaire est reçu avant la liste d'objets, les noms ne pourront pas être affichés. De même, si la requête de mon inventaire est traitée par le serveur plus rapidement que la demande d'incarnation de mon avatar, le serveur va trouver que je ne suis pour l'instant lié à aucun avatar, et va refuser ma demande.
Dans certains cas, il existe une solution élégante au problème Pour l'inventaire, par exemple, utiliser le numéro d'identification tant que l'on a pas d'informations sur le nom de l'objet. Quand la liste des noms d'objets arrive, renommer tous les objets de l'inventaire avec la nouvelle liste. Le message arrivera de toutes façons si vite que le joueur ne s'apercevra même pas que les noms étaient faux au départ! Cela améliore la robustesse de l'application, qui devient capable de gérer les messages dans un ordre moins strict.
Dans d'autres cas, il n'y a pas de solution miracle, et il va falloir synchroniser à la main... Et le client attendra donc qu'une requête ait été confirmée pour envoyer la suivante. Il n'y a plus qu'à trouver un design à peu près propre pour supporter cela.
vendredi 15 février 2008
Des requêtes, et des requêtes
lundi 19 novembre 2007
Bérénice tourne sur Lea
Bérénice est maintenant prête à être testée avant d'être proposée en téléchargement. Je la fais tourner sur notre serveur de production, en parallèle avec Ajax. Faire tourner deux (ou plus) serveurs AdH sur la même machine est étonnamment facile (j'en suis le premier surpris): création d'une nouvelle base de données (disons, adh_berenice, avec un encodage UTF-8), chargement du fichier de définitions SQL, création d'un fichier de configuration pour le serveur qui pointe vers la nouvelle base de données et vers un port différent, démarrage, et basta!
dimanche 18 novembre 2007
Bérénice approche
Le transfert de tous les messages sous le nouveau système généré par mlxsd, le multi avatars par compte, les messages un peu plus respectueux de la bande passante, voilà les bugs qui ont été corrigés récemment. Le système de suivi de bugs nous indique donc qu'il ne rèste que 2 problèmes à corriger dans Bérénice, et j'ai de fait bien envie de les pousser dans la release Castor, parce qu'ils n'ont finalement pas grand chose à faire ici.
Techniquement, Bérénice me semble donc tout à fait prête. Dommage que des problèmes techniques nous aient empêché de mettre tout ce que l'on voulait dedans (par exemple, le système de téléchargement des ressources), mais d'un autre côté, cela a permis l'arrivée d'autres fonctionnalités tout aussi importantes.
Avant de pousser Bérénice sur Sourceforge, l'on va quand même améliorer les graphismes, pour donner un aspect un peu plus peaufiné à la chose. Notamment, je voudrais que l'on renvoie dans les limbes ces horribles cubes noirs qui représentaient les joueurs!