弯道试跑与节拍同步
目标:让玩家在短局中选择速度和走线,同时保留第一人称踹车的身份。
本轮边界
- 保留经典直路,新增可选的单人弯道试跑,使用独立本地最佳记录与幽灵。联机和云排行继续使用经典直路。
- 以道路里程与横向偏移作为统一逻辑坐标;曲线模块提供中心线、朝向和曲率。渲染适配道路、标线、场景、车流、镜头和灯光,规则层根据曲率施加外侧偏移。碰撞和踹击继续在相同道路坐标中判定。
- 初始直路教学,随后长弯和 S 弯;提前显示弯向,高速弯道需要反打或减速,稳定通过奖励出弯加速。
- 小地图采用轻量 SVG,不增加 WebGL 渲染通道。纸白 / 沥青底、黄色玩家点与交互蓝路线;放在 HUD 边缘,手机横屏压缩尺寸。MiniMap 只负责显示,TrackSelector 发出选择事件,StartOverlay / GameUi 负责组合,hud.ts 传递模拟数据。
- 节拍模式使用已校准的极速 160 音乐。节拍来自媒体播放位置,暂停、卡顿、命中慢动作与重开不会用模拟时间推算音乐进度。
验证计划
曲线连续性、道路偏移与朝向、刹车对弯道漂移的影响、出弯奖励、独立存档和音频节拍生命周期以单元测试覆盖;浏览器验证手机 / 桌面启动、赛道切换、小地图与实际弯道路面、暂停重开、触控释放、阴影与车灯位置、帧预算。真机只在实际连接设备后记录结果。
已完成验证(2026-10-05)
pnpm typecheck、pnpm test(227 项)、pnpm build均通过。- 游戏、弯道、手机布局和模型预览的 23 项浏览器检查通过。检查覆盖 320×568、390×844、844×390、1280×800,以及转向、刹车和踹击三指并用、暂停释放输入、节拍曲目锁定、赛道记录隔离。
STABILITY_TRACK=curves的连续触控测试运行 195 秒,完成 42 轮操作、三个光照主题和 10 次重开。最远到达 1441 米,页面错误为零;采样最多 423 次绘制、62590 个三角形;重开时几何资源波动 48、纹理波动 3,均在现有预算内。- 首屏 JavaScript 为 268.6 KiB gzip、CSS 为 15.5 KiB gzip;性能预算和发布产物检查通过。弯道适配器延迟加载,路面、实例和姿态缓冲复用;太阳方向保持固定,车灯随道路目标转向。
- 生产产物在 Fast 3G、4 倍 CPU 降速的 Chromium 手机模拟下,首个可玩帧为 5317 ms,低于现有 15000 ms 预算。
- 修复菜单切换时将上一局分数写入新模式 / 赛道的问题,以及短屏开始按钮溢出的问题。
以上触控结果来自桌面 Chromium 的手机模拟,尚未代表真机验证。Android 未连接,已登记的 iPhone 处于离线状态。
真机试玩步骤
运行 pnpm dev --host 0.0.0.0 --port 5173,手机与电脑连接同一 Wi-Fi,访问终端显示的 Network 地址,选择「弯道试跑」。
- 先跑自由模式:120 米热身后进入右弯;松开油门、轻刹车并向弯内修正,比较高速与低速的外侧偏移;稳住出弯应出现加速奖励。
- 同时按住转向和刹车,第三指踹击;暂停或切到后台后,所有输入应释放。分别检查竖屏、横屏和左右手布局。
- 节拍模式使用已校准的 160 BPM 曲目。比较实际听到的鼓点和游标,测试暂停、恢复及重新开始;记录机型、浏览器、音频输出设备和是否感觉偏早 / 偏晚。
- 连续玩 5–10 分钟,重点观察 S 弯、路口和变身后的控制、帧率、发热与声音。根据真机反馈调整曲率漂移系数、转向响应和节拍偏移,暂不将模拟测试当作最终手感结论。