下载 App

《刀光剑影》开发者日志

10/223 浏览
手机端布局返工、输入方案收敛,和一次 7420 条报错的排查 本期进展
  1. 抽牌三选一在手机上溢出屏幕
用户反馈:横屏手机上三张牌显示不全,必须上下翻动才能看全。
排查发现根因是布局判定写反了:
lua
复制 -- 修改前:按可用【宽度】判定窄屏 return graphics:GetWidth() / scale - insets.left - insets.right - 80 < 810 横屏手机的逻辑宽度只有约 640(720p + DPR + 密度适配),永远小于 810 → 三张卡被判定为"窄屏" → 竖排 → 总高 3×258=774,而屏高只有约 360。界面直接冲出屏幕。
改成按可用高度判定:只有竖排确实放得下时才竖排。
实测数据(640×360 逻辑分辨率):
修改前 修改后 内容总高 724.8 348.8 可用高 344 344 结果 竖排、溢出 三列并排、完整可见 过程中我自己写错又修掉一次:第一版 ResolveCardMetrics 里 clamp 写反了 —— usable=300 超过 258 就被压回 258,等于永远不缩,白改一轮。是打印实测高度才发现的。
  1. 卡片字体在紧凑模式下被压得太小
上一轮为了"别溢出"把字号一路压到 15/10/9,用户反馈看不清。这轮按可读性重新定:
元素 之前 现在 标题 15 18 说明 10 12 标签 9 10 「选择此奖励」按钮高 30 44 按钮那条是取舍问题:之前只顾省高度,没考虑点击手感。
  1. 输入方案:摇杆与 WASD 对齐
用户明确"电脑端 WASD 是正确的",于是把摇杆对齐过去:
操作 摇杆 键盘 前/后 纵轴上下推 W / S 转向 横轴左右推 A / D 摇杆横轴从"横移"改为"转向",不再有左右平移。另外摇杆下半部分只后退、不转向(后退时人该直线退开)。
  1. 移除触摸的纵向转视角
用户反馈上下滑会误触镜头俯仰、干扰走位。
这里我本地验证时没能复现 —— 拖动增量正确产生(yaw 23.9 / pitch 16.4)、相机也确实响应俯仰角(-12° 与 20° 两帧截图平均差异 44.8 像素)。链路两端都是好的。最后按用户的实际反馈(“影响操作”)把纵向拖动整个移除,俯仰固定为配置值。
  1. 攻击按钮:去掉外圈,判定与视觉 1:1
原来有三层尺寸各不相同:
层 半径 判定区 ar × 1.5 外圈光晕 ar × 1.0 红实心圆 ar × 0.74 结果"看着小、实际大"—— 手指按在红圆外老远也能触发,玩家无法从画面判断真实可点范围。收成一层:红圆多大,能点的范围就多大。
  1. 主角头顶血条
新增,全部用 NanoVG 自绘(UI.ProgressBar 只能画平铺纯色方块):
六边形轮廓(左右切角,呼应界面风格) 横向渐变 + 顶部高光 受击闪白 + 残影亮边(掉血后残留金色亮边慢慢收回) 低血量转红 7. 包体瘦身约 87MB
项 体积 处理 封面/图标/宣传图旧版 46MB 归档 2 个未引用模型目录 6.5MB 归档 宣传片 7.9MB 归档 主角贴图冗余副本 26.6MB 归档 全部移到 _archive/,逐文件 MD5 校验后才删源文件。
过程中拦住一次误删:我一度把 assets/image/devlog/(92MB)也归档了,核对时发现它被本文档引用了 28 次 —— 删掉会让所有配图失效。已回滚。这说明**“零脚本引用"不等于"可以删”**。
问题与修复 ① 7420 条报错:4096 贴图超上限
用户报错:
bgfx::createTexture2D ret => failed. ×3710 Could not load texture from image resource ×3710 根因在构建日志里写得很清楚:
[WARN] 压缩失败 [HeroAlbedo4K@android]: Texture too large (4096x4096), max 2048 [WARN] 压缩失败 [HeroAlbedo4K@ios]: Texture too large (4096x4096), max 2048 [WARN] 压缩失败 [HeroAlbedo4K@windows]: Texture too large (4096x4096), max 2048 两个主角颜色贴图是 4096×4096,超出引擎 2048 上限,压缩必然失败 → 运行时加载不到 → createTexture2D 每帧重试,刷出数千条 ERROR。
其中一个叫 HeroAlbedoMobile.ktx(名为 Mobile)实际也是 4096 —— 历史遗留的坑。
修复:改用 model 目录里的源 JPG(2048×2048,压缩配置与 KTX 完全相同),两张 4096 KTX 归档。
验证结果:
[Hero3D] 实际贴图 颜色=2048x2048 法线=2048x2048 createTexture2D 错误数: 0 构建日志里"压缩失败"从 6 次归零。
② 一次判断错误
排查初期我看到错误时间戳换算成"本地 12:49",判定"早于我删素材,与我的改动无关"。实际是 UTC 与本地时差没算对 —— 真实发生时间是本地 20:49,晚于我的操作。虽然最终确认根因是贴图超限(与删除无关),但这个"与我无关"的结论当时下得太早。
③ 工具准则规则未落地
用户要求"改数据前先弹对话框确认"。我连续几轮提到要写进项目文件,但全仓没有叫"工具准则"的文件,规则至今只存在于对话里,下个会话就失效。已向用户确认落地位置,待办。
下期计划 实机试玩手感参数:摇杆/攻击按钮/拖动转视角的灵敏度都是初值,本地无触摸设备无法验证 工具准则规则落地到项目文件 跨局解锁(死了留点什么)——"上瘾"的另一半仍未做 dist/ 里 12 个历史版本目录(约 1.3GB),是否清理待定