此系列文章逐个内容讲解ET8.1的新特性。
ET8.1 发布,带来以下新特性:
- 多线程多进程架构,架构更加灵活强大,多线程设计详细内容请看多线程设计课程
- 抽象出纤程(Fiber)的概念,类似erlang的进程,非常轻松的创建多个纤程,利用多核,仍然是单线程开发的体验
- 纤程调度: 主线程,线程池,每个纤程一个线程,3种调度方式
- Fiber间通信的Actor消息机制
- Entity方面,domain改成IScene,只要实现IScene接口,Entity就是domain,这样定义domain更加自由
- 预测回滚的帧同步实现 想详细了解可以看帧同步课程
- protobuf换成了memorypack,实现无gc的网络
- 纯C#版的kcp库,性能非常强,由sj提交
- 热更dll改成用ide编译,更加方便,也可以Unity编辑器上按F6进行代码编译运行
- sj利用source generater实现了代码自动模板功能,目前可以自动生成System类,开发者只需要定义Awake Update静态方法即可,特别方便
- sj开发了分析器,实现了EntitySystemOf,根据entity接口一键生成对应的system方法
- 客户端利用fiber实现网络独立线程(demo已实现),甚至可以把逻辑跟表现使用独立的纤程,更好的利用多核
- 帧同步demo直接利用纤程创建房间,更加方便
- 纯c#版寻路dotrecast,至此ET已经完全C#化,没有任何cpp代码了
- kcp跟软路由底层同时支持tcp跟websocket,当udp联不通的情况下,可以切换成tcp Websocket,并且支持运行时动态切换,玩家不掉线!
- 集成了sj的非托管容器库,性能爆炸
选用ET开发游戏的18个理由
- 多进程多线程Actor架构,客户端跟服务端都可以轻松创建纤程(fiber)利用多核,比如客户端网络一个纤程,寻路一个纤程,帧同步逻辑层一个纤程,表现层一个纤程
- async await协程同步代码编写,避免回调地狱
- 0GC消耗,超强的MemoryPack序列化, 超强的网络层性能
- kcp支持,网络响应非常迅速,并且闪断wifi 4g都不会导致掉线,做竞技游戏必备
- kcp底层可以使用tcp udp Websocket协议,当udp联不通的情况下,可以切换成tcp Websocket,并且支持运行时动态切换,玩家不掉线!
- 软路由防攻击设计,买些垃圾主机就可以防住黑客攻击,比买高防省钱多了,并且用户不会掉线
- 双端C#开发,前后端共享代码,C#本身性能极强,仅次于CPP,不需要学一些乱起八糟的语言,很多独立游戏开发者,一个人就能用ET开发mmorpg游戏
- 强大的编译分析器,编译器就能帮助大家写出正确的ET风格的代码
- 客户端hybridclr热更新支持
- 客户端服务端均支持运行时热重载,客户端服务端不需要关闭进程就能修改代码,大大提升了开发效率以及运营效率
- 完善的demo,源码带有状态同步跟预测回滚的帧同步demo
- 完善的机器人开发机制,机器人直接共享客户端逻辑代码,减少95%机器人开发工作量,接入ai机器人非常轻松。大规模机器人压测,轻而易举
- 强大的ai开发机制,比行为树更加容易
- 强大的单元测试开发机制,每个单元测试都是整个游戏环境,不用搞mock隔离,开发起来非常轻松
- 优美的程序结构,数据跟方法完全分离
- all in one的开发体验,开发时只需要启动unity,发布的时候又可以单独发布服务端,并且可以跨windows跟linux平台
- 客户端服务端数据开发期完全可视化,开启ENABLE_VIEW宏即可在Unity Hierarchy面板中看到客户端跟服务端的所有的Entity对象以及字段的内容
- WebGL以及微信小游戏支持,有ET8的webgl版本,开发体验跟ET8完全一致,无缝对接ET8的服务器
ET开源地址地址:egametang/ET: Unity3D Client And C# Server Framework (github.com) qq群:474643097