该技能用于在 Three.js 动作游戏中构建战争迷雾,把它作为共享的感知系统加一层克制的表现层,适用正交或等距视角的可见性实现、调优、调试与验证。
架构上要求职责分离:由确定性 CPU 感知负责范围、障碍物相交和玩法可见性;把玩家的角度可见距离编码进一张固定尺寸查找纹理;用一个全屏着色器把该查找转成柔和的径向与墙体感知迷雾;玩法直接消费感知结果,绝不从迷雾像素反推战斗真相。实现或改动算法前需先读 mechanics.md。
编辑前先检查:定位权威玩家位置、相机、障碍物、场景生命周期、帧循环、瞄准、敌人感知与渲染层;确认玩法地面模型(角点反投影法假定局部水平面,有高程变化时需用权威表面或地形重建);查找现有场景雾、后处理、渲染器创建、复查模式、菜单、截图、转场与销毁路径;改动常量或归属前先读现有测试和近期提交;确认障碍物状态是否运行时变化;尽早检查工作区并保留无关改动。
实现按依赖顺序:1)定义感知真相,每个视线阻挡物有稳定足迹、垂直跨度与激活状态,3D 视线段与水平足迹和垂直跨度都相交,暴露点对点感知与确定性角度距离填充,玩家和敌人范围用显式值。2)构建可见性查找,一次性分配距离数组、字节像素和数据纹理,围绕玩家视点投射固定数量均布水平射线,把命中距离按玩家视野半径归一化并量化进单行红色通道纹理,使用线性过滤、水平重复包裹、无 mipmap 与受限的射线预算,仅在有意义移动后或短最大间隔刷新,帧循环内不分配。3)渲染单个柔和叠加层:一个裁剪空间平面加一个透明着色器材质,由四个相机角点相交重建片元地面位置,组合清晰内半径、柔和外径向衰减与从角度查找采样的羽化墙界,用 max 合成并限制最终不透明度,关闭深度测试、深度写入与色调映射,在世界之后渲染,不引入第二个渲染器、渲染目标、合成器或逐射线网格。4)集成玩法:模拟存在与表现可见性分离,通过层或仅表现机制隐藏未揭示敌人,将其排除出目标锁定、瞄准选择、最近目标搜索、HUD 计数与玩家命中资格,隐藏会泄露未见敌人的预警;敌人获取与攻击用自身范围加同一视线真相;感知失效立即清除锁定;同一模拟阶段内缓存感知。5)集成状态与生命周期:仅在活跃玩法中启用,菜单、背包、复查/截图、暂停或非游玩状态及关卡转场中禁用,且在早期渲染分支前禁用,大气场景雾与战争迷雾分开,拆除时销毁叠加层几何、材质与查找纹理,发布射线预算、启用状态、范围、可见敌人等紧凑遥测。
调优顺序:先验证障碍物几何与眼高,再验证玩家与敌人范围,然后依次设定完全清晰内半径、外径向衰减与最大不透明度、墙缘柔和度,加角度平滑直到辐条消失,降低障碍物暗度使其像遮挡而非黑射线,最后在视觉正确和测量性能后再调射线预算。不要用额外模糊掩盖坏障碍数据,也不要把整个场景调暗来补偿弱可见边界。
验证前读 validation.md,运行纯感知与不透明度测试、结构性渲染预算契约、瞄准/层/光照/状态集成测试、项目 lint 与 build,并在 Codex 浏览器中做真实桌面与移动端检查。复查模式有意禁用迷雾时用正常玩法做视觉验证,判断运动、相机移动、墙缘、门、接缝与菜单转场,而不只看静帧。需保持的品质:内区可读、最暗受控、墙体柔和无可见径向辐条、角度接缝不可见、动态门与视线同步、敌人行为公平,以及单一权威可见性模型与受限叠加层。其他实现细节暂未提供。