# [English](https://github.com/egametang/Egametang/blob/master/README-EN.md)
# __讨论QQ群 : 474643097__
# [ET论坛](https://et-framework.cn)
# 注意!现在master(6.0版)还在开发中,不过基本架构已经完成, 客户端热更新已经有多个版本实现,参考最下面的友情链接
# ET的介绍:
ET是一个开源的游戏客户端(基于unity3d)服务端双端框架,服务端是使用C# .net core开发的分布式游戏服务端,其特点是开发效率高,性能强,双端共享逻辑代码,客户端服务端热更机制完善,同时支持可靠udp tcp websocket协议,支持服务端3D recast寻路等等
# ET的功能:
### 1.可用VS单步调试的分布式服务端,N变1
一般来说,分布式服务端要启动很多进程,一旦进程多了,单步调试就变得非常困难,导致服务端开发基本上靠打log来查找问题。平常开发游戏逻辑也得开启一大堆进程,不仅启动慢,而且查找问题及其不方便,要在一堆堆日志里面查问题,这感觉非常糟糕,这么多年也没人解决这个问题。ET框架使用了类似守望先锋的组件设计,所有服务端内容都拆成了一个个组件,启动时根据服务器类型挂载自己所需要的组件。这有点类似电脑,电脑都模块化的拆成了内存,CPU,主板等等零件,搭配不同的零件就能组装成一台不同的电脑,例如家用台式机需要内存,CPU,主板,显卡,显示器,硬盘。而公司用的服务器却不需要显示器和显卡,网吧的电脑可能不需要硬盘等。正因为这样的设计,ET框架可以将所有的服务器组件都挂在一个服务器进程上,那么这个服务器进程就有了所有服务器的功能,一个进程就可以作为整组分布式服务器使用。这也类似电脑,台式机有所有的电脑组件,那它也完全可以当作公司服务器使用,也可以当作网吧电脑。
### 2.随意可拆分功能的分布式服务端,1变N
分布式服务端要开发多种类型的服务器进程,比如Login server,gate server,battle server,chat server friend server等等一大堆各种server,传统开发方式需要预先知道当前的功能要放在哪个服务器上,当功能越来越多的时候,比如聊天功能之前在一个中心服务器上,之后需要拆出来单独做成一个服务器,这时会牵扯到大量迁移代码的工作,烦不胜烦。ET框架在平常开发的时候根本不太需要关心当前开发的这个功能会放在什么server上,只用一个进程进行开发,功能开发成组件的形式。发布的时候使用一份多进程的配置即可发布成多进程的形式,是不是很方便呢?随便你怎么拆分服务器。只需要修改极少的代码就可以进行拆分。不同的server挂上不同的组件就行了嘛!
### 3.跨平台的分布式服务端
ET框架使用C#做服务端,现在C#是完全可以跨平台的,在linux上安装.netcore,即可,不需要修改任何代码,就能跑起来。性能方面,现在.netcore的性能非常强,比lua,python,js什么快的多了。做游戏服务端完全不在话下。平常我们开发的时候用VS在windows上开发调试,发布的时候发布到linux上即可。ET框架还提供了一键同步工具,打开unity->tools->rsync同步,即可同步代码到linux上
```bash
./Run.sh Config/StartConfig/192.168.12.188.txt
```
即可编译启动服务器。
### 4.提供协程支持
C#天生支持异步变同步语法 async和await,比lua,python的协程强大的多,新版python以及javascript语言甚至照搬了C#的协程语法。分布式服务端大量服务器之间的远程调用,没有异步语法的支持,开发将非常麻烦。所以java没有异步语法,做单服还行,不适合做大型分布式游戏服务端。例如:
```c#
// 发送C2R_Ping并且等待响应消息R2C_Ping
R2C_Ping pong = await session.Call(new C2R_Ping()) as R2C_Ping;
Log.Debug("收到R2C_Ping");
// 向mongodb查询一个id为1的Player,并且等待返回
Player player = await Game.Scene.GetComponent<DBProxyComponent>().Query<Player>(1);
Log.Debug($"打印player name: {player.Name}")
```
可以看出,有了async await,所有的服务器间的异步操作将变得非常连贯,不用再拆成多段逻辑。大大简化了分布式服务器开发
### 5.提供类似erlang的actor消息机制
erlang语言一大优势就是位置透明的消息机制,用户完全不用关心对象在哪个进程,拿到id就可以对对象发送消息。ET框架也提供了actor消息机制,实体对象只需要挂上MailBoxComponent组件,这个实体对象就成了一个Actor,任何服务器只需要知道这个实体对象的id就可以向其发送消息,完全不用关心这个实体对象在哪个server,在哪台物理机器上。其实现原理也很简单,ET框架提供了一个位置服务器,所有挂载MailBoxComponent的实体对象都会将自己的id跟位置注册到这个位置服务器,其它服务器向这个实体对象发送消息的时候如果不知道这个实体对象的位置,会先去位置服务器查询,查询到位置再进行发送。
### 6.提供服务器不停服动态更新逻辑功能
热更是游戏服务器不可缺少的功能,ET框架使用的组件设计,可以做成守望先锋的设计,组件只有成员,无方法,将所有方法做成扩展方法放到热更dll中,运行时重新加载dll即可热更所有逻辑。
### 7.客户端使用C#热更新,热更新一键切换
可以使用csharp.lua或者ILRuntime稍加改造即可做客户端热更。再也不用使用狗屎lua了,客户端可以实现所有逻辑热更新,包括协议,config,ui等等
### 8.客户端服务端用同一种语言,并且共享代码
下载ET框架,打开服务端工程,可以看到服务端引用了客户端很多代码,通过引用客户端代码的方式实现了双端共享代码。例如客户端服务端之间的网络消息两边完全共用一个文件即可,添加一个消息只需要修改一遍。
### 9.KCP ENET TCP Websocket协议无缝切换
ET框架不但支持TCP,而且支持可靠的UDP协议(ENET跟KCP),ENet是英雄联盟所使用的网络库,其特点是快速,并且网络丢包的情况下性能也非常好,这个我们做过测试TCP在丢包5%的情况下,moba游戏就卡的不行了,但是使用ENet,丢包20%仍然不会感到卡。非常强大。框架还支持使用KCP协议,KCP也是可靠UDP协议,据说比ENET性能更好,使用kcp请注意,需要自己加心跳机制,否则20秒没收到包,服务端将断开连接。协议可以无缝切换。
### 10. 3D Recast寻路功能
可以Unity导出场景数据,给服务端做recast寻路。做MMO非常方便,demo演示了服务端3d寻路功能
### 11. 服务端支持repl,也可以动态执行一段新代码
这样就可以打印出进程中任何数据,大大简化了服务端查找问题的难度,开启repl方法,直接在console中输入repl回车即可进入repl模式
### 12.提供客户端机器人框架支持
几行代码即可创建机器人登录游戏。机器人压测轻而易举,机器人跟正常的玩家完全一样,上线前用机器人做好压测,大大降低上线崩溃几率
### 13.还有很多很多功能,我就不详细介绍了
a.及其方便检查CPU占用和内存泄漏检查,vs自带分析工具,不用再为性能和内存泄漏检查而烦恼
b.使用NLog库,打log及其方便,平常开发时,可以将所有服务器log打到一个文件中,再也不用一个个文件搜索log了
c.统一使用Mongodb的bson做序列化,消息和配置文件全部都是bson或者json,并且以后使用mongodb做数据库,再也不用做格式转换了。
d.提供一个同步工具
没有合适的资源?快使用搜索试试~ 我知道了~
C# .net core开发的分布式游戏服务端
共1272个文件
meta:565个
cs:506个
asset:24个
1星 需积分: 11 19 下载量 183 浏览量
2021-08-13
11:33:16
上传
评论 2
收藏 33.88MB ZIP 举报
温馨提示
服务端是使用C# .net core开发的分布式游戏服务端,其特点是开发效率高,性能强,双端共享逻辑代码,客户端服务端热更机制完善
资源推荐
资源详情
资源评论
收起资源包目录
C# .net core开发的分布式游戏服务端 (1272个子文件)
libkcp.a 58KB
Unity.HotfixView.asmdef 600B
Unity.Editor.asmdef 524B
Unity.ModelView.asmdef 501B
Unity.Hotfix.asmdef 423B
Unity.Model.asmdef 399B
Unity.Mono.asmdef 397B
Unity.ThirdParty.asmdef 176B
LightingData.asset 23KB
ProjectSettings.asset 20KB
NavMeshLayers.asset 9KB
QualitySettings.asset 6KB
InputManager.asset 6KB
GraphicsSettings.asset 2KB
Physics2DSettings.asset 1KB
EditorSettings.asset 1KB
UnityConnectSettings.asset 1005B
PackageManagerSettings.asset 1002B
NavMeshAreas.asset 884B
DynamicsManager.asset 661B
EditorUserSettings.asset 591B
ETBuildSettings.asset 498B
TagManager.asset 387B
EditorBuildSettings.asset 342B
AudioManager.asset 328B
VFXManager.asset 273B
VersionControlSettings.asset 188B
TimeManager.asset 168B
XRSettings.asset 158B
NetworkManager.asset 151B
PresetManager.asset 120B
ClusterInputManager.asset 114B
DevAutoCompile.bat 81B
solo_navmesh.bin 19KB
solo_navmesh.bin 19KB
StartSceneConfigCategory.bytes 152B
StartSceneConfigCategory.bytes 152B
StartZoneConfigCategory.bytes 58B
AIConfigCategory.bytes 58B
AIConfigCategory.bytes 58B
StartZoneConfigCategory.bytes 58B
UnitConfigCategory.bytes 49B
UnitConfigCategory.bytes 49B
StartProcessConfigCategory.bytes 35B
StartProcessConfigCategory.bytes 35B
StartMachineConfigCategory.bytes 33B
StartMachineConfigCategory.bytes 33B
ikcp.c 32KB
cwrsync.cmd 2KB
rsyncd.conf 227B
.tmux.conf 78B
NLog.config 6KB
App.config 237B
SkeletonController.controller 4KB
CRecastHelper.cpp 15KB
MyTest.cpp 5KB
RecastDll.cpp 2KB
tools.cpp 1KB
MetaType.cs 91KB
RuntimeTypeModel.cs 85KB
TypeModel.cs 77KB
Matrix4x4.cs 72KB
ProtoReader.cs 56KB
CompilerContext.cs 54KB
ProtoWriter.cs 43KB
Quaternion.cs 41KB
ValueMember.cs 35KB
TypeSerializer.cs 33KB
JsonMapper.cs 32KB
BclHelpers.cs 30KB
NavMeshExporter.cs 27KB
JsonData.cs 27KB
Serializer.cs 27KB
ListDecorator.cs 24KB
DiscriminatedUnion.cs 24KB
Vector3.cs 24KB
Lexer.cs 23KB
Helpers.cs 23KB
Vector4.cs 22KB
ResourcesComponent.cs 21KB
Mathf.cs 21KB
KService.cs 20KB
Entity.cs 19KB
Extensible.cs 17KB
Vector2.cs 16KB
EventSystem.cs 15KB
JsonReader.cs 15KB
TupleSerializer.cs 14KB
Program.cs 13KB
RecastInterface.cs 13KB
ImmutableCollectionDecorator.cs 13KB
ArrayDecorator.cs 13KB
MapDecorator.cs 12KB
JsonWriter.cs 12KB
EnumSerializer.cs 11KB
KChannel.cs 11KB
UnityWebRequestRenewalAsync.cs 11KB
MoveComponentSystem.cs 10KB
DefaultValueDecorator.cs 10KB
ETTask.cs 9KB
共 1272 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13
资源评论
- FlByte2022-07-30这个就是ET框架
我只是学了一下编程
- 粉丝: 7783
- 资源: 34
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功