后端游戏引擎调研-2021.07
一、Redis的消息同步
簡單的可以做websocket,支持有限
https://zhuanlan.zhihu.com/p/107109334
二、Unity自身插件
Network組件 實現狀態同步
1.Transform同步
2.發射子彈與減血的同步
3.動畫的同步
Multiplayer 服務
中繼服務器;負責玩家之間的連接更加穩定、可靠
介紹
https://docs.unity3d.com/cn/current/Manual/UnityMultiplayerSettingUp.html
Unity’s Multiplayer Service is the easiest way to set up real-time, networked games for Unity. It’s fast to implement and highly customizable. Unity-provided servers and matchmaking services ensure that your players can easily find and play with each other.
案例
《Apex英雄》24天從0到5000w
成本
您可以免費獲得20CCU(并發用戶)(專業版的為200)。如果需要更多,我們將收取0.49美元的費用來支付基礎設施的費用(中繼服務器),并取消這個限制。
這費用用來支付您所使用的帶寬
三、商業引擎
| ET | KBEngine | SkyNet | |
| 技術棧 | 客戶端服務器共用C# 支持很多C#新特性,語法簡潔、高效 | 底層架構C++ 邏輯層Python實現的MMOG游戲服務器框架 | 底層架構C 邏輯層Lua作者自述該框架是服務器框架的框架 |
| 服務器架構特性 | 雙端ECS支持 Actor模式支持 類守望先鋒架構 | 2.0版本開始服務器端支持ECS 基于實體定義的服務器對象管理概念簡潔明了 | 基于 Actor 模式的開源分布式并發框架 |
| 作者 | 唐海,經歷不明 | 柯標,開源中國站長 | 云風,Lua領域大神 |
| 跨平臺能力 | 較難,與Unity和C#語言緊耦合 | 可支持Unity、UE4、Cocos等多平臺項目 | 通過Protobuf對接,不直接支持跨平臺 |
| 文檔和案例完善度 | 5.0開始加入教程 沒有專門文檔有官方案例 | 文檔比較成熟 案例相對豐富已經被電魂網絡收購, | 英文文檔, 有中文翻譯 |
| 商業游戲 | 養不大 天天躲貓貓2(ios2019春節下載排行19) 牛虎棋牌 | 很多卡牌、棋牌游戲在用 | 簡悅的陌陌爭霸、食物戰爭等等很多產品在用 |
| 熱更支持 | 可熱更 | 改造后可支持服務端邏輯層熱更,客戶端熱更需要自行實現 | 需要自己開發的功能較多 |
| 網站 | https://github.com/egametang/ET | https://github.com/kbengine/kbengine | https://github.com/cloudwu/skynet |
| 引擎開發語言 | C# | Python | Lua |
| 今年累計更新 | 50 | 14 | 86 |
| 維護頻率 | 2-3天一次,都是大范圍的代碼修改和維護 | 平均每半月一次,主要都是小范圍的修復bug | 2-3天一次,更新內容較多 |
| 數據庫 | MongoDB | MongoDB/MySQL | MongoDB |
| 參與開發者 | 31 | 36 | 103 |
| 星數 | 4.6k | 4.5k | 10.4k |
四、其他小眾商業引擎
pomelo
網易開源的框架,支持分布式, 周邊完善
一個用于Node.js的快速,可擴展的分布式游戲服務器框架
https://github.com/NetEase/pomelo
NoahGameFrame
幾月c++支持c#/lua,是一個輕量級,快速,可擴展的分布式插件框架,基于Bigworld的思想,可用作MMO RPG / MOBA游戲旖旎情
https://github.com/ketoo/NoahGameFrame
代表做全民無雙
pitaya
基于golang,可伸縮的分布式游戲服務器框架
使用的技術比較先進 ETCD實現服務發現 NATS GRPC實現rpc可以docker部署, 國外公司TFG Co 開源項目
https://github.com/topfreegames/pitaya
zooba appstroe排行很高的moba、吃雞類游戲
goworld
用Golang寫一個分布式可擴展、可熱更的游戲服務器
GoWorld代碼:https://github.com/xiaonanln/goworld
Pinus
Pinus是基于node.js的高性能,分布式游戲服務器框架。它包括基礎的開發框架和相關的擴展組件(庫和工具包),可以幫助你省去游戲開發枯燥中的重復勞動和底層邏輯的開發。 Pinus不但適用于游戲服務器開發, 也可用于開發高實時web應用,它的分布式架構可以使Pinus比普通的實時web框架擴展性更好。
http://pinus.io/zh-cn/introduce.html
Leaf
Leaf 是一個由 Go 語言(golang)編寫的開發效率和執行效率并重的開源游戲服務器框架。Leaf 適用于各類游戲服務器的開發,包括 H5(HTML5)游戲服務器。
Leaf 的關注點:
- 良好的使用體驗。Leaf 總是盡可能的提供簡潔和易用的接口,盡可能的提升開發的效率
- 穩定性。Leaf 總是盡可能的恢復運行過程中的錯誤,避免崩潰
- 多核支持。Leaf 通過模塊機制和 leaf/go 盡可能的利用多核資源,同時又盡量避免各種副作用
- 模塊機制。
https://github.com/name5566/leaf/blob/master/TUTORIAL_ZH.md
五 面臨的問題
1 服務器運維
docker
https://blog.csdn.net/qq_19646129/article/details/102477071
https://www.cnblogs.com/geekmao/p/7992731.html
https://gitee.com/llsw/docker-skynet
kubernetes(k8s)
主要包括以下幾點:
2 熱更
A. Lua
SLua、Tolua、XLua
slua:https://github.com/pangweiwei/slua
tolua:https://github.com/topameng/tolua
xlua:https://github.com/Tencent/xLua
B. ILRuntime
http://ourpalm.github.io/ILRuntime/public/v1/guide/index.html
C. 對比
50萬次的加法運算#
ILRuntime使用全局變量:UnitTest_Performance50萬 Elapsed time:1050ms, result = 445698416 ,Tick:10527445
ILRuntime使用局部變量:UnitTest_Performance50萬 Elapsed time:534ms, result = 445698416 ,Tick:5436060
Unity原生代碼:mono UnitTest_Performance50萬 Elapsed time:1ms, result = 445698416 ,Tick:19900
xlua中lua:[10:42:43.8636]LUA: cost: 4.00ms
D. 一些評語
第一,ILRuntime相對于lua來說還算是比較新興的東西
第二,很多公司有自成一套的lua框架,不想也不需要使用ILRuntime
第三,lua熱更新是wow帶起來的,那么大一個ip,大家也都知道,并且信任lua
但是就如你所說,ILRuntime開發效率比lua高很多,雖然純計算的話性能不如lua,但是游戲開發還是邏輯居多,所以長遠來看ILRuntime無疑會越來越流行,如果沒有另外一款牛逼的熱更方案介入 ILRuntime會慢慢的把lua擠出市場。
E. 網站介紹
http://ourpalm.github.io/ILRuntime/public/v1/guide/index.html
https://zhuanlan.zhihu.com/p/260216935
https://www.jianshu.com/p/495372db2527
使用ILRuntime來實現熱更新的優與劣!
https://cloud.tencent.com/developer/news/151033
3 蘋果審核
對于繞審, 蘋果的態度是一樣的
總結
以上是生活随笔為你收集整理的后端游戏引擎调研-2021.07的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PCWorld盘点2011科技界15大败
- 下一篇: 图像处理标准图像——“Lena图”的由来