news 2026/9/17 11:22:20

ET 框架三步快速搭建游戏服务器:Unity 双端 C 开发完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ET 框架三步快速搭建游戏服务器:Unity 双端 C 开发完整指南

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 框架快速上手:三步跑起第一次调试

  1. 环境准备

    • 安装 Unity 2022.3.62 与 .NET 8
    • 安装 Rider 2024.3,并设为 Unity 默认脚本编辑器
    • 保持网络畅通,nuget 与 Unity 包拉不下来会导致编译报错
  2. 获取项目

    • 克隆仓库:git clone https://gitcode.com/GitHub_Trending/et/ET
    • 在项目根目录执行pwsh ./Scripts/Initialize-Project.ps1完成初始化
  3. 跑起第一次调试

    • 用 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),仅供参考

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

MediaCodec硬解码+OpenGL渲染:Android MP4录制完整管线解析

/* 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 11:19:58

无人机飞控底层原理:四元数解算与PID控制C语言实现

简介:本资源是一份面向无人机系统开发者、飞控算法工程师及航空航天专业学生的理论基础学习材料,聚焦刚体动力学与飞行控制所需的数学工具链。内容系统梳理坐标变换、矢量叉乘、哥氏定理、达朗贝尔-欧拉定理、定点/一般运动刚体的运动学与动力学方程&…

作者头像 李华
网站建设 2026/9/17 11:18:17

PyTorch 梯度检查点:用计算换显存,破解大模型训练 OOM

显存不够这件事,几乎所有从单卡 demo 走向真实规模训练的人都撞过。我第一次遇到是在一台单卡机器上跑二十来层的 Transformer,参数量明明不到 1G,nvidia-smi却直接 OOM,报错栈里全是 backward 相关的节点。当时我盯着屏幕纳闷了很…

作者头像 李华
网站建设 2026/9/17 11:17:15

五子棋机器人实战:从坐标标定到AI博弈全解析

简介:智能人机对弈五子棋机器人设计相关学术论文PDF,内容基于国家自然科学基金项目,面向机器人、嵌入式及AI方向的学习者,提供一套低成本、软硬件一体化的五子棋人机对战实现方案。资源仅含1个PDF文件,压缩包大小2.55M…

作者头像 李华
网站建设 2026/9/17 11:14:35

OpenMontage:面向AI智能体的声明式任务编排引擎

1. 项目概述:OpenMontage 不是视频剪辑软件,而是一套面向 AI 原生工作流的“智能编排引擎”OpenMontage 这个名字一出来,很多人第一反应是“哦,又一个开源视频编辑工具”,毕竟 montage 在影视行业里就是“剪辑、拼接”…

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

数据治理考核体系怎么建?从指标设计到落地实操全解析

简介:一份面向企业数据治理负责人、信息化管理人员及数字化转型项目团队的绩效管理建设方案PPT,系统梳理数据治理考核体系构建、考核指标与权重设计、考核方法与流程、绩效管理体系融合、员工数据治理能力提升以及激励约束机制。方案从目标原则出发&…

作者头像 李华