Skip to content

Latest commit

 

History

History
58 lines (39 loc) · 3.42 KB

File metadata and controls

58 lines (39 loc) · 3.42 KB

进入游戏流程说明

分层边界

  • OpenGame 只负责按配置路径启动游戏进程。
  • OpenAndEnterGame 负责启动游戏、等待窗口就绪、执行 EnterGame
  • EnterGame 负责登录页识别、账号输入、点击进入游戏、等待进入大世界。

主流程节点

EnterGame 当前入口节点是 画面识别。它负责登录页、账号输入入口、切换账号入口,以及进入游戏点击后状态的提前分流。

进入游戏按钮和加载配置之间的状态交给 点击进入游戏 节点处理。这个节点使用 assets/game_data/screen_info/enter_game.yml 中的 进入游戏点击后状态 OCR 区域识别以下文本:

  • 点击进入游戏
  • 加载配置数据中
  • 登录游戏服务器中
  • 登录成功
  • 资源下载中

登录成功加载中 都会流转到 登录成功 节点。该节点统一处理登录完成后的收尾识别:

  • 加载中 区域仍存在时继续等待。
  • 普通进入大世界弹窗交给 check_screen_to_interact() 处理。
  • 识别到大世界后结束。
  • 如果模板没有识别到 加载中,会用 is_gray_loading_screen() 通过低饱和度判断黑白灰加载界面并继续等待。
  • 若连续数轮都未识别到加载、大世界或已知弹窗,则点击左上角返回作为未知遮挡兜底。

点击阶段标志

点击进入游戏 文案本身不能区分第一次还是第二次点击,因此流程使用阶段标志辅助判断:

  • already_login:只表示已经提交账号登录,不代表完成第二次点击。
  • after_first_enter_click:表示已经完成第一次进入游戏点击,或已经识别到 加载配置数据中
  • after_second_enter_click:表示已经进入加载配置后的第二次点击阶段,或已经识别到 登录游戏服务器中登录成功

登录失败弹窗只在第二次点击之后才在 点击进入游戏 节点里调用 match_login_error() 处理,避免把登录前或普通大世界弹窗混到登录失败兜底里。

国服和国际服差异

  • 国际服两次 点击进入游戏 通常都需要脚本点击。
  • 国服账号密码登录按钮可能自动完成第一次进入游戏点击,截图可能直接落在 加载配置数据中、第二次 点击进入游戏登录游戏服务器中登录成功,甚至后续加载阶段。
  • 因此 画面识别 会先用进入游戏点击后的 OCR 区域做轻量检测;只要识别到这些后置状态,就进入 点击进入游戏 节点继续处理。

更新和资源下载

  • 资源下载中 会记录开始时间并等待,超过 MAX_RESOURCE_DOWNLOAD_SECONDS 后失败。
  • 更新完成后会出现 游戏数据已更新,脚本点击 游戏数据更新-确定
  • 点击确定后游戏会回到第一次点击进入游戏之前,因此从 点击进入游戏 节点返回 游戏数据已更新,再流转回 画面识别 重新开始。

资源配置

  • 进入游戏按钮:assets/game_data/screen_info/enter_game.yml点击进入游戏
  • 进入游戏点击后的 OCR 区域:assets/game_data/screen_info/enter_game.yml进入游戏点击后状态
  • 更新提示:游戏数据更新提示游戏数据更新-确定
  • 加载模板:assets/game_data/screen_info/loading.yml加载中

这些坐标和 OCR 区域应优先通过 YAML 维护,不要在 Python 里新增硬编码坐标。