ET框架完整指南单进程模拟整套分布式服务器3步跑通状态同步Demo【免费下载链接】ETUnity3D Client And C# Server Framework项目地址: https://gitcode.com/GitHub_Trending/et/ETET框架是一个Unity 3D客户端加C#服务端的双端游戏框架专为想做分布式游戏服务器、又不想被多进程调试和环境割裂拖住的人设计。适合独立开发网游或想学服务端架构的新手本文带你从环境准备走到跑通Demo。 先说两个真实痛点第一次做分布式服务端时你大概率会撞上两堵墙第一堵墙是调试。登录、网关、战斗各起一个进程进程一多就没法单步调试定位错误只能在一堆日志里翻。第二堵墙是环境。你在Windows上写代码上线却部署到Linux两边行为不一致每次发布都要重新验证一遍。ET的解法是开发阶段把所有服务器组件挂进同一个进程。这一个进程同时身兼登录、网关和战斗跨进程消息的调试只需要在这一个进程里打断点。等发布时改一份多进程配置就能拆开部署代码一行不动。 设计思路像拼积木一样拼服务器拿电脑类比ET里的每个组件都像内存条或显卡每类服务器进程启动时按自己的角色决定挂载哪套配件。实体可以挂零件的数据容器原理一句话任何继承Entity的类都能挂载组件组件只存数据逻辑方法挂在扩展方法里。对你意味着什么玩家不是一个巨型类而是网络组件属性组件技能组件的组合。加新功能时挂一个新组件即可客户端和服务端还共享同一套组件定义协议文件只写一遍。单进程1变N的部署自由原理一句话服务器类型由挂载的组件组合决定进程边界只是部署期的事。对你意味着什么开发聊天功能时不必纠结它以后归哪个服务器管先在单进程里写完跑通真要拆成独立服务器时改发布配置里的组件挂载即可。Actor消息知道ID就能找到人原理一句话挂上MailBoxComponent的实体就是Actor任何进程拿着它的ID即可发消息位置不明时框架先查位置服务器再路由。对你意味着什么远程调用写起来和本地调用一样配合async/await整条分布式链路可以写成一条直线逻辑不用拆回调。 从零到跑通三步时间线第一步环境准备清单IDERider 2024.3及以上官方明确不建议新手用VS.NET 8 SDKWindows走Visual Studio安装Mac用Homebrew装.NET 8和PowerShell 7Unity 2022.3.62f3当前分支只适配这一版ProjectSettings/ProjectVersion.txt可查证全程保持网络可用否则Unity包和NuGet包下载失败git clone https://gitcode.com/GitHub_Trending/et/ET打开Unity Hub选Open加载ET文件夹在Edit - Preferences - External Tools把External Script Editor设为RiderGenerate .csproj files for勾选前两项。第二步初始化项目在项目根目录执行初始化脚本它会完成包的安装与工程准备pwsh ./Scripts/Initialize-Project.ps1Demo分状态同步和帧同步两条线按需安装对应包运行指南Book/1.1Running Guide.md里有具体步骤。随后通过Assets - Open C# Project打开ET.sln并整体编译首次打开若报il2cpp相关错误先确认已安装IL2CPP。第三步运行验证双击Init场景点Play客户端和服务端同进程运行直接进入Demo世界。想体验服务端独立启动先停止PlayUnity菜单打开ET - Loader - Server Tools - Start Server (Single Process)。注意Unity要以管理员身份启动服务端要开HTTP端口再把cn.etetet.loader/Resources/GlobalConfig里的CodeMode改成Client客户端照常登录。连不上时去ET/Logs目录看Error日志。⚡ 三个进阶能力热重载改完马上验证场景改了一行伤害逻辑重启客户端加服务端要等好几分钟验证一次成本高。方案组件只存字段不写方法逻辑全放热更DLL改完编译后按F7重载客户端和服务端都支持。收益验证逻辑不停进程线上运营期也能不停服推逻辑补丁。可靠UDP为竞技游戏准备场景TCP链路丢包5%MOBA操作就已经明显卡顿。方案框架支持KCP、ENet这类可靠UDPUDP不通时KCP底层还能动态切到tcp或Websocket玩家不掉线。收益官方对比测试中ENet在丢包20%时依然可玩竞技类玩法的网络下限被抬高。机器人压测复用你自己的客户端场景上线前想压一万连接单独写一套假客户端工作量太大。方案机器人直接共享客户端逻辑层代码几行代码就能登录游戏并执行和真实玩家一样的行为。收益商业项目曾用4台24核机器模拟1万人做任务压测成本被压到最低。 真实负载一台64核机器扛住1.5万在线以商业MMO《千古风流》为例64核128G内存的单台物理机支撑1.5万在线。线上出于生态考虑限流到6000人此时CPU占用约30%且为了堆栈行号可读线上跑的是Debug版。按官方口径换成Release并开启优化性能可翻倍单机上限到3万在线该项目上线5个月保持稳定。数字是客观记录优化空间也同样摆在那里。❓ 常见问题 FAQ问1编译报MemoryPack缺失或NuGet下载失败九成是网络问题开启代理后重新拉包并整体编译ET.sln。另外两个高频原因路径含中文、Unity版本不是2022.3.62。问2TCP还是KCP怎么选普通网游用TCP即可对丢包敏感、偏竞技的项目选KCP或ENet运营商把UDP堵死时KCP可运行时切tcp/Websocket兜底玩家无感知。问3热重载的原理是什么和服务端热更是一回事吗热重载本质是重新加载DLL并重建方法绑定进程不用停开发期改完按F7即可服务端热更依托组件只存数据、方法进扩展DLL的设计运营期可整包替换逻辑。问4为什么独立启动服务端要管理员权限服务端需要绑定HTTP端口Windows普通权限会直接拒绝。右键Unity Hub选以管理员身份运行若报10037检查CodeMode是否已切到Client并翻ET/Logs里的Error日志。 下一步读源码理解组件设计Book/4.1组件式设计.md吃透分布式消息机制Book/5.4Actor模型.md看AI框架怎么落地Book/6.1AI框架.md现在就clone仓库、跑通StateSync Demo吧——在单进程里打断点看一条消息走完全程你马上会明白这套框架省掉了多少调试时间。【免费下载链接】ETUnity3D Client And C# Server Framework项目地址: https://gitcode.com/GitHub_Trending/et/ET创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考