Listing des serveurs ThreadSpace: Hyperbol

par Nickolas le 22 déc 2009, sous Laboratoire

DémoDépôt GitHub

ThreadSpace: Hyperbol Server List Banner

J’ai déjà discuté de ce projet une fois, mais sans trop d’explication ni de détails. Je vais donc y remédier.

C’est quoi ThreadSpace: Hyperbol?

C’est un jeu à laquel je jouais. J’y jouais sous le pseudonyme « Hyrkali » et j’avoue que je me débrouillais pas trop mal (le truc, c’est de s’entrainer). Le but est très simple: détruit ou soit détruit. Vous y contrôler un vaisseau qui est TRÈS modifiable et vous combattez dans différentes arènes avec des objectifs ou non, en équipe ou non.

Mais bon, au lieu de vous expliquer tout le concept, j’aime mieux laisser cette tâche au développeur. Visiter http://www.hyperbol.com/ pour plus d’informations.

Pourquoi un tel outil?

J’ai développer cet outil afin d’avoir un moyen efficace de savoir si il y avait des joueurs connecté, sur quel serveur, ainsi de suite. L’idée original est de Néphyrin, qui bâtit une Preuve de Concept (Proof of Concept ou PoC) en XML, avec un fichier XLST, une sorte de feuille de style pour les fichier XML.

Le script fonctionnait bien, mais il n’était pas du tout facile d’utilisation, en plus d’être très laid côté design…

Alors j’ai décidé de bâtir ma propre version du script, en traitant simplement le fichier XML que Néphyrin générait. Ça fonctionnais superbement bien jusqu’à ce que sont générateur XML arrête de fonctionner. Peut-être l’a-t-il éteint, j’en sais vraiment rien. Le fait était que ma liste n’était plus du tout utile.

C’est alors que j’ai décidé de bâtir mon propre Générateur XML. Pour se faire, j’avais besoin d’en connaitre un peu plus sur la communication TCP et par « socket » puisque le générateur devait se connecter au Serveur Maître. C’est ici que Vek, un des développeur du jeu est venu m’aider. Il a tout simplement bâtis le générateur XML en partant de rien, mettant tout ça dans un script Python facile d’usage.

J’avais donc seulement à faire rouler le script Python pour générer mon propre XML tout beau, tout chaud, et voilà j’avais de nouveau une liste fonctionnelle.

Le script lui-même…

Le script est assez simple: Le PHP exécute  le script Python, qui lui génère un XML. Une fois le XML générer, le PHP le traite afin de faire un joli tableau, et le fait finalement affiché.

Une chose qui peut être faite avec le script Python, c’est de le mettre dans un cron job afin qu’il roule toutes les X minutes. Puisque je ne pouvais pas le faire rouler plus de 1 fois par 15 minutes, j’ai utilisé la solution évoqué plus haut, soit un appel à la méthode PHP exec(). Noter que cette méthode n’est pas supporter sur tous les hébergeurs.

Une autre chose qui est possible c’est de faire rouler le script Python localement de son ordinateur. Il faut évidemment avoir un utilitaire qui comprends le Python. On le laisse ensuite tourner en boucle, puisqu’il peut uploader le fichier XML sur un serveur FTP.

Puisque le code est déjà disponible entièrement sur GitHub, je ne me répèterai pas. Je vais simplement montrer la façon dont j’affichais le tableau.

Le HTML

Après un design rudimentaire mais efficace, j’affiche le contenu du XML de cette façon:

<script>
var refreshId = setInterval(function()
{
	 $('#refresh_zone').fadeOut("slow").load('ajax_refresh.php').fadeIn("slow");
}, 60000);
//60 x 1000 = 1 minute (60000)
$(document).ready(function()
{
	$('#refresh_zone').load('ajax_refresh.php');
});
</script>

Et oui, c’est du jQuery… Pourquoi utiliser cela au lieu de MooTools dans ce cas? Simplement parce que le script yShout5, qui me génère une belle boite de discussion le demande afin de fonctionner. Alors au lieu d’avoir deux framework, j’ai fait mon refresh Ajax en jQuery

Le but n’étant pas de faire un tutoriel sur l’usage de yShout5, je n’aborderai pas son installation et son fonctionnement… dans le pire des cas, visiter le Démo et visualiser le code! ;)

Conclusion

Ça résume quand même bien le tout.

J’aimerais remercier Nephyrin pour l’idée et surtout Vek pour son support génial sur la génération XML.

J’aimerais développer un peu plus l’outil dans le futur, comme en fournissant une version PHP du script de génération XML. Je ne sais pas du tout si j’aurai du temps pour ça, puisque il y a déjà une version du script en ligne fonctionnel… alors pourquoi dupliquer le travail? Enfin, je verrai si j’ai du temps (et la motivation) pour ça.

DémoDépôt GitHub

Bookmark and Share

Partager votre opinion

S'inscrire sans commenter

Vous cherchez quelque chose?

Utilisez le formulaire ci-dessous pour cherchez dans le site:

Vous cherchez encore? Laissez moi un commentaire dans une chronique ou contactez moi... peut-être que je le trouverai!