Unity ET框架小记

前言

之前用过一段时间Mirror,它是一个服务器客户端一体的框架,通过给方法打上特定注解,来控制该方法运行在客户端还是服务器上(Unity官方已弃用的UNet设计思路一致)。这是它的优点,也是它的缺点,见仁见智吧。抛开这一点不谈,如果是客户端做主机那还好,但如果要打包为Deplicate Server ,在云服务器部署运行,Mirror的性能就比较差了。

我需要一个商业级的游戏服务端框架,它最好开源易用、性能良好且已被各种项目验证。ET框架看起来符合这个要求。

ET框架的教程网上已经很多了,这里只记录一些我觉得比较重要的点。

项目初始化

每次新开项目总忘记初始化的步骤,索性在此按步骤顺序记录下来,方便日后查阅。

先使用Unity编辑器打开ET框架Unity文件夹,进入Preference,编译器选VS2022Generate .csproj files for全取消勾选。进入Init场景,右键Project面板选Open C# Project,等待VS加载完毕后即可。
返回ET框架目录,打开Client-Server.slnVS从顶部选择工具->选项->适用于Unity的工具->将“禁止完整生成项目”改为False。看到项目结构列表,先右键Unity.Mono生成,再选中解决方案生成。

初始化完成。

ET服务端架构

ET是一个单线程多进程的框架,因为它的多进程特点,方便做分布式架构和负载均衡。

由于它的组件化和多进程的特点,可以任意组合以实现第一、第二或第三代游戏服务器架构。

Unity ET框架小记

ET框架中的ECS编程原则

实体即组件,组件即实体。
如要编写一个新的实体或者组件,绝不继承除Entity之外的任何父类。
绝不使用任何的虚函数,使用逻辑分发替代。
ModelModelView只存放实体和组件的数据字段声明,如非必要绝不放任何逻辑函数。
HotfixHotfixView中只保留纯逻辑函数,也就是使用静态类和扩展方法编写的System,且绝不允
许存在任何数据字段。
ModelHotfix中绝不允许出现跟Unity3d引擎相关的游戏对象类和调用相关API函数。
如实体或组件有数据字段声明必须编写相关生命周期函数,以防实体对象池回收再利用导致逻辑错误。

为了避免OOP中冗长的继承链导致代码难以扩展,ET使用ECS架构,使用各个实体的组合实现对应逻辑。组合大于继承在这里体现得很好。

至于ET框架的其他部分,如:EventSystemETTaskExcel配表、Protobuf协议生成、Actor模型等等,这篇博客总结得都差不多了,故不在此记录。

参考资料

关于ET的设计理念和核心思想,可以查看作者的ET Book,指路->ET/Book at master · egametang/ET (github.com)。

通过ET7实现双端游戏开发(一)之入坑 – 知乎 (zhihu.com)

__EOF__

Unity ET框架小记
本文作者:OtusScops
本文链接:https://www.cnblogs.com/OtusScops/p/17814155.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...