Roblox 优化对于在各设备上获得更流畅的游戏体验、更好的游戏稳定性和更高的用户留存率至关重要。优化的游戏更有可能获得积极的评分和评论,增加其可见性。可以使用多种技术来有效地优化您的游戏。
流媒体
在 Roblox 中,流媒体会根据需要动态加载和卸载 3D 内容,从而提升玩家体验。
Roblox Studio
- 通过减少部件数量,因为更少的部件意味着更好的性能。
- 优化纹理,以平衡视觉质量和性能,特别是针对低端设备。
- 优化照明,限制动态灯光并尽可能使用无阴影灯光,因为这些调整减少了计算负载并提升了整体游戏性能。
流媒体配置
Empty
Empty
Empty
Default | 引擎选择最佳选项,目前与 Legacy 相同。 |
Legacy | 模型在玩家加入时与其父对象一起加载,并且除非父对象卸载,否则不会卸载。 |
Improved | 模型仅在需要时加载,而不是在玩家加入时加载。非空间模型稍后加载,而空间模型在需要时加载,并且可以稍后卸载。 |
Empty
Empty
Empty
启用或禁用游戏内容的流媒体。
Empty
Empty
Empty
Default | 没有额外检查;玩家可能会遇到缺少的内容。 |
PauseReceive | 如果关键部分丢失,则暂停数据接收,以避免游戏问题。 |
Request | 当玩家进入某个区域时请求缺少的部分,减少遇到未加载内容的几率。 |
Empty
Empty
Empty
设置玩家周围的最小区域,其中内容以最高优先级进行流媒体。默认值为 64 钻石。增加此值会使用更多的内存和带宽。
Empty
Empty
Empty
定义从玩家处流媒体的最大距离。默认值为 1024 钻石。如果内存允许,引擎可能会保留此半径之外的先前加载的内容。
Empty
Empty
Empty
Default | 内容仅在内存不足时删除(与 LowMemory 相同)。 |
LowMemory | 在需要时卸载内容以释放内存。 |
Opportunistic | 即使没有内存压力,也会卸载目标半径之外的内容,以优化性能。 |
细节层级 (LOD)
在 Roblox 中,此设置决定了在启用实例流媒体的体验中的模型视觉质量。
StreamingMesh | 对于流媒体半径外的模型,使用较低分辨率的“替代”网格。 |
Disabled/Automatic | 不显示低分辨率网格,在流媒体半径内保持完整细节。 |
Roblox Studio
物理
为了优化 Roblox 中的游戏性能,管理物理设置至关重要。您可以通过将不需要物理属性的部件设置为锚定 (part.Anchored = true) 来停用它们。此外,通过禁用某些部件的碰撞 (part.CanCollide = false) 来减少不必要的碰撞,这进一步提升了性能。
Roblox Studio
更多优化选项
- 通过减少部件数量,因为更少的部件意味着更好的性能。
- 优化纹理,以平衡视觉质量和性能,特别是针对低端设备。
- 优化照明,限制动态灯光并尽可能使用无阴影灯光,因为这些调整减少了计算负载并提升了整体游戏性能。
- 有效使用部件和网格:最小化高多边形网格的使用,并尽可能使用 Roblox 的 BaseParts。
- 脚本优化:识别并消除不必要的循环,优化算法,并使用高效的数据结构。
- 网络优化:减少数据传输并确保顺畅的客户端-服务器通信。
- 客户端优化:将任务卸载到客户端,以减少服务器负载并提高响应速度。
- 碎片服务 (Debris Service):在管理临时对象时使用碎片服务。
Empty
Empty
Empty
local Debris = game:GetService("Debris")
local part = Instance.new("Part")
part.Position = Vector3.new(0, 10, 0)
part.Parent = workspace
-- Add the part to Debris, which will remove it after 5 seconds
Debris:AddItem(part, 5)
微型分析器 (MicroProfiler)
微型分析器 (MicroProfiler) 是 Roblox Studio 中用于分析和诊断游戏性能问题的工具。
Roblox Studio
Empty
Empty
Empty
Ctrl Alt F6 (⌘⌥F6)
Roblox Studio
微型分析器 (MicroProfiler) (蓝色 & 橙色)
Roblox Studio
Color Bar | Details | Indication |
---|---|---|
橙色 | 工作时间超过标准帧中的渲染时间。 | 表示正常性能,CPU 是重点。 |
蓝色 | 渲染时间超过工作时间。 | 表示渲染瓶颈。悬停查看“等待渲染线程”的详细信息。大量蓝色条形表示渲染是主要问题。 |
微型分析器 (MicroProfiler) (尖峰)
Roblox Studio
Graph Position | Details | Indication |
---|---|---|
中间 | 条形图通常应位于图形的中间。 | 表示任务调度平衡的正常操作。 |
尖峰 | 条形图在图形中间上方激增或增加。 | 表示任务调度过程中花费的时间增加,通常是由于处理大量移动部件的工作负载增加所致。 |
微型分析器 (MicroProfiler) (暂停)
Empty
Empty
Empty
Ctrl P (⌘P)
在微型分析器 (MicroProfiler) 中,可以通过点击或拖动图表来导航帧,并使用滚轮缩放时间线。不同的任务以彩色标签显示,当一个任务在另一个任务期间执行时,相应的标签会直接显示在另一个标签下方。
Roblox Studio
微型分析器 (MicroProfiler) (放大)
Empty
Empty
Empty
右键点击标签,将时间线放大以匹配标签的持续时间。
Roblox Studio
Empty
Empty
Empty
左键点击显示在游戏视图右下角的线性图,显示每帧执行任务所需的时间。此图用于性能测试。
Roblox Studio
主线程 | Details |
---|---|
主线程 | 管理输入、物理、动画、声音、Studio 更新并协调其他线程。 |
工作线程 | 协助主线程完成诸如网络、物理和路径查找等任务。根据 CPU 核心的数量使用多个工作线程。 |
渲染 (GPU) | 负责图形渲染。 |
自定义分析
要监控脚本执行复杂任务所需的时间,请在开头使用 debug.profilebegin,在结束时使用 debug.profileend。这样可以测量这些点之间的时间,并在微型分析器 (MicroProfiler) 时间线中创建一个标签。
Empty
Empty
Empty
local Debris = game:GetService("Debris")
local part = Instance.new("Part")
part.Position = Vector3.new(0, 10, 0)
part.Parent = workspace
-- Add the part to Debris, which will remove it after 5 seconds
Debris:AddItem(part, 5)