随机城市赛道
从街区「街头赛事」进入准备页,选择「计时竞速」或「道具赛」下的「随机地图」,点击「换图」生成新的路线,或输入 1–999999 的地图种子并点击「载入」。同一个种子会重建同一条道路,可将种子号码告诉朋友一起试跑。上次使用的种子保存在本机,重新进入随机地图时恢复;「再跑两圈」保留当前路线。
随机地图沿用每圈 1600 米、共两圈、8 个有序检查点、漂移蓄能和完赛计时。赛事准备页提供路线预览,游戏中的全程小地图显示同一条路线、当前位置、检查点及种子号。结算显示种子和每圈时间。固定环线与随机地图合并到竞速玩法内部,经典直路和弯道试跑归入经典骑行。道具规则见 道具赛。
生成规则
randomTrack.ts 使用种子生成绕行方向、S 弯方向和幅度、两个长弯的长度及恢复直路。第二个半圈与第一个半圈保持半周旋转对称,保证道路和朝向连续闭合。弯道曲率低于 0.017 / 米,避免生成现有触控转向无法应对的急弯;每条路线保留 80 米的起步直路。
种子作为规则状态传入模拟、道路渲染、车辆与镜头坐标变换。trackMap.ts 为菜单预览和小地图提供相同投影。生成器、预览面板及地图代码按需加载,路线表最多缓存 4 条;换图复用已有城市模型、道路几何体和光照,不额外堆积 WebGL 对象。
种子决定道路,车流仍按原有玩法随机生成。当前版本没有岔路、跳台或自动生成的建筑资产,也没有多人随机赛道同步。生成规则升级时应升级存档版本,避免把改变后的路线与旧纪录比较。
纪录与验证
随机纪录按种子保存至 dayun-kicker.random.v1.<seed>.best-time,固定闭环纪录继续使用原来的键。只有有效完赛且更快的时间才能刷新对应纪录;换图不会清除其他种子或固定赛道的成绩。
单元测试覆盖 100 组种子的道路闭合、朝向与曲率接缝、道路间距、镜像方向、种子复现和缓存淘汰;另验证多种路线跑完两圈、漂移释放、渲染坐标和分种子的时间纪录。
浏览器测试通过键盘和 CDP 触控事件验证320px菜单、预览一致性、种子校验与换图、手机旋转、暂停重开、实际跑完两圈和刷新后的纪录恢复。完整竞速测试与固定赛道共用触控驾驶流程,游戏进度由实际输入推进。
2026-10-05 验证结果:247 项单元测试、31 项浏览器回归、全项目类型检查、生产构建和发布产物检查通过。首屏 JavaScript gzip 为 269.4 KiB / 270 KiB,CSS 为 13.9 KiB / 16 KiB;随机生成器独立分包。
种子 12345 的三主题持续测试实际运行 101.9 秒,完成 21 轮转向与踹击及 10 次连续重开,浏览器错误为 0。抽样最多 356 次绘制、65,106 个三角形;同一开场的几何体数量跨度为 31、纹理跨度为 3。生产版在 Fast 3G 和 4 倍 CPU 降速下首次可玩为 5671 ms,低于 15000 ms 预算。
复现检查:
pnpm typecheck
pnpm test
pnpm build
pnpm verify:performance
pnpm verify:release
pnpm test:e2e
STABILITY_TRACK=circuit STABILITY_SEED=12345 pnpm test:stability
pnpm test:performance手机结果来自 Chromium 设备模拟;真机 Safari、发热和长时间手感仍需实际设备试玩。