Pyboy
Si vous avez des questions, ou que vous voulez juste discuter, rejoignez-nous sur Discord. Les instructions sont simples: $ pip installer pyboy Pour plus de...
Choisir une liste...
Si vous avez des questions, ou que vous voulez juste discuter, rejoignez-nous sur Discord.
| Trainer les agents RL pour jouer Pokemon Red | Remonter tout jeu | |
![]() | ||
| Jouer les classiques | Créez votre propre AI | Battre les records du monde avec l'IA |
![]() | ![]() | ![]() |
Commencer
Les instructions sont simples:
$ pip install pyboy
Pour plus de détails, voir instructions d'installation.
Tu es prêt ! Soit utiliser PyBoy directement depuis le terminal
$ pyboy game_rom.gb
Ou utilisez-le dans vos scripts Python :
from pyboy import PyBoy
pyboy = PyBoy('game_rom.gb')
while pyboy.tick():
pass
pyboy.stop()
L'API
Si vous cherchez à faire un robot ou une AI, alors ces ressources sont un bon endroit pour commencer:
Lorsque l'émulateur est en marche, vous pouvez facilement accéder API de PyBoy:
pyboy.set_emulation_speed(0) # No speed limit
pyboy.button('down')
pyboy.button('a')
pyboy.tick() # Process at least one frame to let the game register the input
value_of_interest = pyboy.memory[0xC345]
pil_image = pyboy.screen.image
pil_image.save('screenshot.png')
Les Wiki montre comment interagir avec PyBoy depuis votre propre projet.
Résultats
La performance est une priorité pour PyBoy, pour rendre votre entraînement et vos scripts d'IA aussi rapides que possible.
La façon la plus simple d'améliorer vos performances est de sauter le rendu des cadres inutiles. Si vous connaissez votre caractère prend des images X pour se déplacer, ou le jeu ne prend pas d'entrée chaque image, vous pouvez sauter ceux-ci à potentiellement triple votre performance. Toute la logique de jeu etc. sera toujours processus.
Voici une comparaison simple du rendu de chaque cadre, du rendu de chaque 15ème cadre, et non du rendu des cadres (plus haut est mieux). Voir pyboy.tick pour comment ça marche. Votre performance dépendra du jeu.
| rendu complet | Châssis 15 | Pas de rendu |
| x124 temps réel | x344 temps réel | x395 temps réel |
| | |
Le Game Boy courait à l'origine à 60 images par seconde, donc une vitesse de 100x en temps réel est de 6 000 images par Deuxième. Et triviallement du tableau ci-dessus, simulant 395 heures de gameplay peut être fait en 1 heure sans rendu.
Il est également recommandé d'exécuter plusieurs instances de PyBoy en parallèle. Sur une machine 8-core, vous pourriez potentiellement faire 3160 heures de gameplay en 1 heure.
Contribution
Toute contribution est appréciée. Les problèmes actuellement connus sont suivis dans l'onglet Questions. N'hésitez pas à faire une balançoire. Si vous avez quelque chose d'original en tête, venez et en discuter sur Discord.
Pour les fonctionnalités les plus importantes, il ya ce qui suit que vous pouvez donner un essai. Ils sont également décrits de manière plus détaillée dans le liste de projets dans le Wiki:
- Hacking jeux
- Câble de liaison
- Débogueur (VSCode, GDB, terminal ou autre)
- Oui. utiliser les
apiou des enveloppes de jeu pour former un réseau neuronal - Game Wrappers - faire des emballages pour les jeux populaires
Si vous voulez implémenter quelque chose qui n'est pas sur la liste, n'hésitez pas à le faire de toute façon. Si vous voulez le fusionner dans notre repo, il suffit d'envoyer une demande de tirage et nous allons l'examiner.




