项目介绍
Auto Maple 是一个智能的 Python 机器人,专为玩《冒险岛》这款 2D 横版 MMORPG 而设计。它通过模拟键盘按键、使用 TensorFlow 进行机器学习、OpenCV 模板匹配及其他计算机视觉技术来实现操作。《冒险岛》玩家可以利用社区创建的资源,如命令书和各个地图的例程,这些资源存储在项目的资源库中。
小地图
Auto Maple 使用 OpenCV 模板匹配来确定游戏小地图的边界及其内各种元素,从而准确追踪玩家在游戏中的位置。如果将 record_layout
设置为 True
,Auto Maple 会记录玩家的先前位置,并将其保存到 "layouts" 目录中的一个四叉树结构的布局对象中。每次加载新例程时,都会加载其对应的布局文件(如果存在)。该布局对象利用 A 搜索算法* 从玩家到目标位置计算最短路径,从而大大提高例程执行的准确性和速度。
命令书
Auto Maple 以模块化为设计理念,可以在游戏中操作任何角色,只要提供一份游戏内动作列表,即"命令书"即可。命令书是一个 Python 文件,包含多个类,每个类对应一个游戏内的能力,告诉程序应该按下哪些键以及何时按下。当命令书被导入时,其类会自动编译成一个字典,Auto Maple 可以利用这个字典在例程中解释命令。命令可以访问 Auto Maple 的所有全局变量,从而使其能够根据玩家的位置和游戏状态动态改变行为。
例程
例程是用户创建的 CSV 文件,它告诉 Auto Maple 需要在何处移动以及在每个位置使用哪些命令。Auto Maple 的自定义编译器会解析选定的例程,并将其转换为可供程序执行的 Component
对象列表。对于每行包含无效参数的情况,都会打印错误信息,并在转换时忽略这些行。
以下是最常用的例程组件总结:
-
Point
:存储直接在其下方的命令,并在角色位于指定位置的move_tolerance
范围内时按顺序执行这些命令。还有一些可选的关键字参数:adjust
:在执行任何命令之前,微调角色的位置以在目标位置的adjust_tolerance
内。frequency
:指示Point
执行的频率。如果设置为 N,该Point
将每 N 次迭代执行一次。skip
:指示Point
是否在第一次迭代中运行。如果设置为 True 并且频率为 N,该Point
将在第 N-1 次迭代中执行。
-
Label
:作为参考点,有助于将例程组织成部分或创建循环。 -
Jump
:从例程中的任何地方跳转到给定的标记。 -
Setting
:更新指定设置为给定值。可以放置在例程中的任何地方,因此同一例程的不同部分可以有不同的设置。
符文
Auto Maple 能够自动解决游戏中的“符文”或箭头键谜题。首先它使用 OpenCV 的颜色滤镜和 Canny 边缘检测 算法来隔离箭头键,并尽可能地减少背景噪音。然后,Auto Maple 使用定制训练的 TensorFlow 模型对预处理帧进行多次推断,直到两次推断结果一致。由于这种预处理,Auto Maple 在解决各种环境(通常是丰富多彩且混乱)的符文时极其准确。
设置
要设置 Auto Maple,需要下载并安装以下程序和文件:
- 安装 Python3。
- 安装最新版本的 CUDA 工具包。
- 安装 Git。
- 下载并解压最新版本的 Auto Maple 发行版。
- 下载 TensorFlow 模型 并将 "models" 文件夹解压到 Auto Maple 的 "assets" 目录中。
- 打开 Auto Maple 主目录中的命令提示符,运行
python -m pip install -r requirements.txt
。 - 最后,运行
python setup.py
创建桌面快捷方式。如果移动了 Auto Maple 的主目录,需要再次运行python setup.py
生成新的快捷方式。
通过完成以上步骤,玩家就可以使用 Auto Maple 机器人在《冒险岛》中自动执行复杂的游戏动作,提高游戏效率。