技术笔记 · 何凯旋
2026 年起
微信小游戏 / 帧同步 / 性能
--:--
笔记是暗室里 被点亮的一行字
往下看 · 共有 4 篇我把踩过的坑写成能复用的步骤:先量,再改,最后用真机验证。写下来是为了下一次不再重来。
四篇笔记
雾中的红松林 · 加拿大
-
微信小游戏主包限制 4MB 之后,能砍的只有两样:图和逻辑。先说结论——首包只放首屏必需的三类资源,其余全部走分包预下载。
三类必需:首屏背景一张、角色图集一份、UI 图集一份。纹理统一走 ASTC 或 ETC2,尺寸按目标设备最长边下调,不要 2048 全量铺开。分包在 Loading 场景里并发预下载,下完的包在内存里只留索引。
量的方式很直接:构建产物按目录排序,看每一项的字节数;真机上再跑一遍冷启动,记录从点击到可交互的毫秒数。两个数对不上,就是预加载顺序错了。
-
打开
strict之外,我额外加了两个开关:noUncheckedIndexedAccess和exactOptionalPropertyTypes。它们会逼你把数组越界和缺省字段当成必须处理的分支。定点数物理层受过一次益:
fps[i]在严格模式下变成可能为 undefined,逼着每个读写点写显式断言。运行时的空指针崩溃因此少了一整类。代价是要多写判空。我的做法是在边界处一次性收窄,逻辑层只接受已确认的值,别把断言散到每个函数里。
-
逻辑固定 30fps(步长 0.033 秒),渲染跑 60fps,中间靠插值把两次逻辑快照之间补平。不插值会看到明显的阶梯感,尤其在摆荡到最高点的时候。
插值只动画面,不动位置:渲染层拿上一帧和当前帧的快照做线性混合,角度、绳长、速度全部插,唯独锚点归属这种离散状态不插。
要注意时间基准。用固定步长累加而不是每帧 dt 累加,否则掉帧时会追帧、逻辑步数漂移,帧同步两端就开始各打各的。
-
流程是固定的:备案 → 解析 → 证书 → 反代 → 微信后台白名单。任何一步顺序反了都会多耗一周。
反代有个容易被忽略的点:宝塔自动生成的配置把
/.well-known/acme-challenge/也代理给了后端,证书申请直接 404。要先加一条优先匹配的静态 location。WebSocket 还要补三行升级头,否则握手停在 400。证书 90 天一轮,续签失败不会报警,掉证那天玩家只看到「网络异常」。
位置
北京
在做
微信小游戏
可聊
性能与帧同步
何凯旋,写代码的人,做一款四人同屏的武侠斩绳小游戏。白天调物理和网络,晚上把过程记成能照做的步骤。这个站点只有一个目的:让下一次的我不必重新踩一遍同样的坑。
笔记里出现的数值都来自本机实测或真机日志,不是估的;写错的地方会标注日期。转载注明出处即可。