GameFrame类 游戏帧类 (The GameFrame Class) - nanpuhaha/SerpentAI GitHub Wiki
注意:这个类现阶段还是有点太简单了,beta阶段一定会进行扩展。1.0发行版计划会大规模改善1.0
GameFrame 类旨在呈现一个在 Serpent.AI 框架中的游戏帧(哇!)。
GameFrame 实例里有什么?
功能
- 保存游戏图像帧的图像数据
- 跟踪游戏帧的元数据
- 提供传需求调用的缓存的图像帧内变量
- 对其他 GameFrame 实例进行测量
概念
帧变量
帧变量是对 GameFrame 实例的图像数据执行的转换,它们将作为属性被提供给用户。出于性能考量,帧变量并不是预计算的,而是在被首次请求属性值时惰性求值的。结果会被自动缓存,所以下次访问此属性时,可以即时获得结果。
相关信息
self.offset_x
: 如果 GameFrame 实例是更大的 GameFrame 的子集,则该变量是以像素为单位的 X 方向的偏移量,默认为0。self.offset_y
: 如果 GameFrame 实例是更大的 GameFrame 的子集,则该变量是以像素为单位的 Y 方向的偏移量,默认为0。self.resize_order
: 调整图像数据大小时使用样条插值的顺序,默认为1。
帧变量
self.frame
: 全分辨率图像数据self.half_resolution_frame
: 1/4 分辨率图像数据 (宽度 / 2, 高度 / 2)self.quarter_resolution_frame
: 1/8 分辨率图像数据 (宽度 / 4, 高度 / 4)self.eighth_resolution_frame
: 1/16 分辨率图像数据 (宽度 / 8, 高度 / 8)self.grayscale_frame
: 灰度图像, 全分辨率图像数据self.ssim_frame
: 用于 SSIM 计算的 100x100 灰度图像数据
动作
self.compare_ssim
方法签名 compare_ssim(self, previous_game_frame)
返回 2 个 GameFrame 实例 ssim_frame 变量之间的结构相似性分数(SSIM)
- previous_game_frame: 另一个 GameFrame 游戏图像帧实例
GameFrame 实例会在哪里被调用?
技术上来说,GameFrame 实例在可以在任何地方使用,但其主要用途还是作为游戏代理的帧处理程序的 game_frame 参数被使用。在 Serpent.AI 中,通常最好还是用 GameFrame 实例来取代原始图像数据。