Je me nomme Moussa, je suis de Belgique et je suis architecte logiciel, ancien développeur.
Comme nombre d'entre nous, j'apprécie le retro-gaming, mais il y a une chose qui m'a toujours dérangé, c'est la complexité pour avoir un système complet, entre les multiples logiciels à installer pour gérer sa collection, les front-end à configurer, les covers, vidéos et metadata à retrouver avec chacun leur propre convention de nommage, ce n'est pas une sinécure.
J'ai donc décidé de concevoir un système qui répondrait à ces critères: simplicité, évolutivité, configurable, ainsi est né Pxl
Pxl est un système composé de 2 applications, le manager, chargé de compiler tous les assets(roms, metadata, covers, videos, émulateurs) et de faire correspondre les assets avec des noms différents, et le player, qui est un front-end, qui téléchargera automatiquement les covers, vidéos et meta pour les afficher, et si vous lancez un jeu, la rom et l'émulateur si ils ne sont pas encore là.
Pxl n'en est qu'au début de son développement, mais il est suffisamment avancé pour être utilisable, et avec son système de mise à jour automatique, il évolue constamment.
Une nouvelle fonctionnalité: la page de configuration est terminée et fonctionnelle, elle permet d'éditer le fichier de configuration du manager via une interface (pas encore très jolie, mais très pratique), afin de ne pas avoir à aller sur le serveur pour modifier la liste des systèmes supportés, ainsi que les chemins des dossiers de rom, images, vidéos,...
en image:
Entre autres améliorations, la plupart des pages sont désormais internationalisées en anglais et français, par défaut c'est en anglais, il faut éditer le fichier assets/accounts/accounts.csv pour changer la langue (ce sera plus tard configurable via le player, une fois l'écran de gestion de préférence utilisateur implémenté, et la valeur par défaut sera basée sur la langue du système).
En préparation d'une nouvelle fonctionnalité, Play 50 hz est capable de choisir automatiquement parmi toutes vos roms clones laquelle est la plus à même d'être celle que vous voulez lancer, par défaut il choisira celle en français, européenne, dump parfait, et se rabattra sur d'autres possibilités si pas dispo. Le calcul de ce choix est désormais paramétrable dans le code, et permettra, une fois l'écran de préférences implémenté, de choisir d'autres paramètres pour définir la rom à utiliser lors du choix d'un jeu à lancer.
Correction de plusieurs petits bugs et améliorations mineures diverses.
Pour profiter de ces améliorations, toujours rien à faire, juste à lancer l'app et elle se mettra à jour automatiquement.
Correction d'un bug qui empêchait la bonne initialisation du player lorsqu'on passait par l'écran de reconnexion.
Le fix a nécessité une revue du système de concurrence du module de fenêtrage, ce qui a également eu comme side-effect positif de rendre le système bien plus réactif, d'une pierre deux coups donc!
Le fix sera poussé automatiquement sur tous les players en fin d'après-midi très probablement
Sauf imprévu, la prochaine fonctionnalité sera la mise en place des filtres de sélection de jeux.
Cette fonctionnalité aussi pratique qu'indispensable vous permet de filtrer les résultats de votre collection de jeux, fini de tout parcourir à la recherche de votre jeu de course favori.
Imaginé à la base dans un écran séparé, il est finalement intégré à la sélection de jeu pour plus de facilité:
Comme vous pouvez le voir, de nombreuses options de recherches sont disponibles: par style de jeu, par année, par éditeur... mais aussi par nombre de joueurs.
Cette fonctionnalité évoluera sous peu à nouveau:
-visuellement, il est prévu d'améliorer le ui des widgets (c'est bien pour ça que le bouton n'a pas de label).
-fonctionnellement, pour aussi rechercher par nom, et aussi être supporté par la manette.
Voilà pour cette semaine!
Pour la semaine prochaine sont prévues les améliorations du filtre sus citée, mais également la génération d'images redimensionnées pour les covers, afin de maximiser les performances dans le cas du transfert et de l'affichage de vos images.
Cette génération se fera automatiquement en background du manager et le système déterminera seul si elle est nécessaire ou non, vous pourrez donc placer votre dossier de covers en 8k, une copie redimensionnée sera générée et utilisée automatiquement pour votre plus grand confort.
Tout d'abord correction de divers bugs mineurs, ce qui rend le système plus agréable à utiliser
Ensuite, le redimensionnement des images est désormais effectif, il est désactivé par défaut(c'est un peu longuet...) pour l'activer il faut aller dans le fichier de configuration du manager et mettre dans image.resizing soit always (toutes les images) soit weight (uniquement les images de plus de 1mo), les images originales ne sont pas touchées, un nouveau dossier est créé avec les copies redimensionnées, s'en suit donc un téléchargement et un affichage plus réactif sur le player, mais aussi un gain d'espace appréciable.
Le ui du filtrage a été quelque peu amélioré.
L'écran de présentation d'un jeu affiche désormais une image de la console et du controller à utiliser, pour l'instant, limité à un controller par défaut, mais sera affiné pour afficher les pistolets, multitap et consors dans les situations adhoc.
Le logo du système de jeu est également désormais affiché
D'un point de vue plus technique, le continuous delivery a été amélioré, désormais le système ne reconstruit plus les artifacts au déploiement, mais uniquement lors du merge de la branche develop -> master et stock les binaires dans un repository, ce faisant, lors de la génération de l'image docker qui expose les binaires sur le serveur, leur timestamp de construction n'est plus modifié, et donc le système d'update automatisé ne considère plus comme différent ce qui n'a pas été modifié.
Bref, tout ça pour dire que c'est plus mieux!
L'implémentation de la persistance DB est en cours de finalisation, elle permettra j'espère de réduire le temps de chargement initial du player, l'implémentation choisie est HsqlDB, réputée pour avoir des perfs très honorables pour un file DB.
Toutes ces améliorations sont bien entendues poussées automatiquement chez les utilisateurs.
Hé non, tu es le premier sur ce topic, bienvenue donc!
J'ai eu l'occasion de tester launchbox, hyperspin, et retro-pie également, tous ces systèmes sont excellents et méritent de s'y attarder, cependant, j'ai l'ambition de fournir mieux sur ces points:
- Chacun de ces systèmes demande un certain temps de configuration et de manipulation lorsqu'on a une collection assez conséquence, le manager de play50hz gère automatiquement des sources de données hétérogènes avec de réconcilier des roms, des covers, des métadonnées, des vidéos, même si leur standards de nomenclature ne coïncide pas, en résumé par exemple, on peut avoir des roms venant d'un cowering good tool, de multiples dossier de covers avec leur propres nom de fichiers, des sources de métadonnées comme launchbox db, tout est rassemblé sans rien faire.
- Toujours pour plus de facilité, pas besoin de configurer les émulateurs, ils sont automatiquement téléchargés si pas existant lors du lancement d'un jeu.
- Gain de place, le player, qui permet de lancer les jeu, ne contient aucune ressource(cover, rom, emu...) à son lancement, il suffit de sélectionner un jeu pour télécharger automatiquement la rom depuis le manager, également, le manager peut redimensionner les covers afin d'améliorer les perfs et de réduire la place nécessaire au player.
- Configurable, les thèmes sont entièrement configurable, soit par système, ou même par jeu.
- Portable, l'application étant développée en java, elle tourne naturellement sur différentes plateformes (java 11), les lanceurs sont eux compilés en natif(windows et linux) mais rien n'empêche de les ignorer et de lancer le manager ou la player directement avec java pour une plateforme non supportée nativement.
-Evolution rapide, le système de déploiement automatique permet de faire des releases en tout temps, le projet est modulable et bati sur un framework multimédia solide ( https://engine.yildiz-games.be/ )
Pour répondre à ta dernière question, l'application existe sous windows et linux pour le manager et sous windows uniquement pour le player.
La compatibilité linux du player n'est pas encore complète car je n'ai pas encore supporté les émulateurs sous cette plateforme, c'est le seul point non portable, mais c'est dans le backlog.
Voilà, en gros l'idée est d'être aussi configurable qu'hyperspin, aussi pratique que launchbox, moins de configuration que ces 2 là, et le tout gratuit!
Merci, si tu as l'occasion, n'hésites pas à tester, que ce soit pour la correction de bugs, mais aussi pour des fonctionnalités que tu aimerais voir intégrer
La persistence par DB est désormais effective et par défaut, ce qui conduit à une nette amélioration des performances de chargement initial.
Le délai de mise à jour de la base de donnée launchbox est désormais configurable (jamais, quotidien, hebdomadaire, mensuel).
Amélioration de la détection de clones.
Divers bugs corrigés
La prochaine mise à jour sera orientée client, à savoir l'unification de la configuration des controllers: une fois une manette détectée, les émulateurs seront automatique reconfigurés pour s'y adapter, plus besoin de le faire manuellement
L'implémentation de la fonctionnalité de configuration globale de controllers est en bonne voie, un peu laborieuse du fait de la recherche des codes de touche pour chaque émulateur.
Pour rappel cette fonctionnalité permettra au système de configurer automatiquement les contrôles dans les émulateurs lancés, plus besoin de le faire manuellement à chaque premier lancement.
Amélioration sensible de la détection des jeux identiques avec des variations dans leur nom, ce qui réduit encore la probabilité de doublons dans la liste de jeux.
Correction de la DB dont les changements n'étaient pas persistés immédiatement et nécessitaient un reboot du manager pour que le player aie bien les derniers changements, c'est désormais corrigé.
Correction de la notification "aucune rom enregistrée" même si ce n'était pas le cas.
La configuration automatique est désormais pleinement effective pour la sega master system, le même principe sera appliqué aux autres consoles progressivement.
En pratique, que fais la config automatique? 2 choses:
Elle défini les touches à utiliser pour l'émulateur, que ce soit à la manette ou au clavier.
Elle détecte si les manettes sont branchées au lancement de l'émulateur et le configure pour les utiliser si présente, ou au clavier si absente.
Tout ceci fonctionne pour 2 joueurs, et c'est terriblement agréable d'avoir du plug and play en émulation.
Salut, non pas du tout, mais ça afficherait le jeu plusieurs fois dans la liste.
Par exemple, la cover s'appelle Zelda 3 (EUROPE).png, l'entrée DB s'appelle zeldaIII, la vidéo zelda III_EU.mp4, et on a des roms The legend of Zelda, a link to the past(E).smc, Zelda 3(U).smc et zelda III_french.smc, sans détection de doublon, on aurait autant d'entrées dans la liste.
Pour réconcilier tout ça, l'application va faire plusieurs choses:
1) vérifier dans la liste de clones connus si les entrées sont présentes
2) créer une id unique pour le jeu basée sur le nom de fichier "nettoyé", tout en minuscule, exit les char spéciaux, on remplace les & par des and, etc...
3) tous les fichiers et roms sont associées à cette id unique.
Ensuite pour décider quelle rom sera lancée, tout d'abord, chaque rom reçoit une liste de tags, calculés à partir de son nom(standardisé avec les good tools de cowering), l'application applique un algo de préférence basé sur la présence de ces tags, par défaut, une rom en français, perfect dump sera privilégiée:
public static final RomPreference FRENCH = new RomPreference()
.setWeight(RomTags.REGION_FRANCE, 10)
.setWeight(RomTags.LANGUAGE_FRENCH, 2)
.setWeight(RomTags.TRANSLATION_FRENCH, 2)
.setWeight(RomTags.PERFECT_DUMP, 3)
.setWeight(RomTags.REGION_EUROPE, 4)
.setWeight(RomTags.REGION_USA, 3)
.setWeight(RomTags.PIRATE, -5)
.setWeight(RomTags.BAD_DUMP, -2);
Les préférences sont configurable au niveau code, mais pas encore au niveau fichier (ou interface graphique, on verra).
Les amélioration de détection de cette maj, était de supporter l'entrée & dans les noms issus de fichier xml, ce qui a réconcilié une trentaine de doublons dans ma collection.
Changement du backend du module controller utilisé par l'application
Correction d'un bug de chargement initial dans le cas ou la stratégie de rechargement de launchbox était sur "jamais"
Progression du mode standalone, désormais capable de charger les thèmes, les covers, les fichiers de support, reste les roms
A venir, le support des roms, le chargement combiné des DBs server et standalone, le rechargement (fait avec le bouton reload pour l'instant) en arrière plan.
Le mode standalone est finalisé, l'écran de configuration est désormais disponible.
Le site web a été mis à jour: revue du ui/ux, i18n(français, anglais, turc), mise en avant du mode standalone plutôt que client-server, c'est ici que ça se passe: https://play50hz.yildiz-games.be/ vos remarques sont les bienvenues.
A venir
Amélioration du chargement en mode standalone qui est trop lent sur des machine avec hd 5400rpm
Le filtering ne se fera plus via un button, mais à chaque modification d'un des filtres
Petit plus qui n'était pas prévu au programme, support des jeux d'arcade, avec l'ajout de l'émulateur mame 0.220 et prise en charge de sa config, tout ce qu'il y a à faire est mettre les roms dans le dossier adhoc, recharger la config avec support de l'arcade, et lancer Final Fight!
Petit message pour te dire que je suis toujours ton projet ! De belles mises à jour ont été faites. Bravo ! J'imagine que tu profites du confinement
Qu'en est-il d'une installation sur Raspberry ? Est-elle envisagée ? Je vois sur le site que tu prévois du Linux, alors je me demande quand cette version sera envisagée. J'ai bien envie de tester, je n'ai plus de Windows depuis peu :/
Au niveau du raspberry, c'est pas prévu, ça existe pour le manager (mais j'ai pas encore mis le lien, l'installation est un peu différente, faut que je la documente), mais pour le frontend, ça risque de limiter les emus dispo, j'ai essayé retropie, et plus que les 16bits, les perfs était pas terribles.
Pour Linux, c'est compatible(c'est du java) mais il faut que j'ajoute les émulateur.
Je vais créer une branche et démarrer ça ce soir, ça devrait pas être trop de boulot.
Je ferai une installation Linux pour le coup si tu fournis ce qu'il faut Quitte à la tenter sur la raspberry avec quelques magouilles.
Pour Retropie, j'ai été étonné de la latence entre la manette que j'utilisais (PS4) et le mouvement : presque 1 seconde et les graphismes au ralenti (même avec boost de vitesse). C'est une désinstallation immédiate
Bon courage, je testerai une fois dispo !
Julien
EDIT : Question con, tu as les droits sur les images de Mario et sa bande sur ton site ? Nintendo peut être très con là dessus.
Le build linux avance pas mal, j'ai testé l'application sous ubuntu 20.04, y avait un bug d'affichage qui est corrigé.
J'ai compilé snes9x 1.60 pour linux, (il est possible que libsdl2 nécessite d'être installé mais pas sûr, moi je l'avais déjà, besoin pour compiler)
L'application sépare désormais les émus linux et windows, donc sur une machine linux il ne téléchargera qui les ému linux, idem pour windows évidemment.
Reste donc à compiler le lanceur et tester.
Pour l'image mario, c'est une bonne question, enfin j'espère, je me la suis posée également, j'ai cherché d'autres images mais sans succès jusqu'à maintenant.
Changement de programme, la priorité est passée sur le build linux:
J'ai compilé snes9x 1.60 en version gtk, l'émulateur est correctement appelé depuis play50hz, reste à gérer les options, qui se font un peu différemment de windows.
Une fois cet émulateur parfaitement intégré, et le launcher compilé pour linux, play50hz pour linux sera disponible sur le site.
Je passerais ensuite à fusion (Master System/Game Gear/Megadrive), nestopia(Nes) et mame(arcade), et enfin retour au planning initial.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
Site personnel : Julien Gidel - AutoMate - PHPresentation
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
Site personnel : Julien Gidel - AutoMate - PHPresentation
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
Site personnel : Julien Gidel - AutoMate - PHPresentation
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
Site personnel : Julien Gidel - AutoMate - PHPresentation
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
Site personnel : Julien Gidel - AutoMate - PHPresentation
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl