绝区零自动化框架从零入门:一条龙项目的状态机引擎与实战配置
【免费下载链接】ZenlessZoneZero-OneDragon绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon
闹钟在早上七点半响起,你一边刷牙一边盘算:体力要溢出了、每日签到还没做、周常空洞还差两把、邮件里还躺着几十万丁尼没领……昨晚打主线太晚,今天实在没精力手动清日常。这时候,一个能"替你把游戏玩完"的程序就显得格外诱人。
这就是绝区零自动化框架ZenlessZoneZero-OneDragon(玩家常称"一条龙")想解决的核心问题:把游戏里那些重复、规则明确、纯属耗时的固定流程,全部交给程序托管,让人从"游戏上班"里解脱出来。
项目速览:3 分钟看懂"一条龙"是什么
如果只用一句话概括:这是一个基于 Python 3.11+ 的开源《绝区零》自动化框架,靠"截图识图 + 状态机决策 + 模拟输入"三步循环,把日常、体力、空洞、战斗等固定玩法全自动跑完,而且支持手柄操作。
它不是什么外挂式的修改器,不会改内存、不会注入进程,而是像一个"长了眼睛的机器人玩家":截屏看画面 → 判断现在处于什么状态 → 决定按下哪个键 → 再截屏确认结果,如此循环。
核心能力清单
| 能力分类 | 具体内容 |
|---|---|
| 自动日常 | 每日签到、邮件领取、刮刮卡、咖啡店、吼吼饼铺等 |
| 自动体力 | 电池兑换、体力计划,体力快满自动提醒消耗 |
| 自动空洞 | 常规空洞、迷失之地等多套玩法自动挑战 |
| 自动战斗 | 自动闪避、连携技触发、终结技释放、技能循环 |
| 自动巡逻 | 世界地图路线巡逻、NPC 交互、事件处理 |
| 辅助功能 | 多账号切换、完成通知推送、手柄/键鼠双支持、运行记录 |
从上图能直观看到它的设计思路:右侧一排排可勾选的任务项,本质上就是一张"今天要替你做哪些事"的清单;勾选完毕点启动,剩下的交给状态机去调度。
亮点拆解一:状态机引擎,把"流程"变成一张可视化节点图
它解决什么问题?传统自动化脚本最怕两件事:一是画面加载慢了半秒,后续步骤全部错位;二是中间弹出个意外窗口,脚本不知道怎么办,直接卡死或乱点。原因在于传统脚本是"一根筋"的线性逻辑,从第 1 步到第 100 步,容不得任何偏差。
它是怎么实现的?一条龙把整个流程拆成一个个"操作节点",每个节点是一个普通函数,用装饰器声明它的角色;节点之间不靠行号连接,而是靠"上一个节点返回的状态"来路由到下一个节点。看一个实际例子(每日签到应用的核心逻辑):
@operation_node(name='运行子应用', is_start_node=True) def run_sub_app(self) -> OperationRoundResult: """根据配置的商店,代理运行具体的签到子应用。""" sub_app_id: str = self.config.selected_sign if not sub_app_id: return self.round_fail(status='未选择子应用') app = self.ctx.run_context.get_application( app_id=sub_app_id, instance_idx=self.instance_idx, group_id=self.group_id, ) return self.round_by_op_result(app.execute())这段代码的含义是:签到应用本身只负责"转发"——读取配置里选好的商店,去调用对应的子应用(吼吼饼铺、卦象集录或刮刮卡)。注意它返回的round_success、round_fail这类结果,就是节点之间的"路标",状态机会根据路标决定下一步走到哪个节点、要不要重试、超时怎么处理。
这带来什么好处?三个字:可观测。运行时每个节点都有名字、有状态、有耗时,出问题可以精确定位到"卡在哪个节点";节点还内置超时重试机制,某个操作没成功会按配置重来几轮而不是直接崩溃;更妙的是整套流程支持暂停、恢复,你甚至可以中途接手操作,再让它继续跑。
亮点拆解二:多级视觉识别,让程序"看得懂"游戏画面
它解决什么问题?界面元素识别是游戏自动化的第一道坎:按钮位置可能随分辨率变化,血量数字是动态的,Boss 名字是花体字。单靠一种识别手段很难覆盖全部场景。
它是怎么实现的?一条龙把视觉能力拆成三层,各司其职:
- 模板匹配层——拿预先截好的小图(比如"启动"按钮)去当前画面里做匹配,专门对付位置固定的 UI 元素,速度最快;
- OCR 文本识别层——基于 ONNX 运行时优化的识别引擎,用来读动态文字,比如"体力 120/120"、任务完成提示;
- YOLO 目标检测层——训练好的模型识别复杂场景,比如判断敌人是否进入攻击前摇、当前操作角色是谁。
打个比方:模板匹配像"认路牌",OCR 像"读报纸",YOLO 像"看人下菜碟"——三层配合,既快又准。项目里还能看到大量*_analysis_pipelines配置文件,例如"战斗-连携条""防卫战倒计时"这类检测管线,说明很多 UI 判断已经做成了可替换的配置文件,改图改阈值就能适配游戏小版本更新,不用重写代码。
这带来什么好处?一是分辨率适配能力强:坐标不再写死,而是"找到元素再点它";二是容错性好:某个识别没通过就重试,不会因为一次误判就整条流程报废;三是开发效率高:识别逻辑配置化,社区玩家也能参与维护模板。
亮点拆解三:插件化应用工厂,30+ 个功能像积木一样自由组合
它解决什么问题?一个游戏功能几十个,如果全部耦合在一起,改一个功能可能崩一片;新功能想上线还得等整个项目发版。
它是怎么实现的?项目采用工厂模式:每个功能(签到、邮件、空洞、防卫战……)都是独立的应用包,通过统一接口注册进系统。从源码目录能看得一清二楚——src/zzz_od/application/下躺着 30 多个子目录,每个都是一个自包含的应用插件:
application/ ├── daily_signin/ # 每日签到(转发到具体商店子应用) ├── email_app/ # 邮件领取 ├── hollow_zero/ # 自动空洞 ├── world_patrol/ # 世界巡逻 ├── shiyu_defense/ # 防卫战 └── ... # 其余 20+ 个应用每个应用自带配置类、运行记录类、工厂类,互不干扰;运行时由应用工厂管理器统一发现、加载、缓存。
这带来什么好处?用户可以像勾选清单一样自由组合"今天跑哪些应用",系统按顺序调度;开发者想新增玩法,只需要照着某个现有应用的结构复制一个包,改改节点逻辑即可,几乎不动核心框架——这就是开闭原则在游戏自动化领域的落地。
实战演练:从零把"自动每日 + 体力计划"跑起来
下面用一条完整的链路演示这个绝区零自动化框架如何落地,全程大约三步。
第一步:准备环境。一台 Windows 电脑,装好 Python 3.11+ 和游戏本体;然后把仓库克隆下来:
git clone https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon第二步:安装依赖并启动。进入项目目录,按文档安装依赖后启动主程序,此时会弹出我们在速览里见过的主界面。在设置里填好游戏窗口的获取方式,让程序能截到画面。
第三步:勾选任务并运行。在右侧任务列表中勾选"每日签到"“邮件领取”“刮刮卡”“体力计划”等选项,点"启动一条龙"。程序会依次执行:
- 打开游戏并进入主城(进入游戏流程本身也是一个节点网络);
- 找到签到入口 → 截屏识别"签到"按钮 → 点击 → 确认签到成功;
- 转向邮件界面 → 识别"一键领取" → 领取并确认;
- 检查体力 → 若接近上限则按体力计划消耗(比如打一次空洞或使用电池);
- 全部完成后推送一条通知,告知"今日任务已完成"。
整个过程中,你唯一要做的是保证游戏窗口别被完全遮挡。如果想观察程序"脑子里在想什么",项目还提供调试浮层,可以实时看到当前节点名、识别到了什么、下一步做什么——这对排查问题非常有帮助。
同类方案对比:和传统按键脚本的差距在哪
| 对比维度 | 传统按键/录制脚本 | 一条龙框架 |
|---|---|---|
| 逻辑组织 | 线性录制,一录到底 | 状态机节点图,支持分支与循环 |
| 界面定位 | 写死坐标,分辨率变了就废 | 模板匹配 + OCR + YOLO 动态定位 |
| 容错能力 | 步骤错位即全盘崩溃 | 节点级超时重试,可暂停可恢复 |
| 版本适配 | 游戏一更新就得重录 | 换模板图、改阈值配置即可 |
| 扩展方式 | 基本无法扩展 | 插件化应用,新玩法独立成包 |
| 运行反馈 | 黑盒,出错靠猜 | 节点状态、运行记录、通知推送全透明 |
一句话总结差异:传统脚本是"录好的磁带",只会照着放;一条龙是"长了眼睛的调度员",见招拆招。
性能与可靠性:数据说话
对于自动化程序,稳定比花哨更重要。项目在性能与可靠性上做了这些硬功夫:
| 指标 | 表现 | 实现手段 |
|---|---|---|
| 模板匹配 | 15~25ms/次 | 多尺度金字塔匹配 + 模板缓存 |
| OCR 识别 | 30~50ms/次 | 区域级 5 秒缓存,相同区域不重复计算 |
| 目标检测 | 40~60ms/次 | ONNX 推理 + GPU 加速(可回落 CPU) |
| 操作执行 | 毫秒级 | 输入模拟优化,动作原子化 |
| 运行记录 | 按日/周自动重置 | 每个应用独立记录完成状态,跨天自动刷新 |
| 异常兜底 | 超时重试 + 失败告警 | 节点级配置 + 通知推送(运行结束发消息) |
另外值得一提的还有资产组织:游戏截图模板、界面识别配置(screen_info/下几十个 yml)、战斗策略配置全部独立存放,玩家和开发者可以只改配置不动代码。比如自动战斗的连携条检测、Boss 血量判断,都对应着独立的图像分析管线配置,这让社区协作维护成为可能。
下一步你可以做什么
如果你对这套绝区零自动化框架感兴趣,建议按这个顺序上手:
- 先用起来:按上面的三步搭好环境,先跑通"自动每日",感受状态机带来的安心感;
- 读核心源码:从
src/zzz_od/application/挑一个最简单的应用(比如每日签到)读起,它只有几十行代码,是理解整个框架的最佳入口; - 研究节点机制:去
src/one_dragon/base/operation/看operation_node.py和operation_edge.py,你会发现"流程可视化"背后的设计其实很简洁; - 试着写个新功能:复制一个现有应用包的结构,改改节点,跑一次
__debug()入口——亲手为游戏加一个自动化玩法,远比看十篇文章更有收获。
最后留一个问题给你思考:当"替玩家玩游戏"的程序能做到识图、决策、执行三环全部自动化时,下一个十年的游戏设计,是不是也该为"可以被自动化"而重新设计?
毕竟,最好的自动化框架,不是让玩家少玩游戏,而是让玩家把时间留给真正想玩的部分。绝区零自动化框架的价值正在于此——它把重复交给程序,把乐趣还给人。
【免费下载链接】ZenlessZoneZero-OneDragon绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考