7 Oct 2020, 08:52

Une idée que j’ai depuis un moment, et je voulais voir si d’autres personnes de la communauté la partageait :

Je ne sais pas vous, mais moi j’aime bien ces petites statistiques que l’on peut avoir sur les jeux : la dernière fois que l’on a joué à un jeu, le nombre de fois... D’ailleurs on pourrait même imaginer en rajouter d’autres (genre le nombre d’heures passés sur un jeu : Oh la vache ça fait plus de 20h que je suis sur celui là !! , en mode « steam » 😉 )
Ces stats sont encore mieux mises en valeur avec Recalbox 7 car dorénavant on a une section spéciale pour les derniers jeux joués

Toutes ces choses, ainsi que les choix des favoris, sont enregistrées dans le fichier gamelist.xml dans chaque dossier rom

Le problème ? A chaque scrap externe, toutes ces infos se font zigouillées ! La 1ère chose que fait un scrapper c’est de supprimer le gamelist.xml pour en créer un autre (mais j’ai remarqué que le scrapper interne de RecalBox 7 ne fait pas ça, on ne perd rien, bien joué les gars c’est déjà vachement mieux 😉 ) Et même sans scrap, quand on veut faire un backup incrémentiel de sa recalbox, c’est un peu le bordel dans le fichier gamelist pour s’y retrouver car tout se remet dans l’ordre du « dernier joué » , donc pratiquement impossible de comparer les données du fichier...

D’où l’idée de séparer les infos statiques et dynamiques en plusieurs fichiers.

Toutes les données récoltées par le scrapper, et qui sont donc des informations intrinsèques aux jeux, qui n’ont pas vocation à bouger en jouant, pourraient rester dans le fichier « gamelist.xml ». Ensuite, les données dynamiques (playcount, lastplayed, favorites) seraient dans un autre fichier « gamestats.xml » par exemple
De cette façon, plus de souci de perte d’infos au prochain scrap en sauvegardant simplement les fichiers « gamestats ». On pourrait reprendre exactement la même architecture XML que le fichier « gamelist » afin de faciliter la chose. Au risque de s’éparpiller, on pourrait même pousser le bouchon plus loin en créant un fichier « gamefavorites.xml » qui ne serait là que pour l’info des favoris.

Avec ce type d’architecture :

  • On pourrait permettre que les favoris ne soient plus perdus en sauvegardant les fichiers « gamefavorites.xml » et même imaginer bloquer ces fichiers en lecture seule lorsqu’on veut éviter qu’une fausse manip fasse disparaitre des favoris (cas d’utilisateurs « invité » qui se trompent de bouton) Je crois avoir déjà vu des demandes dans ce sens
  • On peut faire des scraps externes comme on veut sans risquer la perte d’infos
  • On peut sauvegarder séparément ses stats de jeux
  • On peut plus facilement faire des backups incrémentiels et vérifier les différences pour être sûr de ne pas faire d’erreurs
  • Et pour les gens qui n’aiment pas ces stats (j’en ai vu sur des forums) ils pourront très facilement supprimer ces stats en effaçant simplement les fichiers « gamestats »

Qu’est-ce que vous en pensez ? Si pour la team il s’agit d’un problème de manque de temps, je peux peut-être aider pour vous faire des patchs/commit nécessaires.