URL: https://linuxfr.org/users/yukito--2/journaux/flukz-0-1 Title: Flukz 0.1 Authors: Yukito Date: 2013年02月20日T13:47:26+01:00 License: CC By-SA Tags: jeux_linux, jeu_libre, debian et ubuntu Score: 22 Suite au journal d'il y a quelques jours, j'ai donc essayé de supprimer les bugs les plus gênants, et voici la [toute première version de Flukz](http://flukz.org/wiki/doku.php?id=flukz_fr). C'est assez rudimentaire, mais à peu près utilisable (enfin, j'espère). Pour résumer, Flukz est un mini-jeu de shootem up qui fonctionne comme un wiki. Les "niveaux de jeu" sont entièrement paramétrables (ajouts de nouveaux types de sprites, position et vitesse des sprites, résistance aux tirs, musique de fond). ## Compilation Si vous voulez tester, vous allez devoir compiler les sources. Avant de commencer, assurez-vous d'avoir les paquets contenant la version de développement de la bibliothèque Qt. Sous debian/ubuntu, il faut installer les paquets "libqt4-dev" et "qtmobility-dev". Sur les autres distributions, il s'agit sans doute de noms similaires. Je ne sais pas trop si la séparation du paquet qtmobility est spécifique à debian ou non. Ouvrez un terminal, placez-vous dans le répertoire qui vous convient et tapez les commandes suivantes : * wget http://download.tuxfamily.org/flukz/flukz0.1.tar.gz * tar -xzvf flukz0.1.tar.gz * cd flukz0.1 * qmake * make * bin/flukz Si la commande qmake ne fonctionne pas, c'est qu'il vous manque le paquet libqt4-dev indiqué plus haut. Petite difficulté sous les versions récentes de debian/ubuntu, la séparation de Qtmobility du paquet principal a cassé les liens du Makefile créé par qmake. J'ai créé un petit script bash pour corriger ça, à exécuter entre qmake et make. La liste des commandes à taper sous debian/ubuntu devient : * qmake * bash debianpatch * make Sinon, j'ai aussi mis en ligne un binaire statique pour Windows. ## Divers problèmes connus Lors d'un test sur Lubuntu, j'ai eu des erreurs à l'exécution à cause de paquets manquants. J'ai eu besoin d'installer les paquets "libgnomeui-0" et "pulseaudio" pour que le programme s'exécute (sur Ubuntu, ce n'est pas utile, ces paquets sont déjà installés par défaut). N'hésitez à me faire des retours pour les autres distributions, j'ajouterai les infos adéquates dans le fichier README. Pour une raison que je ne comprends pas, le binaire statique windows marche sur certains pcs que j'ai testé, mais pas tous. Il y a un pc sous windows 7 sur lequel il crashe au lancement du jeu. Et il crashe aussi exactement au même endroit quand je le lance sous ubuntu avec wine. C'est sans doute un seul et même problème, peut-être lié aux sons ou aux threads. ## Utilisation Quand vous lancez Flukz, vous voyez un "site" apparaître. Imaginez qu'il s'agit de la même chose que wikipedia, mais pour les jeux video, et cela devrait suffire pour comprendre l'essentiel du fonctionnement du logiciel. Vous pouvez éditer les pages (bouton en haut à droite), mais aussi les niveaux de jeux, ajouter de nouveaux graphiques de sprites au serveur ou des nouveaux sons, etc. Et bien sûr, vous pouvez simplement jouer aux niveaux existants. A noter que lors du premier clic sur un niveau de jeu, il est possible que le logiciel semble lent à la réaction. C'est parce qu'il télécharge les fichiers de dépendances, et s'il y a dans le lot un fichier son qui fait 1Mo, ça peut facilement prendre quelques secondes (il n'y a pas d'animation qui montre le niveau d'avancement). Les fichiers déjà présents en cache sur la machine locale ne sont plus téléchargés ensuite, donc ce n'est lent que la première fois. Pour créer une nouvelle page ou un nouveau niveau de jeu, c'est le même principe que wikipedia, il suffit de créer un lien sur une page existante, de cliquer, et d'éditer la page qui s'affiche. Ou bien, vous pouvez simplement taper le nom de la nouvelle page directement dans la barre d'adresse (mais si possible, essayez d'éviter les pages orphelines, car il n'y a pas encore d'outil pour les détecter). Toutes les modifications (sauf le vandalisme bien sûr) sont les bienvenues. Si vous faites une bêtise involontairement, il y a toujours la possibilité de faire un revert (le revert est accessible à partir de la page de diff), donc n'hésitez pas à tenter des trucs. Vous pouvez aussi créer un compte utilisateur (icône de login en haut à droite), sinon vos contributions seront archivées avec votre adresse IP, comme sur wikipedia. Bon, je ne garantis pas qu'on puisse faire des niveaux amusants avec le peu de fonctionnalités disponibles dans cette première version. Disons qu'il doit tout de même être possible de faire mieux que les deux niveaux bâclés que j'ai mis en ligne pour démarrer. Attention, si vous ajoutez des fichiers externes d'images ou de sons, seules trois licences sont acceptées: GPL, CC-BY et CC-BY-SA. En particulier, les licences CC-BY-NC-SA ou BY-NC-ND, très courantes pour les fichiers de musique, ne sont pas acceptées. Pour les sons, seuls les fichiers wav au format PCM à la fréquence 22050Hz sont supportés. Il y a des explications plus précises dans Flukz sur la façon de créer un fichier wav dans l'encodage correct avec le logiciel sox. Note : certains fichiers sons posent malheureusement quand même des problèmes, même avec l'encodage correct, avec un crash du logiciel. Enfin, ne soyez pas surpris par les éventuels bugs. Je suis sûr qu'il en reste encore pas mal. N'hésitez pas à reporter les problèmes rencontrés sur la page BugList. A noter qu'il y a une sécurité aux alentours de 3 Mo qui bloque l'upload de fichiers trop volumineux (mais sans message d'erreur pour l'instant). Si l'upload freeze, ce n'est peut-être pas un bug, c'est peut-être que vous avez essayé d'uploader un fichier trop gros. ## Détails techniques Flukz est programmé entièrement en C++, avec la bibliothèque Qt. Le but était à l'origine de créer un simple shoot'em up rudimentaire, puis est venue l'idée de l'interfacer avec un wiki. Malheureusement, il n'y a pas vraiment de moyen simple d'interfacer une application externe avec un wiki, et puis c'était plus rigolo de recoder from scratch un wiki uniquement en C++ (ce qui s'est révélé d'ailleurs la partie la plus difficile à coder de Flukz jusqu'ici). On en a profité pour définir notre propre protocole de communication client-serveur, comme ça il n'y a aucune dépendance dans Flukz aux technologies web habituelles (http, javascript, php, serveur web type Apache, etc). Le serveur accessible à l'adresse game.flukz.org (adresse par défaut dans le client) est simplement le programme Flukz lui-même lancé avec "bin/flukz --masterserver". Il tourne sur une machine virtuelle debian 64 bits, dont le noeud physique est situé en Suède, chez l'hébergeur [Glesys] (http://www.glesys.com/). Parmi les détails intéressants, les pages sont écrites dans une syntaxe wiki, mais ce code wiki n'est pas interprété par le serveur. Le code wiki est envoyé tel quel au client, et c'est le client lui-même qui le transforme en code html, juste avant l'affichage. Idem pour le calcul des différences entre deux versions d'une page. Les deux versions de la page sont envoyées au client, et c'est le client lui-même qui calcule les différences. Dans Flukz, autant que possible, c'est au client de faire le sale boulot :-) Le but est de réduire la charge du serveur, et aussi (un peu) la bande passante. Autre astuce pour réduire la bande passante : Flukz compare automatiquement les hashs sha1 des fichiers en cache chez le client avec les hashs des fichiers sur le serveur, donc tant qu'un fichier ne change pas, il n'est plus téléchargé par le client. Les hashs sont également utilisés comme sécurité pour éviter des éditions conflictuelles d'une page. Si vous éditez une page et que celle-ci change entre temps, le commit sera bloqué (mais le message d'erreur sera seulement que l'écriture n'a pas été possible, affiner le message d'erreur est un todo). Toujours à propos du serveur, la configuration actuelle chez Glesys est vraiment minimale, avec 256Mo de RAM et 50Go/mois de bande passante. Je ne suis pas très confiant sur le comportement du serveur dès que le nombre d'utilisateurs va dépasser une dizaine. Notamment, essayez d'être gentils sur l'ajout de fichiers sons pour l'instant. Même si les fichiers ne sont téléchargés qu'une seule fois par client grâce aux hashs, ça risque de peser lourd sur la bande passante. Au niveau des images de sprites, pas de souci par contre, car les fichiers png sont petits. Dans la partie "jeu video", une difficulté technique a été la gestion des sons. C'est un peu le point faible de la bibliothèque Qt, parce qu'elle ne possède pas de mixeur, élément pourtant incontournable de tout jeu video, même embryonnaire. Heureusement, nous avons trouvé à peu près ce qu'il fallait avec [Qt Game Enabler] (http://projects.developer.nokia.com/qtgameenabler). Par contre, seuls les sons dans un format wav spécifique sont supportés, et il y a des bugs avec certains fichiers. Un support correct des fichiers sons ne sera pas facile. ## Code source Si coder ne vous fait pas peur, le repository subversion, c'est ici : svn://svn.tuxfamily.org/svnroot/flukz/flukz/trunk Même si vous ne connaissez pas Qt, ça peut être l'occasion d'essayer, d'autant plus qu'il y a des pans entiers du logiciel qui peuvent être améliorés sans connaître Qt en détails. Pour discuter du logiciel, je pense que c'est aussi simple de le faire directement dans Flukz, plutôt qu'avec des listes de mails. J'ai créé des pages BugList, TodoList, forum des développeurs, que vous pouvez modifier librement. Et même si vous n'avez pas l'intention de participer à la programmation, peut-être que vous avez une bonne idée de développement futur. N'hésitez pas à la proposer.

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