優化概論前端
提及遊戲的優化,在遊戲開發中常常分爲這幾步:算法
遊戲開發中必定是先作工具,進行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)。最終使得以上這四個方面能達到均衡便可,切忌在某一方面優化過頭,又引起其餘方面的問題,此消彼長的狀況下,有時反而不如不作優化。