Unite’17 開發者大會經驗分享
Unite’17 開發者大會經驗分享
有幸能夠來參加一次Unite開發者大會,博主的實際工作經驗也就一年的時間,大會上的很多東西都在開發中不曾涉及過、或者是因為行業的區別沒有涉及過,但是將大會上學習到的其他經驗列舉出來給自己梳理一個努力的方向,也希望能夠幫助到沒有參加到大會的其他Unity程式設計師,大牛可以多加指點。
Keynote專場:
在KeyNote專場中,Unity官方人員主要介紹了新版Unity的新特性,以及他們針對Unity底層所做過的優化,新版Unity5.6以後的版本,渲染效能、效果都有所提升,而且針對UGUI做了更多的優化和擴充,使得基於UGUI的2D遊戲開發更加的便捷,以及功能更加強大的TimeLine工具,具體的更新內容大家可以去unity官網檢視。
在參加兩天的大會之後,博主發現很多公司都是一直在更新Unity引擎的版本,可能大公司因為穩定性的問題或是對低版本熟練的問題,某些遊戲的開發可能是使用了低版本的Unity引擎,比如《王者榮耀》《龍之谷》,但是在大會上他們都有表示會將引擎升級至5.x以後的更新版本,因為更新版本的會有更好的效能優化和功能擴充,使得開發者有更多的精力去集中於創新功能、玩法的實現,而不是專注於外掛的開發和效能的優化。
Keynote專場告訴我們一個道理,在允許的條件下,一定要使用他們的最新版本,這樣才能讓你更加專注於產品的開發,而非引擎本身。
案例分享專場
A.基於Unity5的次世代卡通渲染技術: 琪亞娜·極樂淨土
很短的視訊很炫麗的《琪亞娜·極樂淨土》利用N多頂級Shader。
B.在遊戲引擎的VR環境中探索視聽語言:
一段很感性的經驗分享。
C.成熟專案優化經驗分享
1.資源控制
1.1 動作
刪除相同關鍵幀,自定義關鍵幀壓縮
1.2 特效
監控ParticleSystem和動畫的數量
1.3 UI
a.按需區分圖集,平衡共有圖集數量和使用率
b.拆分alpha,對於沒有漸變過度的alpha圖進行尺寸壓縮
2.記憶體控制
2.1 protobuf優化
a.多執行緒序列化反序列化
b.減少協議數量,減低反射記憶體消耗
2.2 表格二進位制化
a.前期大約20mb table 使用txt讀取解析
b.使用binary讀取可以節省一半執行時記憶體
c.string使用的intern處理
d.共享儲存相同的資料結構
e.減少再次索引的數量,dictionary,quene等
3.控制DrawCall
a.合併場景材質,減少靜態物體的Draw Call
b.合併任務Mesh
c.特效分層顯示,設定layer
d.裁剪控制,鏡頭控制,Occlusion Culling
4.UI優化
4.1 優化Panel,調整層級順序,動靜分離,降低DrawCall
4.2 針對飄子特別優化
a.控制飄字頻率,減少UIMesh的動態更新
b.控制飄字的最大數量
5.減少更新
5.1 Unity Animator Optimize Game Object
5.2 及時減少不必要的Update
a.Animator
b.ParticleSystem
5.3 減少BillBoard和Amimation和Update的操作
6.優化渲染效率
6.1 按需重寫預設的Shader
6.2 優化複雜的Shader
a.複雜特效的Shader需要圖形程式或者TA特別優化(去除cutout,合併blend,優化指令)
b.使用數學手段
c.使用shaderlod顯示不同的效果,按機型使用vertex light和pixel light
7.減少卡頓
7.1 載入
a.使用載入佇列
b.人物分幀非同步載入
c.平衡預載入與及時載入的數量和大小
d.小心其他操作對載入的影響
e.與ab解除安裝的衝突
7.2 寫出
a.大量資料的一次性寫出
D.王者技術修煉<王者榮耀>
主要是針對《王者榮耀》狀態同步VS幀同步、網路、效能優化進行講解。
狀態同步VS幀同步
1.狀態同步優點:
a.安全性非常高
b.另外狀態同步對於網路的頻寬和抖動包有一個更強的適應能力它的斷線重回比較快
c.客戶端效能優化也,客戶端在做效能優化的時候,可以做裁剪,避免不必要的渲染
2.狀態同步缺點:
a.開發效率要相對幀同步差一些,除錯周期比較長,想要達到優化好的水平,也是比較難的。
b.它比較難做出動作類遊戲打擊感和精確性。因為某些功能(射擊)會在短時間內消耗大量運算效能
c.會隨著遊戲的複雜度,角色的多少,流量也會逐漸增長。
3.幀同步優點:
a.開發效率比較高
b.另外它的打擊感確實比較強
c.流量消耗是穩定的
4.幀同步缺點:
a.網路要求比較高
b.斷線重回時間很長
王者榮耀效能優化
a.避免使用反射
b.避免使用SetActive,用layer代替
c.減少拆箱裝箱操作
d.Unity官方推薦CG每幀200位元組
e.控制DrawCall,畫面裁剪
f.UI複雜使用3DUI,不適用UGUI,比如血條等
g.減少IO
h.表現與邏輯分離,邏輯可以利用C++,進一步降低GC消耗
i.建立自己的記憶體管理,物件管理,重新實現容器類,甚至是反射功能
總結:
大會雖然不會給開發者帶來實質性的提升,但是它卻可以給我們指明一條努力前進的道路。
相關文章
- Unite Shanghai 2024開發者大會前瞻,乾貨都到碗裡來~AI
- 管理經驗分享會議記錄--【管理經驗】
- 2019Unite大會
- Android開發者峰會:Android應用效能優化經驗分享Android優化
- Google遊戲出海經驗分享會Go遊戲
- UNITE(Unity)、UOD (虛幻)、TGDC(騰訊)2020 開發者大會彙總帖Unity
- Android大廠面試經驗分享Android面試
- 微信小程式開發者經驗分享組織成立啦~~~微信小程式
- 經驗分享 ----------
- 經驗分享
- 分享做為獨立開發者的一些經驗
- JAVA開發者大會-Spring Cloud閘道器分享JavaSpringCloud
- 重磅啟動!第 17 屆「中國 Linux 核心開發者大會」徵稿Linux
- 17 年程式設計生涯的三大經驗總結程式設計
- 17年程式設計生涯的三大經驗總結程式設計
- oracle大表新增欄位default經驗分享Oracle
- 唯品會java技術崗面試經驗分享Java面試
- iOS 經驗分享iOS
- 分享抖音交流經驗
- 2017百度AI開發者大會 一場5000名開發者的分享盛宴AI
- ERP系統雲端現代化經驗線上分享會
- Twitter開發者大會摘要
- 【安卓綠色聯盟開發者大會】閒魚Flutter分享實錄安卓Flutter
- Eric Caoili:獨立開發者分享製作16位動作遊戲的經驗遊戲
- Polymer使用經驗分享
- 徵求護眼經驗分享
- 遊引力出海經驗分享
- 阿里JAVA面試分享經驗阿里Java面試
- 微博紅包:大規模Docker叢集實踐經驗分享Docker
- 6條經過驗證的創業經驗分享創業
- DDD經驗:分享工作,分享決策 – Jessitron
- 產品經理的面試經驗分享面試
- 想成為一個高效的Web開發者嗎?來看看大牛分享的經驗吧~Web
- 大規模 K8s 叢集管理經驗分享 · 上篇K8S
- [ASP.NET]大檔案無法上傳排查經驗分享ASP.NET
- 大資料如何學習,大資料工程師學習經驗分享大資料工程師
- 分享net面試題和經驗面試題
- 考研經驗分享(上岸南理工)