URL: https://linuxfr.org/news/xqf-1-0-6-la-resurrection Title: XQF 1.0.6, la résurrection Authors: Thomas Debesse BAud, Benoît Sibaud, palm123, Nÿco et jihele Date: 2014年10月02日T03:53:07+02:00 License: CC By-SA Tags: xonotic, unvanquished, tremulous, openarena, ioquake et debian Score: 42 En juillet 2013, [MCMic proposait aux lecteurs de LinuxFr.org d’occuper leur été en contribuant à un jeu libre](http://linuxfr.org/news/occupez-votre-ete-contribuez-a-un-jeu-libre#comment-1468771) et proposait une liste de jeux intéressants qui avaient fortement besoin de contribution. J’avais [rajouté en commentaire](http://linuxfr.org/news/occupez-votre-ete-contribuez-a-un-jeu-libre#comment-1468771) un autre projet qui n’était pas un jeu en lui-même, mais qui était très utile aux joueurs et qui avait grandement besoin de contributions : XQF. Et voilà, finalement je m’y suis collé ! XQF est un logiciel libre qui liste des serveurs de jeu en ligne pour permettre au joueur de trouver facilement une partie qui lui plaît. XQF est certainement un des plus anciens dans sa catégorie (créé en 1998) et, oui, il est donc toujours actif, incroyable ! (tous les détails dans la suite de la dépêche) ![logo XQF](https://raw.githubusercontent.com/XQF/xqf/master/pixmaps/xqf.png) ---- [Le code de XQF à jour](https://github.com/XQF/xqf/) [La page historique de XQF et l’annonce officielle](http://www.linuxgames.com/xqf/) [Télécharger XQF 1.0.6.2 « édition spéciale LinuxFr.org »](https://github.com/XQF/xqf/releases/tag/xqf-1.0.6.2) ---- # Résumé 8 ans après la publication de la version 1.0.5 et un petit peu plus d’un an après l’invitation de MCMic, voici la version 1.0.6 ressuscitée et remise à jour par votre serviteur ! XQF 1.0.6 a été publié le dimanche 26 octobre 2014 et une mise à jour 1.0.6.2 a été faite ce 2 novembre (il faut dire que fêter une résurrection le jour des défunts, ça a son charme). De très nombreux jeux ont été ajoutés. Mais pendant tout ce temps, l’un a eu le temps d’être _forké_ 4 ou 5 fois et l’autre de devenir libre, puis à nouveau propriétaire... Le gros défaut d’XQF était de ne plus proposer une liste de jeux pertinente ! Le code a été quelque peu rafraîchi et la traduction française a été complétée, et très soignée ! Il reste encore plein de vieilleries dans le code, mais XQF n’a jamais été aussi stable. Vous trouverez le détail de toutes ces bonnes choses dans la suite de la dépêche. Pour l’occasion le dépôt a migré de subversion vers git avec l’aval de l’équipe originelle, afin de faciliter les contributions (à commencer par les miennes). # À quoi sert XQF ? [![XQF, Smokin'Guns, ZEQ2 Lite, Wolrd of Padman, Unvanquished, Turtle Arena](http://dl.illwieckz.net/u/thomas-debesse/bazar/xqf/xqf-1.0.6/xqf-worldofpadman-unvanquished-smokinguns-zeq2lite-turtlearena.png)](http://dl.illwieckz.net/u/thomas-debesse/bazar/xqf/xqf-1.0.6/xqf-worldofpadman-unvanquished-smokinguns-zeq2lite-turtlearena.png) Chaque jeu possède habituellement son propre explorateur de serveurs en ligne, intégré au jeu lui-même, mais cela signifie qu’il faut lancer chaque jeu un par un pour lister toutes les parties jouables de ces différents jeux. XQF permet à l’utilisateur de lister les jeux multijoueurs qu’il a installés (et proposés par XQF) et, pour chacun de ces jeux, XQF fournit une liste de serveurs maîtres (modifiable). Les serveurs maîtres sont les serveurs qui listent les serveurs qui hébergent des parties jouables. XQF forme alors une liste unifiée de serveurs de jeu avec le nom du serveur, le type de jeu, le nombre de joueurs actuellement présents et la plupart du temps les noms des joueurs connectés. Les jeux (et les serveurs maîtres) sont affichés dans la colonne de gauche et la liste des serveurs disponibles est affichée à droite, en fonction de la sélection de l’utilisateur. Il suffit alors de double-cliquer sur un serveur ou de cliquer sur « Connexion » pour que XQF lance le jeu avec les bons paramètres. [![Explorateur de serveur intégré à Unvanquished](http://dl.illwieckz.net/u/thomas-debesse/bazar/xqf/xqf-1.0.6/unvanquished-0.32-server-browser-empty-servers.crop.png)](http://dl.illwieckz.net/u/thomas-debesse/bazar/xqf/xqf-1.0.6/unvanquished-0.32-server-browser-empty-servers.png) _Exemple d’explorateur de serveur de jeu intégré, celui d’Unvanquished. À l’heure où cette copie d’écran a été faite, il valait mieux chercher un autre jeu... XQF est là pour ça !_ XQF centralise au même endroit les listes de plusieurs jeux, ainsi on peut par exemple décider de jouer à un jeu parce qu’il est fréquenté à ce moment là ou parce qu’un autre joueur particulier est présent et on peut donc savoir sur quel jeu il joue à cet instant. # Jeux ajoutés De nombreux dérivés des moteurs id Tech ont été ajoutés, mais pas seulement ! * [Xonotic](http://www.xonotic.org/) est un fork du jeu _Nexuiz_ dont le développement a été arrêté par son développeur principal (et qui a revendu le nom), la communauté de joueurs a donc migré vers Xonotic. Les joueurs pouvaient configurer XQF pour traiter Xonotic sous le nom de Nexuiz, mais voici une solution plus adaptée. * [Unvanquished](https://www.unvanquished.net/), un fork en développement actif du jeu [Tremulous](http://www.tremulous.net/) désormais arrêté. La communauté de joueurs de Tremulous est très dispersée, entre ceux qui jouent toujours à l’antique _Tremulous 1.1.0_, ceux qui jouent à la _GamePlayPreview_ du développement abandonné de Tremulous 2 et ceux qui jouent à ses mods comme TremFusion... Le jeu Tremulous était un des derniers jeux ajoutés avant que le développement d’XQF ne se mette en pause. J’ai donc ajouté _Unvanquished_, _Tremulous GPP_ et _TremFusion_ afin de permettre aux joueurs de rejoindre facilement un serveur peuplé, quelle que soit la version du jeu. [![XQF, mods de Tremulous et Unvanquished](http://dl.illwieckz.net/u/thomas-debesse/bazar/xqf/xqf-1.0.6/xqf-tremulous-tremulous-gpp-tremfusion-unvanquished-mixed-list.crop.png)](http://dl.illwieckz.net/u/thomas-debesse/bazar/xqf/xqf-1.0.6/xqf-tremulous-tremulous-gpp-tremfusion-unvanquished-mixed-list.png) _N’hésitez plus entre Unvanquished et Tremulous, jouez au jeu auquel d’autres jouent en même temps que vous._ * [Smokin'Guns](http://www.smokin-guns.org/), un jeu de tir à l’âge du Western américain, façon _Le bon, la brute et le truand_. * [Urban Terror](http://www.urbanterror.info/), un jeu qui exploite un scénario désormais très classique dans le genre : _« forces spéciales contre terroristes »_. Ce jeu avait été en fait ajouté dans la version 1.0.5.2, jamais annoncée et très peu distribuée en dehors du dépôt svn... À l’époque le jeu était basé sur ioquake3 et s’appelait ioUrbanTerror, désormais le moteur de jeu n’est plus libre et est basé sur le SDK d’id Software et une migration sur le nouvel Unreal Engine 4 est en cours... Autant dire que sans la publication de cette nouvelle version d’XQF, ce jeu aurait été ajouté pour rien ! * [OpenArena](http://openarena.ws/), un projet qui ambitionne d’être un clone libre de _Quake III Arena_ et donc de fournir des cartes libres en remplacement de celles de Quake 3. Il n’est peut-être pas aussi soigné, mais il est tout à fait jouable et on trouve beaucoup de serveurs disponibles. * [World of Padman](http://worldofpadman.net/website/), un FPS très _coloré_. * [ZEQ2 Lite](http://zeq2.com/lite/) qui emmène le joueur dans l’univers de Dragon Ball Z. * [Alien Arena](http://red.planetarena.org/), un FPS se déroulant dans un univers de science fiction façon années 50 et avec des extra terrestres à la manière de _Mars Attack_, et basé sur le moteur CRX (un fork d’id Tech 2). * Quelques autres mods plus anecdotiques comme [Reaction](http://www.rq3.com/), [Turtle Arena](http://ztm.x10host.com/ta/) ou _Q3 Rally_. * _Jedi Knight 2: Outcast_, XQF proposait déjà la prise en charge de _Jedi Knight 3: Academy_ et un contributeur avait [proposé en 2008 un patch] (http://sourceforge.net/p/xqf/patches/13/) pour l’épisode précédent. Il aura fallu du temps pour qu’une personne y jette un œil, mais voilà, patch accepté ! [![XQF, Jedi Outcast](http://dl.illwieckz.net/u/thomas-debesse/bazar/xqf/xqf-1.0.6/xqf-jedi-outcast-ravensoft-master.crop.png)](http://dl.illwieckz.net/u/thomas-debesse/bazar/xqf/xqf-1.0.6/xqf-jedi-outcast-ravensoft-master.png) * [OpenTTD](http://www.openttd.org/en/), est une réécriture libre du jeu original [Transport Tycoon Deluxe](http://fr.wikipedia.org/wiki/Transport_Tycoon), un _« jeu de gestion et planification urbanistique »_. Attention, pour interroger les serveurs de ce jeu une mise à jour de QStat est nécessaire. Cette mise à jour est déjà très ancienne mais beaucoup de distributions ne distribuent que des versions préhistoriques de QStat. * [Enemy Territory: Quake Wars](http://fr.wikipedia.org/wiki/Enemy_Territory:_Quake_Wars), un jeu dans la lignée de Wolfenstein:Enemy Teritory mais se passant dans l’univers de Quake. * [Enemy Territory: Legacy](http://etlegacy.com/), l’initiative qui maintient et améliore le code libre du jeu [Wolfenstein: Enemy Territory](http://fr.wikipedia.org/wiki/Wolfenstein:_Enemy_Territory). # Mises à jour et nouveautés * L’icône d’XQF a été redessinée en SVG, afin d’être rendue proprement sur nos bureaux modernes qui ont tendance à afficher de très grandes icônes ! ![icône du shell](http://dl.illwieckz.net/u/thomas-debesse/bazar/xqf/xqf-1.0.6/xqf-shell-icon.crop.png) * XQF respecte désormais la [spécification XDG pour les répertoires de base](standards.freedesktop.org/basedir-spec/basedir-spec-latest.html), en particulier les chemins des fichiers de configuration. Le dossier de configuration, anciennement nommé `~/.qf/`, se trouve désormais dans `$XDG_CONFIG_HOME/xqf/` (généralement `~/.config/xqf/`). XQF 1.0.6 détecte automatiquement lorsqu’un ancien dossier de configuration existe et le déplace vers son nouveau chemin. * Unvanquished, Wolfenstein: Ennemy-Territory et Savage utilisent des codes couleurs étendus et XQF ne filtrait que les codes couleurs de Quake 3, ce qui avait pour conséquence de laisser apparaître les balises étendues dans les noms de serveurs ou de joueurs. C’est corrigé ! * La liste des serveurs maîtres a été mise à jour (par exemple, le maître ioquake3 remplace celui d’id Sofware) et de nombreux jeux ont vu leur numéro de version de protocole actualisé (notamment War§ow qui change cela souvent...). * XQF ne plante plus lorsqu’un serveur envoie un caractère spécial. En fait, le bug est ancré très profondément : XQF lit la sortie de Qstat en mode `raw` et Qstat utilise le codage `ISO-8859-1` en sortie `raw`. Or, XQF est localisé en UTF-8, et `g_io_channel_read_chars` retourne une erreur lorsqu’il reçoit un caractère non UTF-8. La solution élégante serait de réécrire toute cette partie en utilisant la sortie XML de Qstat qui peut être demandée en UTF-8, mais dans l’immédiat, un contournement simple et efficace a été trouvé : le flux brut de Qstat est lu en mode binaire (`g_io_read_chars` laisse alors tout passer) et les caractères non ASCII sont ensuite filtrés. Les serveurs qui retournent des caractères spéciaux sont rares et, en attendant une éventuelle prise en charge de la sortie XML de Qstat, on évite au moins de planter XQF parce qu’il y a un serveur allemand parmi mille sur cette planète qui envoie un caractère `ß`. Begrüßen ! # Corrections et nettoyage Le code obsolète est en cours de nettoyage ; il reste encore plein de choses à nettoyer, mais j’ai priorisé le nettoyage de code obsolète qui était devenu cassé à cause de changements dans des bibliothèques tierces (Glib je pense à toi). Ce qui marche en mode compatibilité est laissé en l’état pour cette version et sera corrigé à partir de cette publication. En effet, à défaut d’avoir pu faire du _release early, release often_, au moins je veux faire du _oui, mais pas trop tard_. Mais surtout, en corrigeant plusieurs problèmes, je me suis rendu compte qu’au moins trois d’entre eux étaient présents dès le premier commit sur le tout premier dépôt CVS en l’an 2000... Lorsque XQF filtrait les balises couleurs dans les noms de serveurs, il lisait parfois un caractère en dehors des limites d’une chaîne de caractères, ce qui provoquait plus tard une erreur de `malloc` à un moment toujours inattendu... En portant le mécanisme de lecture de descripteur de fichier vars _GIOchannel_, j’ai corrigé un bug qui était dû à un _Gobject_ nettoyé plusieurs fois (plus exactement le descripteur de fichier où XQF lisait la sortie de Qstat), ce qui signifie qu’avec un peu de malchance on essaie de libérer un zone déjà réutilisée et hop le segfault. Plus anecdotique, il manquait une virgule dans une liste de paramètres de jeu de Quake 2, ce qui concaténait deux paramètres en un... De nombreux patchs qui étaient maintenus par Debian en marge du projet ont été importés, afin de simplifier le travail de paquetage par les distributions. Avec le temps cette pile de patchs était devenue la seule version d’XQF compilable, désormais cette branche a été fusionnée avec le tronc commun. Un grand merci à Jordi Mallach de chez Debian pour avoir maintenu XQF pendant toutes ces années de vaches maigres ! # Ce qui est abandonné La prise en charge de GTK+1 est définitivement enterrée et seule la version GTK+2 est prise en charge. Le nettoyage du code a commencé, mais pour le moment, c’est plus une décision politique qu’une réalisation technique : il s’agit de se libérer d’une contrainte et de pouvoir continuer le développement la tête libre, sans se soucier des vieilleries. Ainsi, il devient plus facile de remplacer les appels de fonctions obsolètes. Et oui il serait peut-être temps, on ne va pas attendre GTK+4 pour acter la migration vers GTK+2 ! # Bugs connus Pour le moment, XQF n’indique plus la progression de l’actualisation d’une liste de serveurs (mais XQF indique lorsqu’il a terminé de le faire). Cette régression est due à une réécriture de l'analyseur de liste de serveurs obtenue par les serveurs maîtres et de l'analyseur de description de chacun de ces serveurs. Ces analyseurs étaient cassés suite à l’obsolescence de plusieurs composants utilisés et le comportement était erratique. Le retour visuel de l’actualisation est encore manquant, mais l’urgence était de faire en sorte que XQF n’arrête pas cette actualisation en cours de route quand quelque chose lui déplaît... Lorsque l’on met à jour une liste de serveurs et que l’option d’actualisation des information de ces mêmes serveurs est activée, l’actualisation se fait correctement sauf pour la liste des joueurs connectés. Une actualisation normale met à jour cette liste. Ces bugs ne portent pas atteinte à la stabilité de XQF. # Télécharger XQF 1.0.6 Les sources d’XQF peuvent être téléchargées sur la [page dédiées aux archives de version](https://github.com/XQF/xqf/releases). XQF 1.0.6 est déjà en cours d’intégration dans Debian et Ubuntu, les plus bidouilleurs pourront donc essayer d’installer les versions 1.0.6 déjà empaquetées [par Debian](https://packages.debian.org/search?keywords=xqf) ou [par Ubuntu](https://launchpad.net/ubuntu/+source/xqf/1.0.6-1) mais non encore officiellement distribuées. Pour des raisons administratives, la version 1.0.6 correspond à la révision qui a été utilisée pour se faufiler in extremis avant le gel de Debian Jessie. La version 1.0.6.1 correspond à l’incorporation dans la branche principale d’un patch qui a été écrit pour permettre à Debian (et certainement d’autres distributions) d’empaqueter proprement XQF. La version 1.0.6.2 correspond à quelques corrections de langue française en vue de la présente dépêche. Vous pouvez donc dès maintenant télécharger _XQF 1.0.6.2 « édition spéciale LinuxFr.org »_ en cliquant sur le lien suivant : [Lien suivant. ;-)](https://github.com/XQF/xqf/releases/tag/xqf-1.0.6.2) # Contribuer Le dépôt a migré depuis un vieillissant dépôt subversion hébergé par SourceForge vers un tout nouveau [dépôt git hébergé par GitHub](https://github.com/XQF/xqf/). Cette version n’ambitionne pas d’être parfaite, elle ambitionne seulement de remettre XQF sur les rails. Si de nouveaux jeux ont été ajoutés, il est possible que certains autres soient moins bien pris en charge maintenant qu’avant par la seule force du temps et de l’obsolescence. De nombreuses choses sont à améliorer et à réécrire dans le code. Cette publication est donc aussi faite dans le but de soumettre XQF à quelques paires d’yeux supplémentaires. N’hésitez pas à vous servir d’XQF, et je vous invite fortement à rapporter des bugs ([ici](https://github.com/XQF/xqf/issues)), et si vous trouvez une solution, n’hésitez pas à _forker_ puis proposer vos corrections !

AltStyle によって変換されたページ (->オリジナル) /