逐帧
FRAME BY FRAME / DEVLOG

游戏开发
逐帧笔记。

记录渲染、交互与工具链里的具体问题。每篇从一个可复现的小实验开始。

浏览文章
网格路径预览7 × 7

开发笔记

渲染 · 原型 · 工具
01 / 渲染用帧时间定位掉帧从一次尖峰开始,分辨 CPU 和 GPU 的开销。

先在目标设备录制固定场景,让相机按同一路线运行。60 FPS 的单帧预算约为 16.7 毫秒。平均帧率可能掩盖短暂卡顿,因此同时看帧时间曲线和第 99 百分位。

把尖峰与资源加载、渲染提交和内存分配事件对齐。降低渲染分辨率再采一次,如果 GPU 时间明显下降,继续检查过绘制和后处理。如果尖峰几乎不变,就优先检查主线程上的同步 I/O 或垃圾回收。

02 / 原型让网格寻路问题能重现一个把搜索、路径和移动分开检查的调试视图。

先固定地图、起点、终点和移动规则。对四方向等成本的网格,A* 可以使用曼哈顿距离。用不同颜色标记候选格、已访问格和最终路径,并加一个逐步执行键。

遇到角色卡在拐角时,先暂停移动逻辑,只画寻路结果。如果路径本身正确,再检查角色碰撞体和转向插值。保存当时的地图与端点,就能在每次改动后重放同一个问题。

03 / 工具用种子重放一次关卡生成把随机生成失败变成可以交给别人复现的问题。

为生成器单独维护一个随机数序列,避免粒子或音效改变它的状态。记录 seed、生成器版本和输入参数,再保存生成结果的摘要。

从最小约束开始验证,例如出生点与出口连通、关键物品在可达区域内。批量跑种子时遇到失败就保留输入,下次改算法后先用这些失败案例回归测试。

关于逐帧

一本面向独立游戏开发的技术笔记,收集可以在小场景里验证的做法。