PyBoy
v2.4.1
如果您有任何疑問,或者只是想聊天,請加入我們的 Discord。
訓練 RL 智能體玩 Pokemon Red | 倒帶任何遊戲 | |
演奏經典 | 創建你自己的人工智慧 | 利用人工智慧打破世界紀錄 |
說明很簡單:
$ pip install pyboy
有關詳細信息,請參閱安裝說明。
現在你準備好了!直接從終端使用 PyBoy
$ pyboy game_rom.gb
或在您的 Python 腳本中使用它:
from pyboy import PyBoy
pyboy = PyBoy ( 'game_rom.gb' )
while pyboy . tick ():
pass
pyboy . stop ()
如果您想製作機器人或人工智慧,那麼這些資源是一個很好的起點:
當模擬器運行時,您可以輕鬆存取PyBoy的API:
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 核心機器上,您可以在 1 小時內玩 3160 小時的遊戲。
任何貢獻都將受到讚賞。目前已知的問題在「問題」標籤中進行追蹤。請隨意對其中任何一個進行攻擊。如果您有一些原創的想法,請來 Discord 上討論。
對於更主要的功能,您可以嘗試以下功能。 Wiki 的項目清單中也對它們進行了更詳細的描述:
api
或遊戲包裝器來訓練神經網絡如果您想要實現清單中未列出的內容,請隨意執行。如果您想將其合併到我們的儲存庫中,只需發送拉取請求,我們就會查看它。