下载 App

《刀光剑影》开发者日志

10/121 浏览

角色蒙皮重构、画质链路,和一次发布环境的两连错

本期进展

1. 角色蒙皮:给"设备上一换角度就碎"做了一条兼容渲染路径
用户反馈的角色横片破碎,本地用独立观察相机做了固定姿势的前/后/侧/高俯角实拍,全部正常——问题复现不了,但截图是真的。排查收敛到一个高危点:内置 GPU 蒙皮的骨矩阵纹理存的是世界空间矩阵(角色在 470/326 米一带),一旦设备某个阶段把精度降到 FP16,光这个平移就会产生约 0.25 米的量化台阶,和"横向尖片"的形态吻合。
Lua 层没有可靠的"关闭内置蒙皮"开关(逐个 API 查过,不存在的就不编),所以自建了一条兼容路径:
  • 原 AnimatedModel 保留为骨架容器,viewMask = 0 只隐藏它的绘制,骨骼照常更新;
  • 把原 25,194 顶点的最高精度网格复制成独立 StaticModel:顶点色存骨索引,TANGENT 存权重;
  • 每帧把 41 根骨骼的模型局部矩阵(不含世界平移的小数值)编码进一张 128×2 的 RGBA8 小纹理——每帧只上传 246 个像素,shader 内做 16-bit 解码,分项运算避开 FP16 大中间值;
  • 骨架、权重、原动作(HeroAnim)、剑挂点(HeroSword)逐字节未动(哈希比对确认)。
固定姿势实拍:正面、侧面、高俯角、跑动、攻击出刀,轮廓全部完整。
[图片:暂不支持黏贴,请手动导入]
2. 抗锯齿:FXAA3 原位单遍
先按内置 EngineRes/PostProcess/FXAA3.xml 整条 append 到管线尾部——真实 GLES 下链接失败(vScreenPos/vTexCoord varying 不匹配),此路不通。最终做法:clone 当前管线,只把原 FXAA2 quad 的像素程序换成 FXAA3(preset 12),VS、位置、后效顺序全部保持。一帧验证通过,没有叠两遍 AA。
3. 角色贴图的真相:之前"拉满"其实从未生效
翻构建日志发现:角色 4K 贴图的全部压缩任务都失败在 Texture too large (4096x4096), max 2048——发布的一直是原始 JPG/PNG,mip 链从第一天就不存在,远看衣纹会闪也与此有关。本期离线补了正规管线:
版本格式内容
桌面BC7 全 mip颜色 4096²×13 层 + 法线 2048²×12 层,约 26.67 MiB
移动/WebASTC 4×4 全 mip同规格,原生预算一致
按 GetPlatform() 路由,并做了三级回退(ASTC → BC7 → 原始未压缩图)——任何设备解不了压缩格式,角色最多变糊、不会丢贴图。
4. 地形流式:分帧建行 + 覆盖率保持的叶片 mip
近景块单帧生成 1089 个顶点是跨块卡顿的主要来源之一。改成唯一后台任务:每帧最多 8 行、行边界按 2ms CPU 预算截断(发布沙箱没有 os.clock,加了 hasClock 守卫自动退化为固定行数);裙边颜色从每帧 768 次重复计算收敛到 128 个唯一边界点的缓存。脚下缺块仍同步补齐,环湖路线 45 次射线检查最大误差 0.00003m,碰撞无回归。
叶片/花草纹理离线重建为覆盖率保持 mip(逐级 alpha 覆盖率锁定源图比例),远景树冠不再糊成实心色块。
5. 发布环境报错两连修(TapTap 错误报告)
  • attempt to call a nil value (field 'getenv')——致命,启动即崩。发布沙箱的 Lua 移除了 os 库,而上期把 os.getenv("WORLD_TEST_ASTC") 测试钩子写进了 Hero3D 的正式路径。本地 CLI 有完整 os,所以一直测不出来。修复:ASTC 开关改经 Settings.Hero.forceASTC 字段传递,环境变量只在 WorldValidation.lua(发布不加载)里读取;同步清理了 CompatibleSkin 的计时 print。
  • Could not find resource <official-res>/.../Skybox.ktx——引擎默认天空盒 Textures/Skybox.xml(官方资源)引用了一张 14MB 官方贴图,发布 DWP 没及时到位。尝试过自建材质文件 + 自制 cubemap DDS 覆盖磁盘路径:材质格式解析没问题,但引擎把这条路径按 TextureCube 加载时会触发另一条内部 Could not find resource Textures 查询,死胡同,放弃覆盖方案。最终改 .project/resources.json:新增 startup 组并把该 UUID 列入 preload_groups 启动预下载。已进构建产物,待发布后观察。

问题与风险

① 用户设备角色破碎的根因仍未锁定。 兼容路径是"绕开嫌疑点",不是"证明嫌疑点"。如果设备上仍然碎,下一个排查方向是设备侧实际 shader 精度与字节解码路径,需要用户设备环境的信息。
② 流畅度验收仍未通过。 软件渲染下流式测试仍有 143~317ms 尖峰;蒙皮更新 CPU+上传平均约 2ms/帧是本地数字,llvmpipe 不能外推手机。"确保流畅"目前是目标,不是结论。
③ 本地 -validate 总结果仍会被天空资源缺失标 FAIL。 本地 CLI 不带官方资源包(发布环境该文件存在),游戏自身用程序化渐变天空不受影响——但别把这条 FAIL 误读成脚本崩溃。

下期计划

  • 重新发布一次,确认两条发布环境报错消失
  • 用户设备反馈确认后,决定兼容蒙皮去留(内置路径成本更低)
  • 流式尖峰继续压:顶点生成 / GPU 上传 / 裙边提交 / TriangleMesh 分阶段毫秒计时
  • 真机验证 ASTC/BC7 原生支持与贴图内存
  • 敌人 AI 与战斗节奏调整(继续欠着的最高优先级)
已通关,放心玩截图
已通关,放心玩
官方
1 赞
《刀光剑影》开发者日志第四期:剑气对标参考、特效拉满截图
《刀光剑影》开发者日志第四期:剑气对标参考、特效拉满
本期进展 1. 剑气形状定为固定月牙,不再跟玩家手绘走 上一期的刀光形状 = 玩家画什么就是什么。实际试下来这个设计有问题:玩家随手画一笔,出来的形状很难看,而且剑气的"帅"完全依赖玩家的手速和手感。 改成固定月牙形状:玩家画什么只决定"出不出招",形状永远是同一道月牙。程序化生成 32 个点:x = t - 0.5、y = -0.11 + 0.22 * (2t-1)²,两端翘起、中间下沉,就是一
官方
1 赞
《刀光剑影》开发者日志
第一期:让刀光"是画出来的",而不是贴上去的
本期进展
1. 核心玩法跑通了
玩家在屏幕上画一笔,这一笔的形状直接变成一道飞出去的刀光。画横线出横劈,画弧线出月牙,画爱心就出爱心刀光。笔画越长刀波越大,画得越快伤害越高。
技术上走的是「屏幕笔画 → 归一化形状 → 程序化几何体」这条路:把玩家的采样点降采样、居中、按最大跨度归一化到 [-0.5, 0.5],再沿着轨迹生成带截图
《刀光剑影》开发者日志 第一期:让刀光"是画出来的",而不是贴上去的 本期进展 1. 核心玩法跑通了 玩家在屏幕上画一笔,这一笔的形状直接变成一道飞出去的刀光。画横线出横劈,画弧线出月牙,画爱心就出爱心刀光。笔画越长刀波越大,画得越快伤害越高。 技术上走的是「屏幕笔画 → 归一化形状 → 程序化几何体」这条路:把玩家的采样点降采样、居中、按最大跨度归一化到 [-0.5, 0.5],再沿着轨迹生成带
官方
1 赞
《变成黑洞》开发日志
日期:2026-10-20 代码规模:12424 行 / 16 个文件 一、本期主线:从「700 体大混沌」到「渐进解锁的稀疏宇宙」 上一期结束时,场上铺着 700 个天体——引力对、碰撞对、守恒也对, 但玩起来画面挤成一团,性能也吃紧。这一期把整个世界结构重排了一遍: 玩家看到什么、什么时候看到、天体从哪里来,全部重写。 1. 渐进解锁:场上只出现「玩家阶段 +1」以内的天体 开局铺满十阶各两个
官方
2 赞
《变成黑洞》开发日志
日期:2026-10-22 代码规模:13821 行 / 20 个文件(RenderEvolutionGiant.lua 920 → 954) 一、本期主线:把「能跑通」变成「说得清」 上一期把重复实现收敛掉了。这一期暴露的是另一类问题: 代码能跑,但跑出来的东西经不起一句追问。 每阶都是 20 口 —— 「碎石和红巨星凭什么一个节奏?」 黑洞吃 2000 口只长 4% —— 「那通关是怎么通的?
官方
《变成黑洞》经费已至,敬请期待
日期:2026-10-17 ~ 2026-10-18 本期构建序号:19 → 56(共 38 次构建) 代码规模:8469 行 / 14 个文件 一、本期进展 这一期的主线只有一件事:把「视野」这件事从头重做一遍。 围绕它牵出了一连串问题——阶段错乱、渲染预算、特效不跟随、性能卡顿。 下面按「主线 → 连带修复 → 工程债」的顺序说。 1. 视野重构:从「按玩家体型」到「固定广阔」 起点:用户反馈
官方
1 赞
《变成黑洞》开发日志
日期:2026-10-21 代码规模:13086 行 / 19 个文件 一、本期主线:把「同一个概念的多套实现」逐个收敛 这一期没有新增大玩法,全部工作量都花在消除重复上。 每修一个 bug,根源几乎都是同一句: 同一个概念在多处各写了一遍,谁最后执行谁生效。 概念 曾经有几套 现在 碎石半径 4 套(Collision.Sync / CosmicPhysics 碎片 / CosmicPhysic
官方
2 回复
《变成黑洞》开发日志
为玩家推翻重来设计新玩法,导致游戏全是bug, ai都不听话的那种。以后我慢慢修吧。当前版本可能是最后的版本了。已经将tap tap创造已经开发到极致了。 一、本期主线:一次撞击被当成了无数次 这一期所有问题都指向同一件事: Impact 被反复调用。 Contact 每帧处理一次接触,但接触记录会被距离判定清掉重建。撞击后两块球贴合在一起(位置重叠、速度相同),PruneContacts 每隔几
官方
2 赞
《变成黑洞》开发日志
日期:2026-10-23 代码规模:14022 行 / 20 个文件 一、本期主线:三个「不应该是这样」的物理 这一期的问题全部来自同一个地方:物理规则是对的,但套错了对象。 两块陨石撞一下,变成碎石被吃掉 —— 「同归于尽」变成了「一方吃掉另一方」 两块等大的球撞上,双双停在原地 —— 像粘住,不像天体 玩家撞成重伤,进度条纹丝不动 —— 掉血和进度是两套独立计量 三次排查都经历同一个过程:先
官方
2 赞
《变成黑洞》开发日志
日期:2026-10-19 本期构建序号:57 → 101(共 45 次构建) 代码规模:9068 行 / 14 个文件 一、本期进展 这一期的主线是把「引力」从数值表里真正做出来。 上一期把视野固定下来之后,引力第一次变成了「看得见、摸得着」的东西—— 也就第一次暴露出它在物理上一直是错的。 1. 引力的两处根本错误 用户提了两个问题,都指向同一个地方: ①「碎石都不受引力影响,那你其他引力正不
官方
1 赞