6.3 KiB
6.3 KiB
| status | created | work |
|---|---|---|
| proposed | 2026-09-12 | ../work/epic-fps-gunfeel-training.md |
FPS 枪感训练场原型
起点与目标
长期愿景是 Unity Windows 战术 FPS。本 Epic 交付单人灰盒训练场,验证移动、停稳、短点射及动态靶训练循环。
范围与非目标
一把自动步枪、灰盒场景、静态靶、横向往返与随机换向动态靶、命中反馈、统计及 Windows x64 可执行构建。 不包含固定弹道记忆/压枪系统、联网、英雄技能、经济、攻防模式、成品美术、多武器与换弹;原型无限弹药。
共享语言与概念边界
- 短点射是玩家在全自动步枪上手动按下再松开,每组 1–3 发,不是自动三连发模式。
- 后坐力是镜头上抬;散布是弹道相对当前瞄准方向的随机角度偏差。持续射击增加二者,停火恢复精度,不要求学习固定弹道。
- 停稳指松开移动输入后平面速度低于 0.1 m/s。
- 有效命中指一次射线首次击中靶体,一枪最多一次;先击中遮挡物时不计靶体命中。
- 场景示例:移动时准星扩张,松开 WASD 停稳后恢复移动精度惩罚;左键按住连续射击增加散布,松开后恢复,命中靶体才反馈并计数。
关键决策
- DEC-1:沿用用户确定的单人训练场、短点射、快速停稳和两种动态靶方向。
- DEC-2:纠正旧稿误记,以短点射控制精度取代固定后坐力模式。
- DEC-3:本轮提议的可调初始验收基线:移动 5 m/s,停稳不超过 100 ms,射速 600 RPM,停火 250 ms 后恢复基础散布;静止半角 0.15°,移动至少 1.5°,连射 10 发后至少 2°。owner 批准本修订后,这些值即为本 Epic 冻结的默认验收阈值;允许运行时调参,但测试始终使用冻结默认值。更改通过阈值须走契约变更;后续 Epic 可重新平衡。
- DEC-4:拟用 Unity 6 LTS、内置渲染管线和 Input System;ITEM-1 固定实际可用的 Editor 精确版本及包版本。
验收标准
- WASD 移动、鼠标瞄准、左键按住连射/松开停火;停稳符合 100 ms 阈值,移动准星扩张。
- 散布测试不包含镜头后坐力:使用固定朝向的虚拟枪口和正前方 20 m 垂直平面,RMS = sqrt(mean(x²+y²)),单位 m。种子 42,每个对照重置同一弹道随机流和精度状态。基础对照各采 1000 个独立首发,每发重置射击热度;移动组预先保持 5 m/s 一秒,静止组速度为零;移动 RMS 至少为静止的 5 倍。点射/扫射对照均静止、共 300 发:点射每组三发,组内间隔 100 ms,上一组末发后停火 250 ms 再发下一组;扫射连续每 100 ms 一发。除开始外不人工重置精度,仅按真实停火逻辑恢复;点射 RMS 不超过扫射的 60%。镜头后坐力另做实际输入体验验证。另直接断言散布模型的锥体半角:静止首发 0.15°(误差不超过 0.001°)、移动首发至少 1.5°、连续第 10 发至少 2°;以 r=20*tan(半角) 换算采样支持域半径,逐发验证采样不越出模型锥体,避免用随机样本最大值推断下限。
- 命中显示标记并使靶体闪烁;未命中不触发。统计发射数、命中数、命中率;零发显示 0%,重置清零。
- 往返靶左右各 3 m 范围、默认 2 m/s,到边界反向。随机模式每 0.5–1.5 s 随机选方向,边界强制反向,使用独立于弹道的目标随机流、均匀时间分布和等概率左右选择,初始向右;边界反向不重置既定随机倒计时,越界位移反射回合法区间。R 重置到中心并复位随机种子。往返断言:默认参数 1 s 时 x=2 m、2 s 时 x=2 m;随机模式同种子同时间步长重置后轨迹一致,固定步长模拟 10 分钟不越界。具体 RNG 算法在实现中固定并测试,不要求跨算法轨迹一致。
子项契约
- ITEM-1(cs-feat):工程、灰盒场景和构建入口;无依赖。固定 Editor/包版本及 Windows x64 配置;干净检出导入编译无错误,Play 进入含地面、光照、摄像机的场景;构建脚本输出 Builds/Windows,日志及测试证据输出 Artifacts,生成物不入库。Editor/激活缺失属于阻塞,不能以静态检查代替运行。
- ITEM-2(cs-feat):移动、视角、精度状态与准星;依赖 ITEM-1。WASD、可调鼠标灵敏度、俯仰限制、光标锁定;Esc 暂停释放光标、点击继续;暂停禁移动/射击。验证停稳阈值、地面墙体不穿透;速度驱动精度状态,真实射击验证归 ITEM-3。
- ITEM-3(cs-feat):步枪、最小静态靶与反馈;依赖 ITEM-2。实现连射、精度恢复、镜头后坐力和上述散布比较。唯一射击结果携带序号、命中对象/点、有效标记和时间,ITEM-3 只发布结果并负责即时反馈,绝不写统计字段;验证射线遮挡、暂停禁射、不同帧率射速与命中反馈。
- ITEM-4(cs-feat):动态靶、会话及统计;依赖 ITEM-3。模式切换、速度滑条 0.5–4 m/s(步进 0.5,默认 2)、固定种子;在 0.5、2、4 m/s 下验证边界及换向,R 恢复默认 2 m/s 并重置目标;R 重置统计、目标和武器精度;暂停冻结目标及会话;ITEM-4 是统计唯一写入者,每个射击序号仅消费一次;R 清空计数及去重状态,射击序号在进程内不复用;暂停不发布或消费射击结果。HUD 展示上述统计、退出按钮。验证两种动态模式边界、切换、重置和计数。
最终交付索引
实施后记录项目入口、构建脚本、运行说明、测试证据和 Windows 产物路径。
整体验收
四项完成后从干净检出用固定 Editor 构建 Windows x64 至 Builds/Windows。真机启动可执行文件进入训练场,验证移动、瞄准、停稳、点射/扫射、静态命中、两种动态模式、统计、重置、暂停/继续和退出,无阻断错误。证据存 Artifacts 并由游标引用。独立最终验收审查后由用户体验并最终接受枪感。
遗留风险
- 常用目录、PATH、卸载注册表尚未发现 Unity;Editor、构建组件与许可证需要核实解决,缺失时不能宣称运行通过。
- 本轮数值是待确认的初始参数;量化测试不能取代用户最终主观枪感验收。
- 联网、服务器权威及延迟补偿属于后续 Epic,不预建框架。