Skip to content

结束游戏确认超时后,A 重试错误地重新启动游戏 #27

Description

@kxn

现象与复现

真机 Switch 10.10.10.17,deko 诊断构建 71a2d65,串流《黑神话:悟空》。用户报告:

  1. 在客户端选择“结束游戏”。
  2. 电脑端游戏已经退出,客户端仍等待游戏结束,随后提示超时。
  3. 按 A 重试后,电脑端重新启动了游戏。
  4. 用户在客户端取消,并在电脑上 Alt-F4 关闭游戏。

本条先记录为独立缺陷,不将主机已退出的用户观察改写为“主机未退出”。

证据

设备日志依次出现:

command: type=4 generation=2 host=1
user end game: reliable StopRequest queued; awaiting host completion
Activity: SetActivity activity=3 gameid=413080 name=
cleanup: session disconnect/join
Session: Host stopped the session
session end: explicit host stop
cleanup: session destroyed
未能确认游戏已结束,请检查电脑。
command: type=5 generation=1 host=0
...
command: type=2 generation=3 host=1
...
command: type=3 generation=4 host=1

本地完整证据:build/switch-deko/interactive-runs/71a2d65/session.log,关键行约 1125–1261。
日志并未直接记录电脑进程状态;电脑退出/重启以用户观察为证据。

源码(71a2d65):

  • app/src/ui/ui_model.c 的 SL_RETRY 在 SL_ERROR 上统一使用保留的连接 intent,已配对主机发出 SL_CMD_STREAM,未区分结束游戏失败与连接失败。
  • app/platforms/common/runtime.c 的 END_GAME 路径发送 StopRequest;结束监视依赖 end_game.empty >= 2,15 秒后按未确认退出失败处理。

结论与待验证

  • 重试重开游戏有源码和命令日志支撑:结束操作的错误页进入了通用串流重试流程。
  • 为什么电脑已退出后仍未满足结束确认条件:待验证。应结合 activity、发现状态时间戳、gamesRunning、host-stop 回调与超时处理的时序审查,不能仅凭这份日志认定主机协议错误。

验收条件

  • 结束游戏的失败/超时必须保留操作类型,重试不能发起启动或串流请求。
  • 主机退出事实、结束确认、会话停止与 15 秒超时交错时,UI 进入正确终态,不把已完成操作恢复成启动意图。
  • 覆盖未收到确认、重复 A、超时与 host-stop 同时发生、取消后迟到回调;本地受控测试先行,真机测试自动采集日志。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions