GSmGpE6CwX2y9JjB25B8
We use cookies on this site to enhance your user experience

提高游戏性能

提高游戏性能

Oct 18 2019, 2:35 PM PST 5 min

在游戏中,延迟和/或较长时间的加载可能会中断游戏,并可能阻止玩家再次玩游戏。Roblox 一直致力于提高游戏性能,你也可以通过多种方法来提高性能。

分析工具

Roblox 提供各种内置工具来分析游戏性能,包括:

工具 描述
性能统计 性能统计控件,通过 Ctrl+F7Command ⌘+F7 切换,是监视内存、CPU、GPU 和网络状态的基本方法。如果在内存或其他图形中看到“峰值”,则应使用以下工具对其进行调查。
开发者控制台 当运行实时版本的游戏时,开发者控制台显示来自游戏中的脚本、分类内存使用、网络状态等诊断消息。有关详细信息,请参阅/articles/Developer Console|开发者控制台文章。
MicroProfiler MicroProfiler 是用于分析和调试客户端性能的高级工具。有关详细信息,请参阅 /articles/MicroProfiler|MicroProfiler

场景设置和设计

以下设置和设计技巧可以显著提高游戏的整体性能。

内容流

并非所有的 Roblox 玩家都有顶级机器或快速网络连接。Workspace 的一个属性 Workspace/StreamingEnabled|StreamingEnabled 可以在玩家在世界中移动时,通过将内容流式传输到客户端来提高性能。同时,远处内容流式输出减少了游戏所需的内存。

传送

非常大的世界可能受益于/articles/Teleporting Between Places|传送。例如,如果一个幻想世界有几个城镇、一座城堡、多个大型地牢和一片闹鬼的森林,你应该让它们成为单独的场景,并在它们之间的特定点传送玩家,比如地牢的入口/出口。

地形

Roblox 的/articles/Intro To Terrain|地形系统为每个单元提供最高效率和自动详细级别。使用地形时,请考虑以下技巧:

  • 混合不同材料以获得视觉变化 — 它们的性能成本相同(水除外)。
  • 如上所述,打开 Workspace/StreamingEnabled|StreamingEnabled

照明

一盏高亮度的灯比许多低亮度的灯便宜,而且使用非移动的非阴影投射的灯更为理想。另外,默认情况下,ShadowMap 照明技术会导致所有对象投射阴影,因此,如果游戏不需要明显的阴影,请考虑体素照明。

体素照明
ShadowMap 照明

复制

放置在特定存储容器中的模型会复制到玩家的本地客户端,即使它们不存在于 3D 世界中,也意味着即使玩家看不见它们,它们也会占用内存。需要放到游戏世界之前,将不经常使用的模型保存在 ServerStorage 中可能会有所帮助。

对象属性

详细级别

/articles/Mesh Parts|网格/articles/3D Modeling with Parts|实体建模的部件 的详细级别定义定义它在镜头附近显示的详细程度。如果某个场景具有大量的详细网格或实体建模的部件,你可以通过将每个实例的 enum/RenderFidelity|RenderFidelity 属性设置为 **Automatic(自动)**来提高性能。

与镜头的距离 渲染保真度
低于 250 格 最高
250-500 格 中等
500 多格 最低

锚固

锚固所有非移动对象,因为锚固的对象在渲染/物理方面更高效。不要只是依靠一个大对象的质量来保持它的位置。

碰撞

如果一个对象靠近移动的对象或玩家,但不需要与它们碰撞,例如“幽灵”墙,则将 BasePart/CanCollide|CanCollide 设置为 false。但是,不要花时间在永远不会与任何对象碰撞的远处对象上设置此属性,因为它不会提高性能。

透明度

尽量少使用部分对象 BasePart/Transparency|Transparency,因为半透明对象会抑制许多内部渲染优化。如果需要在多个 BasePart|BaseParts 上设置透明度,请尝试使用实体建模将它们合并(透明联合体比 10 个较小的透明零件组更为理想)。

材质/纹理

对于 BasePart|BaseParts,使用内置的 enum/Material|Materials 代替 Texture 对象,因为材质在复制和渲染方面更有效。但是,对于 MeshPart|MeshParts,通过其 MeshPart/TextureID|TextureID 应用的一种纹理,它的效果等同于设置其材质。也就是说,纹理比材质占用的内存更多,因此你应该监视/articles/Developer Console|开发人员控制台 的 **Memory(内存)**选项卡中的 GraphicsTexture 值。

碰撞保真度

实体建模对象和 MeshPart 对象都具有 enum/CollisionFidelity|CollisionFidelity 属性,该属性控制对象碰撞边界的“细节”。以下选项按从性能最高到性能最低的顺序排列。

选项 应用
Box(盒) 如果对象看起来像一个块,或者与它的碰撞可以通过跨越其边界的框来近似,则使用此选项。
Hull(凸包) 对于凸面对象(例如球和锥形交通路标)上的简单碰撞边界,则使用此选项。
Default(默认) 对于与对象的物理外观匹配的最精确的碰撞边界,则使用此选项。

阴影投射

如果启用了 ShadowMap 照明技术,默认情况下,所有对象都将投射阴影。如果特定对象不需要投射不同的阴影,请禁用其 CastShadow 属性。