遊戲開發效能優化經驗總結

2021-07-02 11:57:43 字數 1510 閱讀 1712

優化概論

說起遊戲的優化,在遊戲開發中經常分為這幾步:

首先要確定遊戲中經常會出現哪些問題 – profile

然後確定在哪些方向進行效能優化 – analyze

最後再盡可能將問題逐個解決 – solve

遊戲開發中一定是先做工具,進行profile,再進行優化,所以,說優化就不得不再扯一下profile

常見的工具有一些是引擎和ide自帶的,比如unity自帶的profiler,就包含了cpu,gpu,memory等等各式各樣的效能分析工具,其他的比如gpa,xcode instrument和visual studio,intel自帶的記憶體管理工具在必要的時候也使需要去學習和使用的。

另外一些工具,就需要根據遊戲的需求去編寫了,比如一鍵關閉所有特效,一鍵更改解析度等等,一鍵設定場上npc數量,簡單的遊戲如啪啪三國是做成快捷鍵開啟profile功能的,更為複雜的遊戲如神秘海域則是通過遊戲內控制台來進行更為細緻的profie。

接著,我們再來說說遊戲優化中主要的四個考慮方向:

這一點思考是我從為什麼很多看起來不是很複雜的**,比如 facebook 需要大量頂尖高手來開發?

這個答案中想到的,正如這位答主所說:

事實上,從我的經驗來看,一般來說,很多軟體專案及產品,其在非功能性需求上的成本,難度和工作量,是要超過功能性需求的。在特定的軟體領域,例如**(尤其是**,facebook這樣海量使用者規模的**),金融(銀行**),電信領域,其非功能性需求實現的重要性,工作量,技術難度要遠遠遠遠大於功能性需求的實現。而且,功能性的需求的實現,其實在大多數情況下,更依賴於業務的高手(或者好的產品經理)而不是技術的高手,而非功能性需求的實現,恰恰是挑戰技術高手的重要課題。

在遊戲前端這邊做了一段時間,大家都在抱怨遊戲前端技術含量低,只能寫業務邏輯,但是其中的陷阱就是,作為前端,你應當盡量少寫業務邏輯,你關注過一下的模組嗎?

我在過去幾個月裡,參加了全民突擊和崩壞學園2兩個unity3d專案的開發,也遇到了一些效能優化相關的問題,在程式出現問題時,很多時候我們會通過所謂的「經驗」去解決問題,比如,上面提到的安全問題,有些開發者就會提前意識到安全的重要性,在遊戲推出市場前選擇加密這種安全有效的方法,崩壞學園就及時採取了愛加密的遊戲加密解決方案

,保證了安全性!其實這種quick link

的能力自然是非常重要,但經驗並非萬能。

但是從另一方面來講,當我們無法從自己過往的經驗中找到答案的時候,我們就要通過劃分範圍,縮小問題區間來解決問題了,許多人往往只是在自己的經驗中死守乙個區域性的視野去處理問題,最後的結果就一定不能盡如人意。

其實這四個方面的優化總是相互制衡的,你把乙個方面的優化做好了,另乙個方面的問題又會出現了,比如,我們如果使用動態載入和解除安裝資源,這就雖然減少了記憶體佔用量,會在io上造成載入時間延長的問題。

所以,我們在做遊戲優化的時候,不能太追求完美,剛剛好就是真的好(good enough is fine)。最終使得以上這四個方面能達到均衡即可,切忌在某一方面優化過頭,又引發其他方面的問題,此消彼長的情況下,有時反而不如不做優化。

軟體開發效能優化經驗總結

效能優化是軟體開發過程中必不可少,但又很困難的工作。這裡是我長期對c c 開發的效能優化的經驗總結。效能優化必須遵循必要的原則進行。優化前必須有個明確的目標。目標可以有近期的,中期的和遠期的。並且目標必須是可達到,可量化的具體的值。在任何優化前必須進行效能測試,得到的測試結果必須儲存下來。這些資料有...

Android開發效能優化

1 盡量不適用靜態引用,以避免記憶體溢位 2 對進行壓縮 3 listview的優化 4 自定義view中減少measure layout draw 中的耗時操作即它們執行次數 5 不在ui執行緒總做耗時操作,網路請求 資料庫操作 複雜計算等放在子執行緒 6 webview退出時手動銷毀 方法未知 ...

web開發效能優化

1 查詢出的資料量過大 可以採用多次查詢,其他的方法降低資料量 盡量採取分頁查詢資料 2 鎖或者死鎖 這也是查詢慢最常見的問題,是程式設計的缺陷 3 返回了不必要的行和列 用or的字句可以分解成多個查詢,並且通過union鏈結多個查詢。它們的速度只與是否使用索引有關,如果查詢需要用到聯合索引,用un...