性能設計意味著在建立遊戲時遵循一些最佳實踐。相比於在開發過程中後期再去找出和修正性能問題,早期進行性能設計可以節省大量時間和精力。
低端設備
低端設備,特別是行動設備,具有嚴重的內存限制,並且因為內存不足(OOM)錯誤而容易崩潰:
如果您想支持低端設備,請至少選擇一個“基線”設備,在整個開發過程中對其進行測試,並密切關注幀率和內存使用情況。在發現遊戲中的問題區域時,利用這些區域來確定您的設備限制。
例如,您可能會啟用渲染(ShiftF2)和摘要(ShiftF2)調試統計來測試遊戲。如果在特別雜亂的區域內幀率開始下降,您可以檢查**繪製(場景)**的數據,並確定您需要保持在1,000次繪製調用和1,000,000個三角形之下,以使遊戲能在您的基線設備上順利運行。
或者您可以檢查開發者控制台(F9),注意到內存使用量略高,除非您啟用串流。清楚了解設備的限制可以幫助您在繼續構建遊戲時保持在這些限制之下。

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