Jika Anda memiliki pertanyaan, atau hanya ingin mengobrol, bergabunglah dengan kami di Discord.
Latih agen RL untuk memainkan Pokemon Red | Putar ulang game apa pun | |
Mainkan yang klasik | Buat AI Anda sendiri | Kalahkan rekor dunia dengan AI |
Petunjuknya sederhana:
$ pip install pyboy
Untuk detailnya, lihat petunjuk pemasangan.
Sekarang kamu siap! Gunakan PyBoy langsung dari terminal
$ pyboy game_rom.gb
Atau gunakan dalam skrip Python Anda:
from pyboy import PyBoy
pyboy = PyBoy ( 'game_rom.gb' )
while pyboy . tick ():
pass
pyboy . stop ()
Jika Anda ingin membuat bot atau AI, sumber daya berikut adalah tempat yang baik untuk memulai:
Saat emulator berjalan, Anda dapat dengan mudah mengakses API 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' )
Wiki menunjukkan cara berinteraksi dengan PyBoy dari proyek Anda sendiri.
Performa adalah prioritas PyBoy, untuk membuat pelatihan dan skrip AI Anda secepat mungkin.
Cara termudah untuk meningkatkan kinerja Anda adalah dengan melewatkan rendering frame yang tidak perlu. Jika Anda tahu karakter Anda memerlukan X frame untuk bergerak, atau game tidak menerima input setiap frame, Anda dapat melewatinya untuk berpotensi melipatgandakan performa Anda. Semua logika permainan dll. akan tetap diproses.
Berikut adalah perbandingan sederhana dari merender setiap frame, merender setiap frame ke-15, dan tidak merender frame apa pun (lebih tinggi lebih baik). Lihat pyboy.tick
untuk mengetahui cara kerjanya. Performa Anda akan bergantung pada permainan.
Render penuh | Lewati bingkai 15 | Tidak ada rendering |
x124 waktu nyata | x344 waktu nyata | x395 waktu nyata |
for _ in range ( target ):
pyboy . tick () | for _ in range ( target // 15 ):
pyboy . tick ( 15 ) | pyboy . tick ( target , False ) |
Game Boy awalnya berjalan pada 60 frame per detik, jadi peningkatan kecepatan 100x realtime adalah 6.000 frame per detik. Dan sepelenya dari tabel diatas, simulasi gameplay 395 jam bisa dilakukan dalam 1 jam tanpa rendering.
Disarankan juga untuk menjalankan beberapa contoh PyBoy secara paralel. Pada mesin 8-core, Anda berpotensi melakukan 3160 jam gameplay dalam 1 jam.
Kontribusi apa pun dihargai. Masalah yang diketahui saat ini dilacak di tab Masalah. Jangan ragu untuk mencoba salah satu dari mereka. Jika Anda memiliki pemikiran orisinal, datang dan diskusikan di Discord.
Untuk fitur-fitur yang lebih utama, berikut ini yang bisa Anda coba. Mereka juga dijelaskan secara lebih rinci dalam daftar proyek di Wiki:
api
atau pembungkus game untuk melatih jaringan sarafJika Anda ingin menerapkan sesuatu yang tidak ada dalam daftar, silakan tetap melakukannya. Jika Anda ingin menggabungkannya ke dalam repo kami, kirimkan saja permintaan tarik dan kami akan melihatnya.