ET Framework
相关资料
egametang/ET: Unity3D Client And C# Server Framework
egametang/ET: Unity3D Client And C# Server Framework
01 ET 框架以及课程介绍
什么是 ET 框架
• ET框架是一个开源的双端全栈式网络游戏开发框架。 • ET框架的服务端部分则是基于.net(.net core)开发的多进程分布式高性能游戏服务端。 • ET框架的客户端部分则是基于Unity 3D游戏引擎。 • 前后端都使用的是C#编程语言,可以轻松地做到前后端代码共用。
特色
• 商业网络游戏双端C#全栈式开发体验 • 服务器端实现了不停服动态热重载,客户端则提供开发时热重载与C#逻辑热更新 • ECS组件式开发,提供协程支持,使用异步变同步语法,逻辑连贯,逃离回调地狱 • 服务器端采用功能拆分式设计,单进程开发,多进程部署,降低调式门槛 • 多进程分布式服务器架构,提供位置透明的Actor消息机制,为大型商业项目保驾护航 • 提供易于编写的机器人框架,测试框架,AI框架,对于商业项目的性能有直观的把握 • 基于快速可靠的KCP协议,强劲且稳定的网络传输性能,更低的服务器性能消耗 • 经过完整的大型MMORPG的上线商业项目的锤炼与验证(前后端均使用ET框架进行开发)
02 环境安装
.Net SDK 6.0
cmd => dotnet --version
vs
.net 桌面开发,通用 windows 平台开发,Unity 游戏开发
rider
Mongodb
https://www.mongodb.com/try/download/community 不需要可视化软件 环境变量 > 系统变量 > Path > 添加 C:\Program Files\MongoDB\Server\5.0\bin cmd => mongo
robo3t
https://robomongo.org/
先打开 Unity 项目
删掉 TestRunner
新建 StreamingAssets
IL2Cpp 改成 Mono
网络通信
游戏服务器端业务逻辑代码不能写在 Get 网关中
osi 模型,网络通信七层协议 实际使用网络通信 四层模型,TCP/IP 协议
Socket 是应用程序调用操作系统的 API,用来调用 TCP/IP 协议的
Session.id -> channel -> socket 向 socket 写入数据,socket 调用 TCP/IP 传输数据
游戏服务器端也有 Session
Socket 通信模型
游戏服务器端创建-Socket对象,绑定和监听IP地址,端口
游戏服务器端调用Accept方法监听和等待客户端的连接请
游戏客户端创建Scoekt对象,通过游戏服务器的IP地址与
游戏服务器端收到游戏客户端的连接请求,创建出一个专进行读/写操作,也就是通过Socket完成网络数据的相互通信
游戏服务器端与游戏客户端,都关闭数据输入输出流,关
多进程和分布式
客户端连接上之后断开原 Section 创建新的网关 Section
第一代服务器架构
单台物理机,单进程,单线程,无阻塞 socket
每隔一秒数据同步更新
文本存储数据,需要 IO 操作
第二代服务器架构
分区分服,每个区服都是一个单独的进程,互不干涉,
数据库软件
第三代服务器架构
三层架构
增加 Gate 网关进程在服务器进程和玩家之间
游戏服务器进程不再管理 Socket 连接,减少 IO 读写时间。
同样的原因使用游戏数据库代理进程,就是缓存
游戏服务器进程专门快速处理逻辑
第三代服务器架构 (无缝地图)
游戏服务器进程进行拆分
场景服务器
玩家连接
角色控制
场景相关的业务逻辑
外围服务器
不依靠游戏地图系统
聊天
背包
账号
进程间可以进行相互通信
网关进程合为一个
ET 服务器 Demo 的登录流程
ET 框架,组件式架构
当前总结
服务端框架结构复杂,我应该是不需要网关或进程协同,只需要每个房间一个通用的场景服务端进程
为了热更放弃 Unity 的编译系统,现在不需要考虑热更新
虚假的 ECS 结构,实体和组件成了同一个东西,使用托管内存进行排布。
具有 ECS 在网络同步方面的好处,但没有 ECS 在客户端进行逻辑更新时快速的性能。
最后更新于