Skip to content

fix(rfvp): preserve settings changed through virtual Mouse mode - #388

Merged
akitaSummer merged 3 commits into
codex/fix-rfvp-reopenfrom
codex/fix-irosekai-settings-persistence
Oct 25, 2026
Merged

akitaSummer merged 3 commits into
codex/fix-rfvp-reopenfrom
codex/fix-irosekai-settings-persistence

Conversation

@MadCcc

@MadCcc MadCcc commented Oct 25, 2026

Copy link
Copy Markdown
Contributor

《いろとりどりのセカイ HD Re:GENERATION》(五彩斑斓的世界)在虚拟控件的 Mode: Mouse 下轻点设置滑条时,会出现“预览数值改变、实际未生效,退出重开又恢复原值”。本 PR 修复同一 VM 帧内按下、松开导致设置回调被跳过的问题,并补充经过真实 Mouse 模式手势识别与应用转发链路的自动化验证。

依赖 #383 的生产媒体库启动与引擎重开支持,因此当前以 codex/fix-rfvp-reopen 为 base;#383 合并后可转为 main。本 PR 的比较范围为设置修复及其自动化测试。

修复

  • RFVP 主机按顺序排队处理指针事件,同一按钮在一个 VM tick 中最多切换一次状态,避免 Mouse 模式在松手时连续产生的按下/松开同时暴露给脚本。滑条更新预览后可正常执行设置回调。
  • 保留拖动结束坐标与连续点击顺序,暂停/取消时清理待处理事件及按键状态。
  • 增加按需读取运行参数、文字状态的诊断接口及累计转发计数,用于区分滑条预览与实际运行设置。
  • 回归探针支持 pointer_input: "virtual_mouse":打开生产虚拟控件面板、通过 ScreenTouch/ScreenDrag 移动实际光标、轻点触控区,并使用虚拟 Esc 键进入游戏菜单。

Mac 与 iPad 的 Mouse 模式修复前后自动化

验证日期:2026-10-25。

  • Mac:Apple M1、macOS arm64 Debug、Metal,运行完整打包的应用。
  • iPad:iPad mini(A17 Pro,iPad16,2)真机、iOS arm64 Debug、Metal,运行签名安装的完整应用。
  • 两端均启用 RFVP 与 AetherInternal,通过正常媒体库启动游戏,然后进入剧情、打开游戏菜单和设置。
  • 测试按“文字显示速度/独白显示速度/自动播放速度”的顺序,将界面值设为 2/4/3。该游戏内部按 10 - 界面值 保存运行参数,对应 8/6/7;同时断言界面值与实际运行参数。
对照场景 Mac iPad 真机
修复前:界面变为 2/4/3,运行参数仍为 5/5/5;退出重开后界面恢复 5/5/5 已复现,51.390 秒 已复现,42.262 秒
修复后:运行参数更新为 8/6/7;退出重开设置仍显示 2/4/3 通过,41.057 秒 通过,43.748 秒
彻底结束应用后启动新进程,直接读取上一轮的原保存目录,运行参数及设置界面保持一致 通过,18.182 秒 通过,20.690 秒

六组自动化全部通过。 两组基线用例的“通过”表示成功断言了修复前的故障,并不表示旧版行为正确。

共执行 44 次生产 Mouse 模式点击。每次先按住触屏接触点 3 个主机帧再松手,由真实手势识别器生成鼠标事件;记录确认按下、松开在同一主机帧产生。测试覆盖实际信号连接、光标坐标映射、应用转发和 RFVP 处理。自动化从应用内注入 ScreenTouch/ScreenDrag,不覆盖物理触摸硬件到操作系统的事件投递。

重启测试复用各自上一轮的同一保存目录及现有 rfvp_global.bin,没有向应用复制种子存档。六轮均完成 cleanup_complete.exit_code = 0,检查时的运行时 render_errors 均为 0;源帧与 Godot 实际呈现帧的可见性检查通过。原游戏资源与用户存档保持隔离。

自动化运行标识
场景 Mac run ID iPad run ID
修复前复现 20261025T073448Z-47175056 20261025T073525Z-77056ceb
修复后生效与退出重开 20261025T073606Z-6a58ce59 20261025T073650Z-78b4ed5a
原目录完整重启 20261025T073746Z-f3bfbf92 20261025T073821Z-178a139c

其他验证与边界

  • RFVP Host Rust:50 项通过,包含同帧短点击、连续点击顺序及取消输入回归;C++ provider 测试通过。
  • Godot Mouse 模式坐标映射/输入抑制、生产虚拟控件、探针语义与存档隔离检查通过;Python runner 5/5 通过;差异空白检查通过。
  • 基线使用 cfb782d4 的输入处理,仅增加只读诊断接口;修复原生库对应 f7a27556,Mouse 模式测试对应 c7b31bbc。每个平台的新旧版本使用相同脚本资源包与依赖对象。应用通过增量构建及重链接/打包后实际执行,未声称全量干净编译。
  • 与 fix(app): reinitialize the engine when reopening RFVP games #383 最新测试夹具提交对齐后,发布分支的完整源码树与上述已验证的 c7b31bbc 完全相同。
  • Mac 新旧版本具有相同的现有 color/history Nil 诊断,以及引擎清理完成后的纹理/uniform set 提示;设置流程断言、呈现检查和引擎清理均通过。

@akitaSummer
akitaSummer merged commit 44bde2b into codex/fix-rfvp-reopen Oct 25, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants