下载 App
《刀光剑影》开发者日志第四期:剑气对标参考、特效拉满
本期进展
1. 剑气形状定为固定月牙,不再跟玩家手绘走
上一期的刀光形状 = 玩家画什么就是什么。实际试下来这个设计有问题:玩家随手画一笔,出来的形状很难看,而且剑气的"帅"完全依赖玩家的手速和手感。
改成固定月牙形状:玩家画什么只决定"出不出招",形状永远是同一道月牙。程序化生成 32 个点:x = t - 0.5、y = -0.11 + 0.22 * (2t-1)²,两端翘起、中间下沉,就是一道干净的弯月。
2. 刀光整整看不见了——根因不是 Bloom
这是本期最大的坑。刀光代码在跑、Fire() 返回 true、几何体顶点也在生成,但画面上什么都没有。排查过程:
| 怀疑对象 | 实测结果 |
|---|---|
| Bloom 参数(UE 模式 texture3DLod 编译失败) | 换成 LEGACY、甚至删掉所有 bloom 设置 → 仍然 54 个错误 |
| 场景元素冲突 | 裸场景 + bloom = 0 错误;完整场景 = 0 错误 |
| 屏幕热扭曲 | 移除 hint_screen_texture 那块 → 刀光立刻出现 |
真凶是 shader 里的屏幕热扭曲:uniform sampler2D screen_tex : hint_screen_texture 在这个渲染后端会导致整个材质 link 失败,报 fragment shader input 'vNormal' has no matching output in the previous stage,于是刀光整块渲染不出来。
去掉扭曲后刀光恢复。扭曲属于锦上添花,为了它牺牲整个刀光不值得,所以这一版直接砍掉。
3. 月牙被"压平"成了一条横线
刀光出来了,但形状是"水平放射扇",完全不是月牙。原因是 Settings.Blade.tilt = 80°——刀光面几乎水平贴地,而游戏相机是俯视 20°,看下去就只剩一条横线。
参考《晶核》的剑气是正对镜头的月牙,所以刀光面法线要抬到接近视线方向。扫描了 20° / 35° / 50° 三档,35° 时月牙完整张开、正对镜头。
[图片:暂不支持黏贴,请手动导入]
上图:左 = tilt 80°(被压成一条横线,就是玩家说的"向下挥");右 = tilt 35°(月牙完整张开、正对镜头)。
4. 从"羽毛扇"改成"刀带"
月牙形状对了,但刃身是 36 根细直丝排在一起,像一把羽毛扇,读不出"刀"的实体感。两处调整:
- 加厚:刃半宽 0.26m → 0.42m。11 米宽的月牙上,0.26m 只占 5%,看着就是细线
- 少而粗、明显弯曲:光丝 36 根 → 22 根,粗细 1.5 → 2.4,弯曲量 curve 0.30 → 0.62
[图片:暂不支持黏贴,请手动导入]
上图:加厚后的月牙刀光,白热亮芯 + 青色外发光晕 + 拖尾光丝。
5. 飞行速度砍到 1/2.5
原来 60 m/s,0.3 秒就飞出画外,像飞刀一闪而过。竞技场半径 34m、敌人距角色约 19m,刀波得在 0.6~0.8 秒飞到敌人才有命中感。降到 24 m/s 后,射程约 22~31m,正好扫过敌阵再淡出。
6. 粒子层:飞散的光点
新增 SparkMote 粒子系统(120 个粒子池)。刀光飞行的前 40% 时间里持续抛撒光点,在身后留下飞散的光尘。和拖尾一样用顶点色传生命周期——池里所有粒子共用一个材质,只有顶点色能逐粒子传值。
7. 后处理:Bloom + 运动模糊
- 运动模糊:zone.motionBlurEnabled / motionBlurAmount / motionBlurMaxDistortion。这个我上一期判断错了,说"引擎不支持"——其实 Zone 上有完整的运动模糊属性,已经配上
- Bloom:LEGACY 模式,threshold 0.85、weight 0.80
[图片:暂不支持黏贴,请手动导入]
上图:月牙刀光飞行的三个时刻,拖尾随飞行流动、粒子光点在身后飘散。
问题与风险
软件渲染后端不跑 Bloom。
本地验证用的 -graphicssurfaceless 后端上,Bloom pass 的 shader link 失败(同样是 vNormal 报错),所以本地截图永远看不到 Bloom 光晕。这意味着:
- 不能靠"本地截图有没有光晕"来判断 Bloom 参数调得对不对
- 刀光的"发光感"不能只依赖 Bloom,必须在 shader 里直接画出来
解法是在 shader 里加一层自发光晕(halo_gain):沿刃身横向画一圈柔光,不依赖 Bloom pass。真机上 Bloom 再叠一层,会更强。这是个已知的双轨方案——本地看到的是 shader 兜底效果,真机是兜底 + Bloom。
屏幕扭曲暂时砍掉。 热扭曲(折射背景)在 GPU 上是加分项,但这个后端上它会让整个刀光消失。等确认目标机型的渲染路径支持 hint_screen_texture 后再考虑加回。
运动模糊的强度还没在真机验证。 motionBlurAmount = 0.45 是按经验给的,本地看不到效果(同样不跑这个 pass),需要真机确认是否过强/过弱。
下期计划
- 真机验证 Bloom 与运动模糊的实际强度,回调参数
- 评估 hint_screen_texture 在目标机型上是否可用,决定屏幕扭曲是否加回
- 敌人 AI 与战斗节奏调整(这个从上期拖到现在,仍是优先级最高项)




![《刀光剑影》开发者日志
第一期:让刀光"是画出来的",而不是贴上去的
本期进展
1. 核心玩法跑通了
玩家在屏幕上画一笔,这一笔的形状直接变成一道飞出去的刀光。画横线出横劈,画弧线出月牙,画爱心就出爱心刀光。笔画越长刀波越大,画得越快伤害越高。
技术上走的是「屏幕笔画 → 归一化形状 → 程序化几何体」这条路:把玩家的采样点降采样、居中、按最大跨度归一化到 [-0.5, 0.5],再沿着轨迹生成带截图](https://img2-tc.tapimg.com/moment/etag/FvfPjVihDzWqTvVHoCG78xT5dKzo_20261009184001.png/_tap_ugc_m.jpg)







