Projet Badnik, partie 2 : GameData et appel à contribution

highscore

Cet article a initialement été publié sur LinuxFr.org.


Trois mois plus tard

Peut-être vous rappelez vous de mon article sur la préservation du jeu vidéo qui a précédé la naissance du projet Badnik que je vous ai présenté fin juillet dernier.

Icône de l’application

Et bien le projet a avancé tant bien que mal cet été :

  • il a été décidé que Badnik serait le nom du projet, mais ne sera pas celui des logiciels produits ;
  • le frontend a eu droit à une icône plus personnalisée ;
  • le backend a été porté vers Vala, mais dépend encore de GTK ;
  • le frontend en GTK 3 et Python 3 a été amélioré, mais est destiné à disparaître (changement de langage ou réécriture) ;
  • le build system n’est pas au mieux de sa forme (je ne parle malheureusement que le Makefile, si quelqu’un a des connaissance en Automake je suis preneur) ;
  • la dépendance floue du frontend vers libgd distribué par GNOME Documents est toujours là, mais ce dernier étant destiné à disparaître ce n’est pas si dramatique ;
  • le .vapi d’une des bibliothèques que j’utilise (libgda) est assez bancal, je ferais bien de la remplacer par sqlite3 directement ;

Si tout ça n’est pas forcément merveilleux, ce n’est rien à côté du problème auquel j’ai été confronté : un des points forts de mon application, à savoir sa recherche et son affichage de métadonnées sur les jeux de votre bibliothèque, repose sur un système très bancal. Le programme analyse des sites Web spécialisés, et s’il rendent parfois des résultats plutôt bons, ils étaient généralement trop lents mais surtout ne marchaient pas correctement pour tous les jeux : on peut ne pas trouver les données souhaitées alors que le site les contient ou, pire encore, avoir des données ne correspondant pas du tout au jeu ! De plus une connexion à internet est nécessaire et les recherches sont plutôt lentes.

Ce problème me semblant prioritaire, j’ai récemment réfléchit au sous projet GameData.

GameData

Si emmener mon programme vers les métadonnées ne marche pas, alors il me faut faire venir les métadonnées vers mon programme ! Il existe des tonnes de sites référençant des jeux vidéo mais pratiquement aucun n’est réellement exploitable, il me fallait donc une base de métadonnées de jeux facilement exploitables par un programme, et si elle pouvait être embarquée avec le logiciel ça ne serait que mieux !

Richard Hughes s’est heurté à un problème similaire avec son projet GNOME Software et y a répondu en créant AppData, une application XML dont les applications qui souhaitent apparaître dans GNOME Software doivent embarquer un fichier afin de rendre leurs données (nom, description, captures d’écran) accessibles aisément au programme.

L’idée est intéressante et j’ai décidé de m’en inspirer pour créer GameData, une application XML inspirée d’AppData mais spécialisée pour les jeux vidéo.

<?xml version="1.0" encoding="UTF-8"?>

<game>
  <id>sonic-the-hedgehog</id>
  <license>cc0</license>
  <title>Sonic the Hedgehog</title>
  <description>
    <p>
      In an attempt to steal the six Chaos Emeralds and harness their power,
      Dr. Ivo Robotnik has trapped the animal inhabitants of South Island in
      cybernetic shells and metal capsule prisons.
    </p>
    <p>
      Control Sonic the Hedgehog to stop Robotnik's plans by freeing your
      animal friends and collecting the Chaos Emeralds.
    </p>
  </description>
  <release_date>
    <day>27</day>
    <month>06</month>
    <year>1991</year>
  </release_date>
  <genres>
    <genre>platform</genre>
  </genres>
  <screenshots>
    <screenshot type="default">
      http://info.sonicretro.org/images/6/6f/Sonic1_title.png
    </screenshot>
    <screenshot>
      http://upload.wikimedia.org/wikipedia/en/d/d3/MD_Sonic_the_Hedgehog.png
    </screenshot>
  </screenshots>
  <covers>
    <cover type="default">
      http://upload.wikimedia.org/wikipedia/en/b/ba/Sonic_the_Hedgehog_1_Genesis_box_art.jpg
    </cover>
  </covers>
  <developers>
    <developer url="http://www.sonicteam.com/">Sonic Team</developer>
  </developers>
  <modes>
    <mode min_players="1" max_players="1">local</mode>
  </modes>
  <controllers>
    <controller buttons="4">gamepad</controller>
  </controllers>
</game>

<id />

J’ai commencé à définir GameData sur cette page Web et le format n’est pas encore fixé, si vous voyez le moindre manque ou problème dans la définition du format n’hésitez pas à me le signaler car je souhaite le peaufiner avant de « lancer la production » de ces fichiers.

Je suis également en train d’écrire une bibliothèque en Vala pour manipuler de tels fichiers.

Futur du projet

Même si le projet avance lentement (ma vie passe avant lui) il est loin d’être mort et je souhaite lui mettre un gros coup de polish et étendre ses horizons.

Pour ce faire, je souhaite :

  • nettoyer le backend en Vala, retirer toute dépendance superflue comme GTK+, et ce afin de le rendre très portable tant entre langages (Vala est très bon là dessus grâce à GOI) qu’entre environnements ;
  • faire un frontend pour GNOME propre, laisser la possibilité de créer d’autres frontends (en prenant Transmission pour modèle) ;
  • afin de faire avancer le projet plus vite qu’entre mes seules mains et surtout parce que la création de milliers de GameData est trop pour un seul homme, j’espère monter une communauté (voire un site) autour du projet !

Si vous êtes intéresser à faire avancer le jeu vidéo sous Linux ou la préservation du jeu vidéo, et que vous souhaitez participer, n’hésitez surtout pas à me contacter (le projet étant encore jeune c’est le moment parfait pour ça) !