性能設計意味著在您構建遊戲時遵循一系列最佳實踐。與稍後在開發過程中查找和修復性能問題相比,早期設計性能可以為您節省大量時間和精力。
低端設備
低端設備,特別是移動設備,具有嚴重的內存限制,並容易因為內存不足(OOM)錯誤而崩潰:
如果您想支持低端設備,請選擇至少一台“基線”設備,在開發過程中隨時測試您的遊戲,並密切注意幀率和內存使用情況。當您發現遊戲中的問題區域時,利用這些區域來識別設備的限制。
例如,您可以在啟用 Render (ShiftF2) 和 Summary (ShiftF2) 調試統計的情況下測試遊戲。如果幀率在特別雜亂的區域開始下降,您可以檢查 Draw (scene) 數字,並確定需要保持在1,000次繪製調用和1,000,000個三角形以下,才能確保在您的基線設備上運行良好。
或者,您可以檢查 Developer Console (F9),並注意到內存使用量有點高,除非您啟用 串流。清楚了解設備的限制有助於您在繼續構建遊戲時保持在這些限制之下。

Roblox Studio 中的設備模擬器用於檢查比例和控制,但對於內存使用的準確性不高;當您在 Studio 測試遊戲時,它同時運行伺服器和客戶端,因此內存使用量會顯著增加。
更一般來說,在各種設備上進行測試 可以幫助您檢查遊戲在不同圖形質量級別下是否符合您的視覺和性能期望。關於如何優化您的遊戲以支持低端移動設備的更詳細示例,請參見 實際建設與腳本優化。
串流與傳送
實例串流 允許 Roblox 動態加載和卸載 3D 內容,是大多數地方,特別是較大場景的極佳選擇。串流改善了加入時間,減少了內存佔用,並提高了幀率。
例如,當您啟用 Workspace.EnableSLIMAvatars 並將您的世界模型的 LevelOfDetail 屬性設置為 SLIM,您可以創建擁有社交空間和擁擠事件的世界,這些事件在視覺上保持豐富,而同時在廣泛的設備能力範圍內進行縮放。更多信息請參見 SLIM 和 改善性能。
考慮將大型場景拆分為更可管理的小場景,並使用 傳送 將玩家在這些場景之間移動。這種方法可以減少初始加入時間,但會在玩家之間傳送時增加額外的加入時間。對於內存使用的好處則因場景的大小和是否啟用串流而異。
即使不考慮性能因素,您可能會發現擁有多個場景可以簡化開發過程,特別是當您定期為遊戲添加新內容或是大團隊的一部分時。
材料和複製
內建材料使用的內存遠低於自定義紋理,但可能不符合您的藝術願景。請盡可能使用材料,以為您遊戲中的關鍵紋理節省內存預算。
當您創建資產時,將它們轉換為 包。將包作為工作流程的一部分可以幫助避免不同 ID 的重複資產的常見問題,這會影響性能。
透明度
- 避免使用 0(可見)和 1(不可見)以外的透明度值。使用部分透明時,特別小心避免 高透明度重疊。
腳本
儘可能編寫事件驅動的代碼,而不是每幀計算。在 60 FPS 下,每幀的總預算為 16.67 毫秒(ms)。即使是看似微不足道的每幀計算也可能佔用相當大的預算。
尋找將長時間運行的代碼拆分為可管理部分的方法。如果一段代碼需要 100 毫秒來執行,且您每幀都運行它,那麼您的遊戲只能以 10 FPS 運行。如果您決定在其他以 60 FPS 運行的遊戲中每秒只運行此代碼一次,則 59 幀的時間都會在 16.67 毫秒內到達……然後在 100 毫秒後到達的一幀會造成明顯的卡頓。
相反地,調查如何拆分代碼。也許您可以每幀執行 5 毫秒的工作,使用 task.wait(),並在保持 60 FPS 的同時每 20 幀完成計算。多線程,有時稱為平行 Luau,也可以提供幫助。
使用 RBXScriptConnection:Disconnect() 方法停止函數在下一次事件觸發時不必要地被調用。
不要每次需要值時都調用相同的方法。一次調用該方法,存儲該值,然後在必要時覆蓋它。
不要將所有內容都存儲在 ReplicatedStorage 中。客戶端會加載此容器中的所有內容。相反,對於客戶端不需要訪問的任何內容,請使用 ServerStorage。