我正在开发一个多人游戏,整个地图、每个感兴趣的点和所有的植被在每次游戏启动时都会被完全随机化地生成。
优化一直是我的关注点,因为我担心这可能会对性能有所要求。
这是一个平衡的行为,因为地图相当大,但我从未想过阻碍视觉的标志。
我决定在启动屏幕后面(当前启动屏幕大约需要8秒)进行大部分性能要求的操作。
当前统计(最高设置):
最高FPS:\~310
低FPS(繁忙场景):\~220
Steam Deck:持续60+
目前瓶颈实际上是CPU,而不是GPU。也许我以后还能优化更多,但我现在很满足。
这是在UE5中Lumen和Nanite关闭的情况下。
一些优化选择有所帮助:
• 世界被分成块生成,允许系统独立加载、卸载和管理。
• PCG内容在有用范围外被裁剪并分批处理。这很重要,因为当我对动态景观进行更改时,只需重新生成相应的PCG块。
• 植被仅作为轻量级HISM存在,直到玩家与之互动时才变成完整的角色。
• 大多数角色在不相关时停止计时。角色也只在可能成为相关时异步生成,而不是从一开始。
• AI在不相关时停止接收状态更新,仅在接收偶尔的转换更新。
• 网络角色大量使用Net Dormancy。例如,如果物品被扔在地上而没有得到物理更新,它就会进入休眠状态。下一次交互(物理或接收)时,它又会唤醒。
• 角色只有在玩家附近时才变得网络相关。
• 感兴趣的点被分成轮廓和内部部分。轮廓可以从远距离看到,因此地标可以在整个地图上看到,而内部逻辑、角色、效果和交互则在玩家靠近时才启用。
•(大多数)灯使用无阴影并具有距离限制。
• 生成过程发生在启动时,而不是在游戏期间。 我存储了顶点的位置,以便稍后再次生成并重塑动态网格而无需重新计算。
评论 (0)