过去一周左右,我一直在优化游戏的地图规模、玩家数量和载具处理能力,同时保持良好性能。大部分工作是通过Claude Code完成的。我首先将地图目标尺寸设为1500米×1500米,并提前实施了几项明显的优化措施,确保地图能够正常加载。此前最大的地图是400米×400米。

之后我进行了测试并寻找提升帧率的方法。即使在配备不错显卡的台式机上,帧率也频繁跌至60以下。最终我内置了一个性能分析器,能够记录不同模块每帧的耗时情况。

分析器帮了大忙。结果显示,每个网格被绘制了三次:发光层、卡通着色层和主渲染层,因此帧时间受制于绘制调用的CPU瓶颈。我将发光层处理移到主渲染之后,利用主渲染的距离信息来优化发光层;随后重写了卡通着色器的工作方式,使其只绘制一次,而非重新遍历每个网格。

目前,大型地图“Sarab”在我的台式机、手机和Chromebook上几乎都能稳定运行在60帧或更高。在Chromebook上需要将分辨率缩放调至50%才能维持>60fps,虽然画面有些模糊,但至少可玩。偶尔在加载新地图区块时会出现卡顿,还需要排查问题。

游戏采用MIT开源协议,欢迎查看代码。

仓库:https://github.com/greywatch-game/greywatch

游戏网址:https://greywatch-game.com

性能分析查看器:https://greywatch-game.com/profile_viewer.html

欢迎各位提供反馈意见。如何让游戏变得更好?感谢您耐心阅读至此。