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
或游戏包装器来训练神经网络如果您想要实现列表中未列出的内容,请随意执行。如果您想将其合并到我们的存储库中,只需发送拉取请求,我们就会查看它。