ET 框架三步快速搭建游戏服务器:Unity 双端 C# 开发完整指南
【免费下载链接】ETUnity3D Client And C# Server Framework项目地址: https://gitcode.com/GitHub_Trending/et/ET
100 万条 Ping Pong 消息约 4 秒处理完,这是 ET 框架测得的网络吞吐数据。ET 是一个面向 Unity 的 C# 游戏开发框架,客户端与游戏服务器共用同一套工程,先在本地跑通调试闭环,再按配置扩展成分布式进程。
为什么数据与逻辑分离是第一性原理:读懂"一切皆实体"
在 ET 里,玩家、物品、活动、场景统统是Entity(实体)。通用字段直接作为成员写在实体上,比如所有物品都有的配置 ID、数量、等级;不够通用的数据则封装成组件,挂到父实体身上。
这样数据与逻辑就彻底分开:Entity 只是纯数据,逻辑写在扩展方法里,由数据变化驱动,通过 Update 检测或事件订阅来触发。做一个新功能时,不用纠结"该放哪个类",挂一个新组件到对应实体即可。
用公司组织结构来类比:老板直接管几百人,他认不全所有人,也挑不出合适的人;如果老板下面设几个经理,经理下面设主管,主管再管工人,找人就变得容易。ET 的实体树是同样的思路——顶层是 Game.Scene,各模块数据分层挂在下面,功能越多结构反而越清晰。更完整的规则参见 Book/3.3一切皆实体.md。
ET 框架快速上手:三步跑起第一次调试
环境准备
- 安装 Unity 2022.3.62 与 .NET 8
- 安装 Rider 2024.3,并设为 Unity 默认脚本编辑器
- 保持网络畅通,nuget 与 Unity 包拉不下来会导致编译报错
获取项目
- 克隆仓库:
git clone https://gitcode.com/GitHub_Trending/et/ET - 在项目根目录执行
pwsh ./Scripts/Initialize-Project.ps1完成初始化
- 克隆仓库:
跑起第一次调试
- 用 Unity Hub 打开 ET 目录,在 Preferences → External Tools 中把 Rider 选为外部脚本编辑器
- 双击 Packages/cn.etetet.statesync/Scenes/Init.unity,点 Play,客户端与服务器在同一进程内运行
- 想单独起服务端,走菜单 ET → Loader → Server Tools → Start Server(Single Process),并把 GlobalConfig 的 CodeMode 改成 Client
每一步的细节和常见坑(中文路径、服务端工程未编译、Unity 版本不匹配)都写在 Book/1.1运行指南.md 里,按清单过一遍即可。
可自行验证的硬核指标:吞吐、速率与热重载快捷键
- 4 秒:100 万次 Ping Pong 消息的平均耗时,复现方法官方文档给了入口——Unity Menu → Server Tools → Benchmark,跑完看 Logs 目录的 Debug 日志即可
- 每秒 20 万条消息:同一轮测试的平均消息速率,对应主流游戏主线程的收发负载,留出了余量
- F7:运行中修改代码后,按 F6 编译再按 F7(或菜单 ET → Reload),客户端与服务端进程都不重启,改完即生效
这三个数字都不是纸面宣传。克隆工程后自己跑一遍 Benchmark,日志里的benchmark count递增序列就是原始凭证。
不同团队规模的商业项目:从百人团队到个人开发者
官方仓库的 README 列了二十余个上线项目,取三档规模的代表:
- 百人级团队:千古风流,100 人团队用 2 年完成的大型 MMO,64 核 128G 内存的单物理机承载 1.5 万在线
- 双人团队:危境,一个技术加一个策划开发的 MMO
- 个人开发者:魔力回忆,由个人开发者独立完成的魔力宝贝风格游戏
同一套框架撑住这三种规模,差别主要在于功能取舍。开发期所有内容跑在单个 Unity 进程里,发布时按配置拆成多进程,代码本身不用为此改写。
Book 文档按学习深度分层:语言基础、核心机制、分布式架构
语言基础层(读 C# 异步的前提):
- Book/2.1CSharp的协程.md:async/await 如何让异步调用写成同步的样子
- Book/2.2更好的协程.md:ETTask 如何免去手动传递 CancellationToken
- Book/2.3单线程异步.md:服务端单线程异步调度的实现方式
核心机制层(框架本体):
- Book/3.3一切皆实体.md:实体与组件的树状组织规则
- Book/3.4事件机制EventSystem.md:数据驱动逻辑的事件订阅机制
- Book/4.1组件式设计.md:组件设计如何做到进程"N 变 1、1 变 N"
分布式架构层(上规模前必读):
- Book/5.4Actor模型.md:actor 消息机制如何让你只凭实体 ID 发消息,不用关心实体在哪台机器
- Book/5.5Actor Location-ZH.md:位置服务如何帮消息找到实体所在位置
ET 框架的适用面从独立开发 MMO 的个人开发者,到需要分布式服务端架构的百人团队。文档、Demo 与 Package 体系都在仓库里公开,跑通第一个本地闭环后,就可以着手写自己的游戏逻辑。
【免费下载链接】ETUnity3D Client And C# Server Framework项目地址: https://gitcode.com/GitHub_Trending/et/ET
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考