Unity ET框架小记
前言
之前用过一段时间Mirror
,它是一个服务器客户端一体的框架,通过给方法打上特定注解,来控制该方法运行在客户端还是服务器上(Unity
官方已弃用的UNet
设计思路一致)。这是它的优点,也是它的缺点,见仁见智吧。抛开这一点不谈,如果是客户端做主机那还好,但如果要打包为Deplicate Server
,在云服务器部署运行,Mirror
的性能就比较差了。
我需要一个商业级的游戏服务端框架,它最好开源易用、性能良好且已被各种项目验证。ET
框架看起来符合这个要求。
ET
框架的教程网上已经很多了,这里只记录一些我觉得比较重要的点。
项目初始化
每次新开项目总忘记初始化的步骤,索性在此按步骤顺序记录下来,方便日后查阅。
- 先使用
Unity
编辑器打开ET
框架Unity
文件夹,进入Preference
,编译器选VS2022
,Generate .csproj files for
全取消勾选。进入Init
场景,右键Project
面板选Open C# Project
,等待VS
加载完毕后即可。 - 返回
ET
框架目录,打开Client-Server.sln
,VS
从顶部选择工具->选项->适用于Unity
的工具->将“禁止完整生成项目”改为False
。看到项目结构列表,先右键Unity.Mono
生成,再选中解决方案生成。
初始化完成。
ET服务端架构
ET
是一个单线程多进程的框架,因为它的多进程特点,方便做分布式架构和负载均衡。
由于它的组件化和多进程的特点,可以任意组合以实现第一、第二或第三代游戏服务器架构。
ET框架中的ECS编程原则
- 实体即组件,组件即实体。
- 如要编写一个新的实体或者组件,绝不继承除
Entity
之外的任何父类。 - 绝不使用任何的虚函数,使用逻辑分发替代。
Model
和ModelView
只存放实体和组件的数据字段声明,如非必要绝不放任何逻辑函数。Hotfix
和HotfixView
中只保留纯逻辑函数,也就是使用静态类和扩展方法编写的System
,且绝不允
许存在任何数据字段。Model
和Hotfix
中绝不允许出现跟Unity3d
引擎相关的游戏对象类和调用相关API
函数。- 如实体或组件有数据字段声明必须编写相关生命周期函数,以防实体对象池回收再利用导致逻辑错误。
为了避免OOP
中冗长的继承链导致代码难以扩展,ET
使用ECS
架构,使用各个实体的组合实现对应逻辑。组合大于继承在这里体现得很好。
至于ET
框架的其他部分,如:EventSystem
、ETTask
、Excel
配表、Protobuf
协议生成、Actor
模型等等,这篇博客总结得都差不多了,故不在此记录。
参考资料
关于ET
的设计理念和核心思想,可以查看作者的ET Book
,指路->ET/Book at master · egametang/ET (github.com)。
通过ET7实现双端游戏开发(一)之入坑 - 知乎 (zhihu.com)
__EOF__

本文作者:OtusScops
本文链接:https://www.cnblogs.com/OtusScops/p/17814155.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/OtusScops/p/17814155.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!