开发者用Claude与Codex优化自制3D游戏,Steam Deck端帧率从20提升至60
纯用 AI 做出来的 3D 游戏太卡了,于是我让 AI 自己来优化。
我现在正在用 AI(Claude、Codex)开发一款以我的故乡五岛列岛为舞台的慢生活游戏《岛ぐらし》。上一期我介绍了如何纯靠 AI 制作 3D 游戏,这次来聊聊 FPS(游戏运行速度)的优化。
最初在 Steam Deck 上运行时只有约 20fps,卡得非常明显。之后我让 AI 反复排查原因并优化,现在已经能稳定在 60fps 左右运行。实际操作下来有很多有趣的发现,整理如下。
① 不要让 AI 靠猜来判断哪里卡
一开始我以为是“树太多了”“建筑和小物件做得太多了”。但实际排查后发现,问题和预想完全不一样。于是我让 AI 做了一套测量机制:
- 隐藏森林
- 隐藏居民
- 关闭阴影
- 在同一位置对比修改前后的表现
- 记录结果,再决定下一步排查什么
我让 AI 把这个流程重复了几十次,测量记录一共做了 46 次。关键在于,不要一上来就让 AI 直接优化,而是先让它定位问题根源。
② 居民的 3D 模型比想象中重得多
岛上有居民在四处走动。角色的 3D 模型是用一款叫 Tripo 的 AI 生成的,排查后发现,单个居民模型被拆成了 22~50 个部件。主角更是多达 127 个。
看起来只是普通角色,实际上每个部件都要单独渲染一遍。于是我让 AI 把部件合并起来。结果是,行走时能维持 60fps 的帧占比从 4~20% 提升到了 76~81%。
我一直以为 3D 游戏的关键是多边形数量,但这次的情况是,“分了多少次渲染”远比多边形数量重要。这一点让我收获很大。
③ 画面里看不到的东西也会拖慢性能
这是这次最让我惊讶的一点。当你站在港口时,远处山丘的背后有一片稻田。山丘挡住了视线,一株稻子都看不到。但就是这些稻子,让游戏变卡了。
大约 3300 株,120 万个多边形。明明看不见,却占用了约 2.8ms 的 GPU 处理时间。于是我把远处的稻子换成了简单的面片模型,还调整了远处不需要投射阴影的树木等。
这一轮优化后,能达到 60fps 的帧占比从 83% 提升到了 90%。做游戏真的连看不见的东西都得操心。
④ 远处的森林,不需要是真的 3D
岛上有很多山和森林,这部分也非常卡。于是我根据距离调整了树木的表现方式:
- 近处的树用普通 3D 模型
- 稍远的树用简化模型
- 80 米以外的树用贴了图片的面片
远处的树用的是 Blender 从 8 个方向、3 种高度拍摄的图片。这样从远处看依然像树,处理也更轻量。一开始我只做了侧面的图片,从上方看就会变得很奇怪。这类问题也是一边看着实际游戏画面,一边让 AI 反复修正的。
⑤ 《莎木》的制作方法非常有参考价值
我参考的游戏之一是 Dreamcast 上的《莎木》。因为是老游戏,没法像现在这样使用大量多边形,但街景依然非常真实。建筑的形状本身很简单,窗框、污渍、细微凹凸都是用图片(纹理)表现的。
我用同样的方法重做了岛上的鱼店:
多边形数量:9,666 → 526
纹理:7 张 → 1 张
外观几乎一样
这家鱼店本身并不是卡顿的原因,所以 FPS 几乎没有变化。但用这种方法,我可以做出更多建筑。现在我也在用同样的方法重做其他建筑。
⑥ AI 做出来的游戏,也能让 AI 来优化
这次我觉得最有意思的就是这一点。AI 写的代码、做的 3D 模型,可以交给另一个 AI 去排查和优化。
实际上,居民绕开障碍物的逻辑,排查后发现也占用了 CPU 处理的大部分时间。于是我让 AI 去调查、重新审视处理逻辑,速度提升了约 2~2.5 倍。
此外,我还定下了今后开发新功能时的规则:
- 远处的居民不逐帧处理
- 没有变化的东西不重复计算
- 重的处理分散到多个帧
- 尽量复用相同的模型和纹理
- 游玩过程中不做多余的处理
把这些写进给 AI 的工作指令里,今后新增的功能从一开始就能做得更轻量。
⑦ 最终在 Steam Deck 上从 20fps → 接近 60fps
这是本次优化的结果:
- GPU 处理时间:约 50ms → 约 13ms
- 帧率:约 20fps → 接近 60fps
- 能达到 60fps 的帧占比:0% → 约 90%
顺带一提,我开发用的 Mac 上运行很流畅,所以一开始我完全没意识到会这么卡。果然还是得在实机上测试。
现在还没有完全稳定在 60fps,我正在继续优化,目标是让 95% 以上的帧都能达到 60fps。这次我体会到的是,比起让 AI 去做,更重要的是让 AI 去验证。
AI 能以惊人的速度做出功能和 3D 模型,但如果不加思考地一直往里加,游戏就会越来越卡。这次也是让 AI 去排查 AI 做出来的东西,再让 AI 去修复。我自己则是确认实际画面和测量结果,判断下一步该优化什么。
我曾经多次在游戏开发上受挫,现在却能做出这么像样的 3D 游戏,真的很有意思。而且,我也在这个过程中一点点积累了游戏开发的知识。
游戏还在开发中,如果能对今后想用 AI 做游戏的人有所参考,我会很开心。
#岛づくり
Steam 商店页已经公开了!