หากคุณมีคำถามหรือต้องการพูดคุย เข้าร่วม Discord กับเรา
ฝึกตัวแทน RL ให้เล่น Pokemon Red | ย้อนกลับเกมใด ๆ | |
เล่นคลาสสิก | สร้าง AI ของคุณเอง | ทำลายสถิติโลกด้วย AI |
คำแนะนำนั้นง่าย:
$ pip install pyboy
สำหรับรายละเอียด โปรดดูคำแนะนำในการติดตั้ง
ตอนนี้คุณพร้อมแล้ว! ใช้ PyBoy โดยตรงจากเทอร์มินัล
$ pyboy game_rom.gb
หรือใช้ในสคริปต์ Python ของคุณ:
from pyboy import PyBoy
pyboy = PyBoy ( 'game_rom.gb' )
while pyboy . tick ():
pass
pyboy . stop ()
หากคุณต้องการสร้างบอทหรือ AI แหล่งข้อมูลเหล่านี้เป็นจุดเริ่มต้นที่ดี:
เมื่อโปรแกรมจำลองทำงาน คุณสามารถเข้าถึง 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 แสดงวิธีเชื่อมต่อกับ PyBoy จากโครงการของคุณเอง
ประสิทธิภาพเป็นสิ่งสำคัญสำหรับ PyBoy เพื่อให้การฝึกอบรม AI และสคริปต์ของคุณเร็วที่สุดเท่าที่จะเป็นไปได้
วิธีที่ง่ายที่สุดในการปรับปรุงประสิทธิภาพของคุณ คือการข้ามการเรนเดอร์เฟรมที่ไม่จำเป็น หากคุณรู้ว่าตัวละครของคุณต้องใช้ X เฟรมในการเคลื่อนที่ หรือเกมไม่ได้ใช้อินพุตทุกเฟรม คุณสามารถข้ามเฟรมเหล่านั้นเพื่อเพิ่มประสิทธิภาพเป็นสามเท่าได้ ตรรกะของเกมทั้งหมด ฯลฯ จะยังคงดำเนินการอยู่
นี่คือการเปรียบเทียบง่ายๆ ของการเรนเดอร์ทุกเฟรม เรนเดอร์ทุกๆ เฟรมที่ 15 และไม่เรนเดอร์เฟรมใดๆ (ยิ่งสูงยิ่งดี) ดู pyboy.tick
สำหรับวิธีการทำงาน การแสดงของคุณจะขึ้นอยู่กับเกม
การเรนเดอร์เต็มรูปแบบ | ข้ามเฟรม 15 | ไม่มีการเรนเดอร์ |
x124 เรียลไทม์ | x344 เรียลไทม์ | x395 เรียลไทม์ |
for _ in range ( target ):
pyboy . tick () | for _ in range ( target // 15 ):
pyboy . tick ( 15 ) | pyboy . tick ( target , False ) |
เดิมที Game Boy ทำงานที่ 60 เฟรมต่อวินาที ดังนั้นความเร็วแบบเรียลไทม์ 100 เท่าจึงอยู่ที่ 6,000 เฟรมต่อวินาที และจากตารางด้านบนเล็กน้อย การจำลองการเล่นเกม 395 ชั่วโมงสามารถทำได้ภายใน 1 ชั่วโมงโดยไม่ต้องมีการเรนเดอร์
ขอแนะนำให้ใช้งาน PyBoy หลายอินสแตนซ์พร้อมกัน บนเครื่อง 8 คอร์ คุณสามารถเล่นเกมได้ 3,160 ชั่วโมงใน 1 ชั่วโมง
การมีส่วนร่วมใด ๆ ที่ชื่นชม ปัญหาที่ทราบในปัจจุบันได้รับการติดตามในแท็บปัญหา รู้สึกอิสระที่จะแกว่งไปที่หนึ่งในนั้น หากคุณมีสิ่งที่แปลกใหม่อยู่ในใจ มาพูดคุยได้ที่ Discord
สำหรับคุณสมบัติหลักๆ เพิ่มเติม คุณสามารถลองใช้สิ่งต่อไปนี้ได้ มีการอธิบายรายละเอียดเพิ่มเติมในรายการโครงการใน Wiki:
api
หรือตัวหุ้มเกมเพื่อฝึกโครงข่ายประสาทเทียมหากคุณต้องการใช้บางสิ่งที่ไม่อยู่ในรายการ อย่าลังเลที่จะทำเช่นนั้น หากคุณต้องการรวมเข้ากับ repo ของเรา เพียงส่งคำขอดึงแล้วเราจะตรวจสอบให้