Tag Heuer Kirium Trophy nouvelle version

Accés au jeu dans son environnement sur le site officiel des montres et chronographes Tag Heuer

Accés direct à l'interface au jeu

Après un mois de travail acharné, la développement de la nouvelle version du jeu de F1 commandé par Tag Heuer à mon entreprise pour l'année 2003 arrive enfin à sa phase finale avec le passage au nouveau circuit d'Interlagos demain 12:00H GMT (14:00H).

Le Kirium Trophy est un jeu concours dont le principe est que tous les circuits courus lors de la saison de Formule 1soit inclus dans le jeu avec une semaine d'avance (pour s'entraîner avant les vrais) et que chaque score établi par les joueurs soit enregistré afin de permettre un classement par course et de fin de saison identique à celui utilisé pendant le championnat en cours. Le 20 octobre 2003 le concours se termine par la remise de trois montres Tag Heuer de valeur substantielle aux trois meilleurs classés du concours sur l'intégralité du jeu. Les montres Tag Heuer n'ayant plus à faire leur réputation et au vu de l'enjeu des classifications il se comprend malheureusement assez aisément que le jeu se joue en petit comité et ce malgré la possibilité d'y défier des amis sans quitter l'interface.

La preuve du succès de ce jeu se réfère aux chiffres de l'an dernier où certains des joueurs y ont effectués pas loin de 900 visites avec des scores impossibles à égaler et encore moins par moi.

Cette année le jeu à totalement changé d'interface, il est en particulier développé intégralement sur Flash MX et exporté pour les lecteurs Flash dernière génération avec la très importante possibilité de gérer l'UTF-8 en tant qu'encodage natif lors de la gestion des contenus textes. Mais Flash MX a surtout apporté la possibilité d'y introduire les méthodes du tout récent Flash Remoting dont le protocole de communication avec le serveur est basé sur l'AMF , une sérialisation en binaire des données nettement mieux supportée par Flash que le XML ou les traditionnels encodage d'URL peu appropriés à l'échange de données en temps quasi réel.

Sur le serveur:
Le framework AMF-PHP est composé d'une vingtaine de Flash Services dédiés chacun l'un à effectuer une action spécifique lorsque appelés depuis Flash en méthode distante ou de PHP à PHP en une instance de la classe qui compose le Service Flash.
MYSQL se charge de gérer les données liées aux identifiants des joueurs, l'enregistrement des temps, les classifications finales des joueurs, et les sessions. Toutes les requêtes , la structure de la base générale et de chacune des tables qui la compose ont été retravaillées des dizaines de fois afin d'optimiser chaque requête pour qu'aucune ne consomme plus de 10 à 20 microsecondes en temps d'exécution.
Chacun des script PHP comme les requêtes à la BDD ont été repensés pour ne jamais consommer plus de 100 microsecondes même lors de la composition du tableau des scores des joueurs sur la totalité de la saison de Formule 1 qui pourtant met à contribution l'ensemble du framework pour obtenir le même résultat que lors des classifications d'un championnat de F1 réel.
Contrairement à l'an dernier avec l'ancienne version , nous avons dédié un serveur entièrement à la mise en production du jeu, et les temps de réponses sont au mieux pour l'instant avec un délai observé d'à peine 300 microsecondes séparant le moment de la requête qui inclue l'appel HTTP, les processus PHP/MYSQL, la réponse HTTP et le traitement de la réponse par Flash.
Un back-office de suivi du statuts de l'exécution des scripts et des tentatives de tricheries plus qu'éventuelles de joueurs souhaitant rehausser leur score où attaquer le serveur en aucune façon génères un historique et une alerte par mail aux administrateurs du jeu permettant en un click d'exclure définitivement un joueur du concours et les scores qu'il aurait établi jusqu'à lors même dans un contexte normal. Autant dire lui enlever toute chance de gagner.
Chez l'utilisateur:
Il est possible d'utiliser six langues, dont le japonais pour naviguer dans l'intégralité de l'interface du jeu et la zone de jeu lui-même. Tout y est évidemment géré en UTF-8 et chaque zone comportant du contenu texte est entièrement dynamique au niveau de la composition de sa mise en page. Les changements de langages sont instantanés et chaque élément susceptible d'être modifié par la mise à jour du langage possède une méthode propre à le reconstruire dans ce but sans que l'utilisateur n'est besoin de reprendre sa navigation à partir d'une autre zone de l'interface que celle qu'il utilise actuellement.
La plupart des configurations possibles du jeu par l'utilisateur sont stockées dans un shared-object. En incluant en particulier le choix du langage, la possibilité d'ouvrir une session automatiquement avec le serveur sans avoir à redonner ses identifiants, la configuration clavier choisie pour jouer et bien d'autres petites astuces bien pratiques.
L'interface du jeu est mise à jour automatiquement à intervalles réguliers afin d'obtenir les derniers classements du jeu en cours, mais aussi de changer automatiquement de circuit couru actuellement dés que le serveur l'autorise, en fonction du calendrier définit par Tag Heuer.
L'espace occupé sur le disque par l'animation avoisine les 150Ko tout en script autant dire presque rien au vu de la richesse de son contenu.
Seuls regrets:
Un système de synchronisation des sessions en temps réel (tout en SOAP à ma demande) afin de partager les informations liées aux joueurs avec le serveur distant de Tag Heuer rallonge énormément les délais de réponse aux opérations d'authentifications et de gestion de la session utilisateur.
Le jeu en lui-même n'a pu être modifié pour respecter le besoin de ne réellement permettre qu'aux meilleurs joueurs de gagner.
J'aurais souhaité en améliorer le framerate, mais chaque modification à ce niveau-là réduit d'autant plus l'écart possible entre les temps des joueurs, ce qui aurait pour conséquence de faire perdre tout intérêt au jeu, puisque les temps des joueurs sont le multiple de la durée d'une frame afin que les scores ne soient pas dépendant de la puissance de la machine du joueur mais du nombre de frame total nécessaire à effectuer le second tour complet et ce quel que soit le temps réel mis à effectuer le parcours.