一、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 苹果审核
对于绕审, 苹果的态度是一样的