為性能設計意味著遵循一小堆最佳做法 當你構建你的體驗時 。與在開發過程中稍後找到並修復性能問題相比,提早設計以實現性能可為您節省大量時間和努力。
低端裝置
低端裝置,特別是移動裝置,具有嚴重的記憶限制,並且容易受到記憶不足(OOM)錯誤的影響:
如果您想支持低端裝置,請選擇至少一個「基線」裝置,在開發過程中測試您的體驗,並注意框架速率和記憶使用率。隨著您在體驗中找到問題區域,使用這些區域來識別您設備的限制。
例如,您可能會測試使用 渲染 ( ShiftF2 ) 和 總結 ( ShiftF2 ) 啟用的調試統計數據。如果框架速率開始在特別混亂的區域下降,你可以檢查 繪製 (場景) 數字,並確定你需要保持低於 1,000 次繪製呼叫和 1,000,000 個三角形,才能使體驗在你的基礎設備上順利運行。
或者你可以檢查 開發者控制台 ( F9 ),注意記憶使用量會稍高,除非你啟用 流式傳輸 。清楚了解裝置限制可以幫助你在繼續構建體驗時保持在它們之下。
Roblox Studio 中的裝置模擬器對檢查比率和控件有用,但對於記憶體使用不準確;當您在 Studio 測試體驗時,會運行服務器和客戶端,因此記憶體使用量大幅提高。
更一般地,在各種裝置上進行測試可以幫助您檢查體驗是否符合不同圖形品質等級的視覺和性能期望。若要獲得更詳細的例子,說明您如何為低端移動設備優化體驗,請參閱實世建築和腳本優化。
傳輸和傳送
考慮將大型位置分解為更容易管理的部分,並使用 傳送 將玩家之間移動。這種方法可以減少 初始 加入時間,但在玩家從一個地點傳送到另一個地點時,強制添加額外的加入時間。記憶使用的好處會根據地方的大小以及你是否啟用了傳輸來變化。
即使忽略性能考量,你也可能發現擁有多個地點會簡化開發過程,特別是如果你定期為體驗新增內容或是屬於更大的團隊的一部分。
材料和複製
內置材料使用的記憶遠小於自訂紋理,但可能不符合你的藝術願景。盡可能使用材料,以節省對經驗中心的紋理的記憶預算。
當您創建資產時,將它們轉換為包裝。將包裝納入您的工作流程可避免常見的擁有不同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 來存取客戶端不需要存取的任何東西。