此係列文章逐個內容講解ET8.1的新特性。
ET8.1 釋出,帶來以下新特性:
1. 多執行緒多程序架構,架構更加靈活強大,多執行緒設計詳細內容請看多執行緒設計課程
2. 抽象出纖程(Fiber)的概念,類似erlang的程序,非常輕鬆的建立多個纖程,利用多核,仍然是單執行緒開發的體驗
3. 纖程排程: 主執行緒,執行緒池,每個纖程一個執行緒,3種排程方式
4. Fiber間通訊的Actor訊息機制
5. Entity方面,domain改成IScene,只要實現IScene介面,Entity就是domain,這樣定義domain更加自由
6. 預測回滾的幀同步實現 想詳細瞭解可以看幀同步課程
7. protobuf換成了memorypack,實現無gc的網路
8. 純C#版的kcp庫,效能非常強,由sj提交
9. 熱更dll改成用ide編譯,更加方便,也可以Unity編輯器上按F6進行程式碼編譯執行
10. sj利用source generater實現了程式碼自動模板功能,目前可以自動生成System類,開發者只需要定義Awake Update靜態方法即可,特別方便
11. sj開發了分析器,實現了EntitySystemOf,根據entity介面一鍵生成對應的system方法
12. 客戶端利用fiber實現網路獨立執行緒(demo已實現),甚至可以把邏輯跟表現使用獨立的纖程,更好的利用多核
13. 幀同步demo直接利用纖程建立房間,更加方便
14. 純c#版尋路dotrecast,至此ET已經完全C#化,沒有任何cpp程式碼了
15. kcp跟軟路由底層同時支援tcp跟websocket,當udp聯不通的情況下,可以切換成tcp Websocket,並且支援執行時動態切換,玩家不掉線!
16. 整合了sj的非託管容器庫,效能爆炸
選用ET開發遊戲的18個理由
1. 多程序多執行緒Actor架構,客戶端跟服務端都可以輕鬆建立纖程(fiber)利用多核,比如客戶端網路一個纖程,尋路一個纖程,幀同步邏輯層一個纖程,表現層一個纖程
2. async await協程同步程式碼編寫,避免回撥地獄
3. 0GC消耗,超強的MemoryPack序列化, 超強的網路層效能
4. kcp支援,網路響應非常迅速,並且閃斷wifi 4g都不會導致掉線,做競技遊戲必備
5. kcp底層可以使用tcp udp Websocket協議,當udp聯不通的情況下,可以切換成tcp Websocket,並且支援執行時動態切換,玩家不掉線!
6. 軟路由防攻擊設計,買些垃圾主機就可以防住駭客攻擊,比買高防省錢多了,並且使用者不會掉線
7. 雙端C#開發,前後端共享程式碼,C#本身效能極強,僅次於CPP,不需要學一些亂起八糟的語言,很多獨立遊戲開發者,一個人就能用ET開發mmorpg遊戲
8. 強大的編譯分析器,編譯器就能幫助大家寫出正確的ET風格的程式碼
9. 客戶端hybridclr熱更新支援
10. 客戶端服務端均支援執行時熱過載,客戶端服務端不需要關閉程序就能修改程式碼,大大提升了開發效率以及運營效率
11. 完善的demo,原始碼帶有狀態同步跟預測回滾的幀同步demo
12. 完善的機器人開發機制,機器人直接共享客戶端邏輯程式碼,減少95%機器人開發工作量,接入ai機器人非常輕鬆。大規模機器人壓測,輕而易舉
13. 強大的ai開發機制,比行為樹更加容易
14. 強大的單元測試開發機制,每個單元測試都是整個遊戲環境,不用搞mock隔離,開發起來非常輕鬆
15. 優美的程式結構,資料跟方法完全分離
16. all in one的開發體驗,開發時只需要啟動unity,釋出的時候又可以單獨釋出服務端,並且可以跨windows跟linux平臺
17. 客戶端服務端資料開發期完全視覺化,開啟ENABLE_VIEW宏即可在Unity Hierarchy皮膚中看到客戶端跟服務端的所有的Entity物件以及欄位的內容
18. WebGL以及微信小遊戲支援,有ET8的webgl版本,開發體驗跟ET8完全一致,無縫對接ET8的伺服器
ET開源地址地址:egametang/ET: Unity3D Client And C# Server Framework (github.com) qq群:474643097