☰
绝区零一条龙:大世界(Overworld)画面识别与自动化枢纽解析
2026/10/2 20:38:01 网站建设 项目流程
  • 桌面应用
  • RPA
  • 计算机视觉

【免费下载链接】ZenlessZoneZero-OneDragon

绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄

项目地址:https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon
点击查看免费下载

导读

本文围绕 ZenlessZoneZero-OneDragon(绝区零一条龙)项目中对「大世界」画面的建模与识别展开,结合 docs/game/screens/大世界.md 这一画面文档与仓库内屏幕配置、操作源码,完整解析大世界的屏幕信息(screen_info)结构、稳定识别锚点、OCR 动态值处理,以及等待大世界/返回大世界两个核心操作如何支撑登录进游戏、各类日常玩法与终局玩法的自动衔接。读完本文,你将掌握该画面在框架中的建模方式、配置文件字段含义,以及自动化任务如何从任意画面安全回到大世界这一"玩法枢纽"。

大世界:所有玩法的入口枢纽

在绝区零一条龙项目中,大世界是指玩家成功登录游戏、经过加载画面后进入的最开放自由的主画面:控制角色在 3D 场景中移动、交互 NPC、接取任务、进入各种玩法。它是进游戏后的主画面,也是所有自动化玩法模块共同的"入口枢纽"。

从画面文档看,大世界被建模为screen_id: normal_world,其screen_name为大世界;而用于精确识别的子画面名为大世界-普通(-普通后缀表示大世界存在多个状态变体)。在源码中,大世界实际有两种画面状态:

  • 大世界-普通:常规街区大世界;
  • 大世界-勘域:勘域模式的大世界(小地图位置与普通版有偏差)。

这一点在 wait_normal_world.py 与 back_to_normal_world.py 中均有明确体现,两处代码都以['大世界-普通', '大世界-勘域']作为大世界画面的判定列表。

识别特征:稳定锚点与动态值

画面文档将大世界的 UI 元素明确划分为两类:稳定锚点(可作识别特征)与动态值(不可当特征)。

稳定锚点(可依赖的识别特征)

  • 右上角 UI 图标(模板匹配):快捷手册、功能导览、预备编队、按钮-信息;
  • 活动入口(上方横向卡片):零号空洞、式舆防卫战;
  • 小地图(右上角,圆形);
  • 底部快捷键:相机(Tab)、快捷轮盘、F1-F4;
  • UID(右下)。

其中右上角四个图标的模板匹配置信度均较高,是判断"当前确实在大世界"的核心证据。对应的 area 定义可以在 normal_world_basic.yml 中找到:按钮-信息(template_sub_dir: normal_world,template_id: message)、快捷手册(template_id: compendium)、功能导览(template_id: function_menu,id_mark: true)、预备编队(template_id: preset_config,id_mark: true),模板匹配阈值均为 0.7。

动态值(勿当特征)

  • 左侧任务引导文字(如「看看门口的邦布...」「前往任务目标」);
  • 左上角游戏内时间(星期几 / AM New Eridu);
  • 多处NEW!徽章(有未查看新内容时出现,查看后消失)。

这些元素会随游戏状态变化,若将其纳入特征会导致误判,因此文档明确标注为动态、勿当特征。

识别快照:模板 area 与 OCR 双通道

画面文档给出了 2026-07-06 核对的识别快照,匹配画面为大世界-普通(is_precise=True)。快照包含两类识别通道:

模板匹配 area 表

area类型conf位置 (x, y, w×h)
按钮-信息template0.9911738, 928, 78×78
预备编队template0.9901321, 51, 90×44
快捷手册template0.9681531, 60, 48×43
功能导览template0.9691801, 53, 44×44

OCR 识别文本表

文本位置备注
零号空洞/式舆防卫战上方终局玩法入口(稳定)
看看门口的邦布.../前往任务目标左侧任务引导(动态)
星期六/AM New Eridu左上游戏内时间(动态)
NEW!多处未查看新内容徽章(动态)
F1~F4/Enter右侧快捷键
相机/Tab/快捷轮盘底部功能键
UID右下玩家 ID

屏幕配置详解:normal_world.yml 与 normal_world_basic.yml

大世界的屏幕信息在仓库中由两份配置共同描述:

normal_world_basic.yml(大世界-普通)

定义screen_id: normal_world_basic、screen_name: 大世界-普通,且pc_alt: true——表示 PC 端点击该画面上的元素前需要 Alt 解锁光标。共建模 6 个 area:

area_namepc_recttemplategoto / 手柄键
按钮-信息1728,918,1826,1016normal_world/message,阈值 0.7—
按钮-菜单96,34,164,108无goto 菜单;gamepad_key: menu
快捷手册1440,29,1679,113normal_world/compendium,阈值 0.7goto 快捷手册-训练;gamepad_key: compendium
星期201,38,270,86无(OCR 识别「星期」)—
功能导览1776,28,1869,117normal_world/function_menu,阈值 0.7,id_mark: truegamepad_key: function_menu
预备编队1225,44,1505,102normal_world/preset_config,阈值 0.7,id_mark: true—

normal_world.yml(大世界,通用画面)

定义screen_id: normal_world、screen_name: 大世界,同样pc_alt: true。相比基础版,它补充了更多通用型交互区域:

  • 菜单(100,54,162,94,gamepad_key: menu):左上角汉堡「≡」图标,用于打开暂停菜单(底部含仓库、邮件、更多、绳网等入口),是进入各功能子画面的枢纽;
  • 地图(1696,319,1858,415,gamepad_key: map):右上角地图按钮;
  • 小地图(1534,201,1744,411,gamepad_key: minimap):配置中特别注明「2.8 版本更新后,勘域小地图相对于普通的要更往下 17px,这里写勘域小地图的精确坐标」;
  • 信息(1728,918,1826,1016):与基础版一致的右上角信息按钮;
  • 快捷手册(1440,28,1689,118):goto 快捷手册-训练;
  • 星期(201,38,270,86):OCR 文本「星期」,用于辅助判定;
  • 好感度标题 / 好感度选项:大世界中的代理人好感度对话区域;
  • 对话框取消 / 对话框确认:玩法恢复等模态弹窗的操作按钮;
  • 任务追踪(10,115,350,300):左侧任务引导文本区域。

此外,screen_normal_world.py 以枚举方式补充定义了UIDarea(pc_rect 1814,1059,1919,1079),供需要读取玩家 ID 的场景使用。

条件弹窗:玩法恢复提示

大世界画面存在一种模态覆盖式弹窗:当上次退出时位于某玩法中(如迷失之地 / 特遣调查),进大世界会弹出「当前正在处理:特遣调查是否继续?」并提供取消 / 确认按钮。该弹窗属于模态覆盖而非独立画面,自动化逻辑需通过大世界画面下的对话框取消/对话框确认两个 area 处理。特遣调查是迷失之地(Lost Void)玩法的一种。

源码纵深:等待大世界(WaitNormalWorld)

登录流程完成后,框架需要确认角色已落地大世界。enter_game.py 在「点击进入游戏」节点中即加入大世界判定;而独立的 WaitNormalWorld 操作则供各玩法在需要时等待大世界加载,其识别策略值得细读:

  1. 画面名匹配:以大世界-普通/大世界-勘域列表直接匹配当前画面,命中即成功;
  2. area 兜底一:在大世界画面下查找信息area(二值化模板匹配),命中即认为已到大世界;
  3. area 兜底二:查找星期area(OCR「星期」文本),命中即成功;
  4. 重试机制:check_once=False时每轮失败返回round_retry('未到达大世界', wait=1),节点node_max_retry_times=60,约 1 分钟内持续等待;check_once=True则只检测一次,供调用方自行决定后续流程。

该操作被多个玩法应用复用,例如 coffee_app.py(等待大世界加载后点单)与 commission_assistant_app.py。

源码纵深:返回大世界(BackToNormalWorld)

如果说 WaitNormalWorld 解决的是"怎么知道到了大世界",那么 BackToNormalWorld 解决的是"从任何画面都能回到大世界"。该操作注释明确写道:"需要保证在任何情况下调用,都能返回大世界,让后续的应用可执行"。其核心参数:

  • ensure_normal_world:是否必须回到普通大世界(而非勘域);
  • allow_battle:是否允许在战斗状态直接返回成功(锄大地传送后落地即战斗时使用,调用方必须处理返回的status='大世界-战斗',否则角色会卡在战斗画面)。

check_screen_and_run节点内部按优先级依次尝试的兜底策略链是理解该操作的关键:

  1. 画面识别:直接命中大世界-普通/大世界-勘域;勘域且需要普通大世界时,通过打开地图→执行传送(MapTransport 到「录像店-房间」)切换;
  2. goto 画面:round_by_goto_screen尝试按框架内置路径前往大世界;
  3. 小地图 / 左上角区域:检测小地图播放遮罩(play_mask_found),或点击「左上角-区域」返回街区/勘域(用 0.5 LCS 匹配「区」「域」);
  4. 战斗处理:战斗-菜单的按钮-退出战斗→按钮-退出战斗-确认,以及按钮-脱离卡死(勘域误入战斗时使用);
  5. 通用返回:画面-通用的返回/关闭/完成(注释特别提醒:返回需放在完成之前,否则在丽都城募 app 购买大月卡后会误点击「已完成购买」,对应 issue #2005);
  6. 空洞退出:hollow_event_utils.check_in_hollow检测在空洞内时执行HollowExitByMenu退出空洞;
  7. 对话框确认/取消轮换:为避免卡在只点一种按钮,prefer_dialog_confirm标志使确认 / 取消轮流优先点击;
  8. 快捷手册关闭:识别到 TAB 列表(check_compendium)时点击退出;
  9. 好感度对话:OCR 识别好感度标题区域是否出现代理人名字(AgentEnum列表 + 「小黑」),有则轮流点击好感度选项中的不同选项,防止错误点击;
  10. 战斗画面兜底:识别到战斗画面/按键-普通攻击时,allow_battle直接成功,否则打开战斗菜单再进入下一轮;
  11. 盲点返回:最后无识别点击画面-通用/返回(左上角红色返回按钮,相当于点击空白区域),等待 0.5s 后重试(注释引用 issue #1357:识别耗时后点击需缩短等待,避免误回菜单)。

该操作与goto体系配合紧密:例如 GotoMenu 在无法直接前往菜单时,会先执行BackToNormalWorld回大世界再重试。各玩法应用也大量复用,如 email_app.py、city_fund_app.py、drive_disc_dismantle_app.py、lost_void_app.py 等,均以「返回大世界」作为玩法结束后的收尾节点。

大世界在自动化流程中的枢纽角色

从源码调用面可以清晰看到大世界作为枢纽的地位:

  • 登录入口:enter_game.py 以「判定是否进入大世界」作为登录成功的标志;
  • 子画面入口:大世界左上角菜单(按钮-菜单)goto 到菜单画面,进而进入仓库、邮件、更多、绳网等子功能;快捷手册 goto 到快捷手册-训练;
  • 玩法回环:零号空洞、式舆防卫战等终局玩法从大世界上方活动入口卡片进入(NEW!徽章表示有新内容);各种日常玩法(咖啡、邮件、驱动盘拆解、城市基金、迷失之地等)结束时统一调用BackToNormalWorld收尾;
  • 锄大地衔接:world_patrol_app.py 场景中通过allow_battle=True让传送后落地即战斗的情况直接返回,由调用方处理大世界-战斗状态。

备注:建模状态与待确认项

画面文档还记录了该画面的建模边界与后续待办:

  • 已建模:大世界-普通,is_precise=true,4 个 template area,是所有玩法的入口枢纽;
  • NEW! 徽章为动态值(查看后消失),勿当特征;
  • 任务引导 / 游戏内时间均为动态,勿当特征;
  • 大世界变体:screen_info 名大世界-普通暗示存在其他变体(战斗、对话、弹窗等),待补充;
  • 左上角待确认:菜单按钮「≡」右侧 x≈300+ 疑似有玩家头像可交互(点击打开角色界面),但 screen_info 未建模,未验证,待现场确认。

若要继续深入,可对照画面文档 docs/game/screens/大世界.md 与两份屏幕配置 normal_world.yml、normal_world_basic.yml 自行核对坐标,并结合 wait_normal_world.py 与 back_to_normal_world.py 追踪完整调用链。

  • 桌面应用
  • RPA
  • 计算机视觉

【免费下载链接】ZenlessZoneZero-OneDragon

绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄

项目地址:https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询