news 2026/9/17 13:19:58

ET 游戏框架快速上手:用一份 C 代码库同时构建 Unity 客户端和游戏服务端

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ET 游戏框架快速上手:用一份 C 代码库同时构建 Unity 客户端和游戏服务端

ET 游戏框架快速上手:用一份 C# 代码库同时构建 Unity 客户端和游戏服务端

【免费下载链接】ETUnity3D Client And C# Server Framework项目地址: https://gitcode.com/GitHub_Trending/et/ET

ET 是一个面向 Unity3D 客户端与 C# .NET 服务端的双端游戏框架,客户端和服务端共享同一套代码。官方基准测试中,单机网络层完成 100 万次 Ping-Pong 消息平均只花约 4 秒,折合每秒收发约 20 万条。如果你是独立开发者或小团队,打算做带服务端的在线游戏(尤其是 MMO),这是一个开箱就能搭起完整链路的候选方案。

图:ET9 起功能拆分为独立 Package(见 Packages/ 目录),包注册表可在 Unity 编辑器内配置

做带服务端的游戏,通常会撞上这两堵墙

第一堵墙是协议与逻辑的双份维护。客户端和服务端各写一套,消息结构在两边各定义一遍,改一个字段要改两处,时间久了两端必然漂移,联调变成找茬游戏。

第二堵墙是分布式服务端的调试成本。传统做法要启动一堆进程(登录服、网关服、战斗服……),断点根本没法打,开发基本靠打 log 猜。功能以后想从中心服拆到独立进程,又是一大轮代码迁移。

ET 的设计就是冲着这两点去的:双端共享代码消除第一堵墙,"组件挂载"式的进程设计消除第二堵墙。

用 ET 做在线游戏,你能拿到这几样东西

双端共享同一个 C# 代码库

网络消息、逻辑层代码只写一遍,客户端和服务端直接引用同一份文件。新增一条协议改一个地方就够了,两端协议天然一致。

单进程开发,发布时再拆多进程

服务端所有功能都是组件,开发时可以把全部组件挂进一个进程,一个进程就是整组分布式服务器,可以随便单步调试(N 变 1)。发布时换一份配置,按进程拆分组件即可(1 变 N),拆服基本不改代码。

纤程(Fiber)让多核利用不改变写法

纤程就像进程里轻量级的任务,比线程便宜得多,客户端和服务端都能创建多个纤程并行跑网络、寻路、逻辑。开发时你写的还是单线程代码,多核收益是架构自动给的。

KCP 可靠 UDP 加 MemoryPack 序列化,收发 0GC

网络层是纯 C# 实现的 KCP,底层还能切 TCP/WebSocket,UDP 联不通时运行时动态切换、玩家不掉线;序列化用 MemoryPack,网络收发不产生 GC。竞技类游戏丢包、闪断场景下比 TCP 更稳。

F7 热重载,服务端不停服更新

开发中改完代码按 F7 立即生效,不用重启客户端或服务端;线上服务端也能动态更新逻辑,省掉停机维护窗口。

机器人压测:复用客户端逻辑代码

机器人直接共享客户端逻辑层代码,官方案例里 4 台 24 核机器模拟 1 万人跑任务,上线前把服务端压力测一遍。

测试用例就是完整游戏环境

每个单元测试拉起一整条客户端加服务端的真实交互(例如起 5 个机器人客户端测组队),不用 mock 接口。这也是 ET10 主打的 AI 协作开发基础:让 AI 写完逻辑,再让它写测试跑通即可验证。

帧同步与状态同步的 demo 都有

仓库自带预测回滚帧同步(cn.etetet.lockstep)和状态同步(cn.etetet.statesync)两套可运行 demo,按你游戏的玩法选同步模型,不用自己从零搭。

从零到跑通状态同步 Demo 的 5 步

环境准备(清单):

  • Unity 2022.3.62(锁定版本,新手不要换)
  • Rider(最新版)与 .NET 8(Windows 可经 Visual Studio 安装,macOS 用 Homebrew)
  • 全程保持稳定代理,否则 Unity 包与 NuGet 包下载会失败

运行步骤:

  1. 克隆全新工程(官方反复强调必须全新克隆,别拿旧工程改):git clone https://gitcode.com/GitHub_Trending/et/ET
  2. 项目根目录执行初始化:pwsh ./Scripts/Initialize-Project.ps1
  3. Unity Hub 打开 ET 目录;Edit → Preferences → External Tools 里外部编辑器选 Rider,再 Assets → Open C# Project 打开 ET.sln
  4. 在 Rider 中完整编译 ET.sln(保持代理开启)
  5. 双击Packages/cn.etetet.statesync/Scenes/Init场景点 Play,客户端连上自带服务端即可登录;想单独起服务端,用 Unity 菜单 ET → Loader → Server Tools → Start Server(详见 运行指南)

看数字:性能与规模的三个佐证

  • 官方 Benchmark:100 万次 Ping-Pong 约 4 秒跑完,平均每秒收发 20 万条消息,README 里附了自检方法(Unity 菜单 ServerTools → select Benchmark → Start Watcher)。
  • 商业 MMO《千古风流》:64 核 128G 的单服单物理机做到 1.5 万在线,100 人团队 2 年开发完成;官方称 Release 版优化后还有翻倍空间。
  • 规模下限同样被验证:README 的商业项目列表里,神选誓约、新生、魔力回忆等多款 MMO 由 1 个人基于 ET 开发并上线。

当前主版本为 ET10,锁定的 Unity 版本是 2022.3.62,配套 .NET 8。

ET 适合谁,谁可以绕道

适合:做 MMO 或任何需要长连接服务端的游戏、希望一人或小队同时搞定前后端、愿意接受"框架规定架构"的 C# 团队——它的编译期分析器会强制你写出符合规范的代码,这既是约束也是护栏。

不适合:纯单机客户端游戏(服务端、网络、纤程这套机制对你只是负担);团队主力语言不是 C#;以及不愿按指定工具链(Rider + .NET 8 + 固定 Unity 版本)走的开发者。另外注意许可:开源版使用 ET License,仅限学习,商业使用需要购买商业许可(README 中标价 4999)。

现在就动手

克隆仓库,通读 Book/1.1Running Guide.md,然后按上面 5 步把状态同步 Demo 跑起来——第一个能登录的客户端出现之前,别急着讨论架构。

【免费下载链接】ETUnity3D Client And C# Server Framework项目地址: https://gitcode.com/GitHub_Trending/et/ET

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 13:19:42

海康工业相机硬件触发+YOLOv5:产线实时检测实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 13:17:23

机械臂仿真链路:从URDF到Simscape再到S-Function的完整实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 13:17:20

RoPE复数形式全解:旋转位置编码的几何意义与注意力分数推导

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 13:17:03

ORB-SLAM2在线稠密点云构建实战:原理、选型与实现

跑通 ORB-SLAM2 的稀疏地图之后,我们都会面临同一个尴尬:定位精度看着挺漂亮,可把点云导出来给朋友看,对方一句“这哪像房间,不就是一堆散点吗”直接把你噎住。那个屏幕上飘着的稀疏特征点地图,作为 SLAM 的…

作者头像 李华
网站建设 2026/9/17 13:16:39

高中概率三大核心:条件概率、独立性与二项分布的结构化训练

简介:本资源是一份面向高中数学教学与复习的PPT学习教案,聚焦概率论核心模块,专为高二、高三学生及一线教师设计,系统梳理条件概率、事件的相互独立性与二项分布三大难点,助力突破高考概率综合题。教案共43页&#xff…

作者头像 李华