Questions sur l'API et son avenir
-
Hello,
J'ai découvert ce weekend qu'il y avait une API, et ça m'a ouvert l'appétit
J'ai vu aussi qu'apparemment une évolution de celle-ci est dans les tuyaux, du coup j'ai 2/3 questions :- Est-ce que le support de la Hotkey est envisagée/envisageable ?
- La possibilité de récupérer des infos basiques sur le jeu en cours ?
- Idem avec un listing des savestates ?
Je me rend bien compte que ce n'est pas anodin tout ça. C'est juste que pour l'instant l'API permet principalement de jouer sur la config, et ça pourrait être sympa d'aller un peu plus loin. J'ai des idées en tête, mais sorti des langages web principaux, je suis un peu paumé, donc pas certain de pouvoir trifouiller de mon côté
-
-
Merci @DjLeChuck , j'avais pas fait gaffe que ça faisait un petit temps qu'il était pas passé par ici.
Je viens de voir qu'on a un peu les mêmes idées, c'est aussi en prévision d'une intégration sur une borne, j'y collerais bien un 'tit écran tactile sur un Rasp zero pour quelques fonctions pratiques : save/load en "un clic", afficher les move lists si c'est tel ou tel jeu qui est en cours, etc... Y'aurait de quoi faire un truc sympa
-
Rien ne t'empêche de mettre toi même les mains dans la cambouis
-
Yes je vais jeter un oeil, mais j'me garantis rien, du moins rien de propre ^^
-
Bon, j'peux plus éditer, désolé pour le double post.
Effectivement je devrais pouvoir bidouiller. Par contre impossible de trouver un quelconque log lors d'un lancement de jeu (le plus simple et le plus moche moyen d'interroger quel jeu/système est lançé). Au mieux y'a un log lorsqu'on sort d'un jeu, mais rien au lancement. Du moins pas trouvé.
Entre ça et la hotkey que je vois pas comment toper (BUTTON_HK ?), je sens que je vais devoir oublier mon idée ^^
-
Me semble que @substring devait me concocter un truc pour le lancement des jeux qui est BEAUCOUP plus simple que ce qui est fait actuellement. À voir si mon invocation va porter ses fruits... ^^
-
@kjbstar si si tu peux récupérer ca dans le log de ES ou dans le recalbox.log. Après tu connais juste la commande qui a été invoquée, pas si le jeu tourne encore. Mais peut-etre que ...
Pour l'API, pas vu neolao depuis trèèèèèèèèèèèèèèèès longtemps ...
-
@Substring Hmmm dans logs/recalbox.log ? J'ai l'info uniquement lorsque je sors du jeu pour revenir à ES. C'est balo ^^
J'avais justement pensé à fouiller dans les logs d'ES, mais je n'ai pas trouvé où c'est ^^ Je regarderais ce soir !
-
Hummm ça n'a été ajouté qu'en 4.1 il me semble.
-
@kjbstar sisisi il y a une ligne dans ~/.emulationstation/es_log.txt :
lvl2: Configure emulators command : -p1index 0 -p1guid 030000006d04000018c2000010010000 -p1name "Logitech Logitech RumblePad 2 USB" -p1nbaxes 4 -p1devicepath /dev/input/event2 lvl2: Controllers config : -p1index 0 -p1guid 030000006d04000018c2000010010000 -p1name "Logitech Logitech RumblePad 2 USB" -p1nbaxes 4 -p1devicepath /dev/input/event2 lvl2: python /usr/lib/python2.7/site-packages/configgen/emulatorlauncher.pyc -p1index 0 -p1guid 030000006d04000018c2000010010000 -p1name "Logitech Logitech RumblePad 2 USB" -p1nbaxes 4 -p1device path /dev/input/event2 -system psp -rom /recalbox/share/roms/psp/Ultimate\ Ghouls\'n\'Ghosts.iso -emulator default -core default -ratio auto
Mais ca se trouve elle est générée APRES le retour sous ES
Sinon au pire regarder la liste des process qui ont
python /usr/lib/python2.7/site-packages/configgen/emulatorlauncher.pyc
-
Rha bondiou c'était là ! Merci, je regarderais ce soir si c'est (aussi) généré qu'en sortie de jeu.
Puis je plongerais dans le JS voir si je peux faire un truc rapide...
-
@Substring Je confirme c'est généré après le retour sous ES.
J'ai tenté une alternative : lancer retroarch en verbose, ça marche bien on a tout plein d'infos (--verbose > /tmp/retroarch.txt 2>&1). Nouveau fichier à chaque jeu, ca paraissait pas mal.
Après je l'ai ajouté dans /recalbox/scripts/emulatorlauncher.sh (j'ai remonté le disque en écriture) :
retroarchbin="/usr/bin/retroarch --verbose > /tmp/retroarch.txt 2>&1"
Mais visiblement je suis pas au bon endroit, la commande est toujours exécutée sans cette option lorsque je lance un jeu.
C'est tout pour aujourd'hui, les yeux piquent ce soir
-
@kjbstar je te déconseille cette méthode, certains emulateurs sont très verbeux.
La seule vraie methode c'est avec un ps.
On n'utilise plus ce emulatorlauncher.sh depuis un bail cela dit
-
Bon, avant de repartir dans cette recherche d'infos de jeu en cours, j'ai remis le nez dans la base de l'idée, à savoir faire prendre en charge le bouton Hotkey pour ensuite se servir de la fonction "combo" pour voir si on peut gérer la sortie de jeu, la sauvegarde, etc.
Autant ajouter le Hotkey c'est simple, autant j'ai perdu 2h ensuite, entre l'api qui marchait plus pour le gamepad au 1er reboot du Rpi (et c'est parti pour l'install de la dév sur une VM rapide, et des tests sur la VM finalement injoignable niveau API...), pour finalement bêtement redémarrer une 2nde fois le Rpi, et ô miracle l'API remarche.
Sauf qu'après quarante-douze mille tentatives d'envois de combos et de pressions de touches, je me suis rendu compte qu'en fait le gamepad virtuel (de l'API) ne fonctionne pas ingame, seulement dans ES.
Le comble, c'est que je testais sur un jeu SNES, et que le gamepad virtuel est justement SNES.Tout mon truc tombe à l'eau, c'est balo ^^
-
@kjbstar je te l'ai dit : le jeu en cours c'est en scrutant les process (ou une autre méthode en python avec configgen)
-
@Substring Oui, je voulais juste retenter l'idée de base avant, pour valider ou non mon projet d'écran "compagnon" (et donc savoir si oui ou non j'achète un tactile à cet usage).
J'ai retenté ce matin pour le virtual gamepad, mais bon je suis obligé de laisser tomber. Obligé de configurer le gamepad sur le joueur 1 pour avoir accès à Hotkey (1er problème), et la fonction Combo de l'API ne semble tout simplement pas fonctionner. J'ai juste réussi à déclencher 1 fois le menu de Retroarch en bourrinant de désespoir les envois "touche par touche".
Bref, des touches dédiées sauvegarde & co sur un écran déporté, c'est pas demain la veille
Je checkerais quand même par curiosité pour ce que tu me dis, même si du coup je risque de pas m'en servir. Merci en tout cas !
-
@kjbstar la fonction combo ne pourra jamais marcher puisque qu'elle implique activer des évènements d'un périphérique matériel (et donc autonome) par logiciel. Pas possible. Tu veux faire quoi exactement ? Regarde vers les commandes réseau de retroarch par exemple.
Tu ferais bien d'unier tes forces avec https://forum.recalbox.com/topic/5777/relier-à-un-écran-et-afficher-du-texte/
-
@Substring L'idée c'était de faire une interface très simple via navigateur, avec des gros boutons, à utiliser sur écran tactile.
A la base c'était juste 2 fonctions :
- sauvegarder
- restaurer
Car intégration dans borne d'arcade, et le kit que je prévois a l'emplacement pour le hotkey sur sur la face verticale du panel. Donc un peu plus chiant que bouger 2 pouces sur une manette, pour sauver dans le feu de l'action.
Faire un truc de feiniasse, quoi !
Je me disais ensuite qu'éventuellement ça pouvait être sympa que je détecte le jeu lancé pour afficher les movelists, dans le cas des bourre-pifs.
Et même afficher un listing des différentes savestates pour se repérer dans les dates et charger celle souhaitée, quand on reprend un jeu X temps après.J'ai vu le topic oui ce matin, je voulais tenter de faire sortir le nom du jeu en json sur une url propre et donc facile à récupérer pour une autre machine sur le local, mais j'ai pété le recalbox manager là, mes premières joies du python
EDIT : je ne savais pas du tout que RetroArch avait cette possibilité de commandes réseaux. Ca m'a l'air de répondre à ce besoin, merci !
-
@kjbstar on a déjà un bout de code python pour les network commands retroarch (donc en local), faut demander à @supernature2k
Mais si toi tu gères ta page web dans tn coin sans rien appeler de recalbox mais juste envoyer les commandes reseau à retroarch, pani pwoblemIdée : si ton jeu est scrapé, tu afficher des données tant qu'il edt en cours genre l'image, l'annee etc ... Tu peux aussi afficher le core etc ...
Et si tut'y connais et que n'es pas un amateur, tu peux partger tes sources sur github