C#重写的热血传奇服务端近期持续迭代,主力项目集中在OpenMir2(mirbeta/gh_mirrors主线)与LyoMir2(AndrewChien系,dotnet8.0+AOT)两条线,均彻底抛弃传统Delphi单进程M2Server模型,转用.NET多服务进程+三层网关架构,兼容原版1.76客户端与Data/Map/Wav资源结构。
一、OpenMir2本次更新核心落点
•运行栈推进:主线程由.NET6/7向.NET8对齐,GameSrv工程开启AOT预编译、禁用ServerGC与并发GC、关闭分层编译、单文件发布裁剪,降低高并发下GC暂停。
-服务拆分固化:src目录下独立csproj包括DBSrv、LoginSrv、GameSrv、LoginGate、SelGate、GameGate、BotSrv、ChatSrv;DBSrv存储抽象接口IPlayDataStorage落地,MySQL(PlayRecordStorage)与MongoDB(PlayDataStorage)可插拔切换。
-网络层换血:弃用老Indy/IOCP封装,接入TouchSocket高性能TCP,自定义ServerPacketFixedHeaderDataHandlingAdapter做封包分帧,GameGate内部SessionContainer支持万级并发会话,ClientMessageWorkThread多线程并行解包。
-逻辑模块化解耦:GameSrv内M2Server核心库拆出SystemModule(ActorMgr、WorldEngine)、ScriptSystem(NPC/任务脚本)、CommandSystem(GM命令)、MarketSystem(拍卖/行会)、RobotSystem(机器人)、PlanesSystem、ChatSystem、EventLogSystem。
-脚本与数据兼容:Envir目录StdItems、Magic、Monster、MapQuest、Market_Def、QuestDiary沿用原版格式;NPC脚本引擎重写,支持原@段、#IF/#ACT语义,新增C#侧钩子扩展。
-构建交付:GitHubActions对master/dev分支打tagv*自动dotnetpublish出自包含包(DBSvr.zip/LoginSrv.zip/GameSrv.zip/LoginGate.zip/SelGate.zip/GameGate.zip),standard-version生成CHANGELOG,ConventionalCommits规范提交。
二、LyoMir2/LyoMir2Client并行更新
•服务端LyoMir2:dotnet8.0C#重写,基于淡抹夕阳06年代码结构迁移,保留Mir2原生命周期;配套LyoMirWorld(传奇世界C#端)、LyoConsole(多控制台一键启停管理器)。
-客户端LyoMir2Client:dotnet8.0+AOT,渲染层接VorticeDX11/D3D11,直接吃原版周年客户端Data/Map/Wav资源,双击exe进游戏;协议层MirClient.Protocol与原版LoginGate7000/SelGate7100/GameGate7200对齐。
-授权:GPL-3.0/MIT双线,配套资源与补丁走社区群分发,源码全公开。
三、三层网关数据流向(本次架构未变)
1.客户端TCP→LoginGate(7300段)→LoginSrv(5500段):账号校验、注册、列表下发。
2.选角阶段→SelGate(7200段)→DBSrv:角色增删查、装备/仓库/技能读取。
3.进图阶段→GameGate(7100段)→GameSrv(5600段):移动、战斗、技能、NPC、掉落、行会、攻城。
DBSrv落库MySQL/MongoDB,GameSrv不直连客户端,所有流量必须穿透网关,延续官服抗连接压力设计。
四、编译与启动顺序(更新后依旧)
•环境:.NETSDK6.0+(推荐8.0),MySQL8.0,Git,VS2022/Rider。
-拉源:gitclonehttps://gitcode.com/gh_mirrors/op/OpenMir2→开OpenMir2.sln→还原NuGet→编整解。
•建库:sql/下mir2_db.sql/mir2_account.sql/mir2_data.sql顺序入MySQL,库名mir2。
-改配置:各csproj输出目录appsettings.json写连接串、内网地址、端口;单机锁127.0.0.1。
•启动:DBSrv→LoginSrv→GameSrv→LoginGate→SelGate→GameGate,1.76纯净客户端Mir2.ini指向127.0.0.1:7000。
五、相较老Delphi端实质差异
•指针/结构体改为托管对象:PlayObject、MonsterObject、NormNpc走C#class+Span<T>热路径,去掉BDE/DBC2000依赖。
-多进程替代单M2Server:某网关崩不影响逻辑层,水平扩容只加GameGate实例。
•脚本系统双轨:原Envir文本脚本保留,新增C#Attribute路由命令(@Make/@Map/@MobPlace可重载)。
-跨平台:Linux下dotnetDBSrv.dll起服务,网关端口iptables放行即可,不再绑Windows消息循环。
六、同源其他活跃仓
•HeroM2(Gitee,yeningning):C#重制M2引擎,兼容原数据结构,多机负载/跨服切换实验中,木兰宽松许可。
-LyoMirWorld:传奇世界C#服务端分支,复用LyoMir2核心WorldEngine。
更新主仓地址:https://gitcode.com/gh_mirrors/op/OpenMir2、https://github.com/mirbeta/OpenMir2、AndrewChien/LyoMir2。
一、OpenMir2本次更新核心落点
•运行栈推进:主线程由.NET6/7向.NET8对齐,GameSrv工程开启AOT预编译、禁用ServerGC与并发GC、关闭分层编译、单文件发布裁剪,降低高并发下GC暂停。
-服务拆分固化:src目录下独立csproj包括DBSrv、LoginSrv、GameSrv、LoginGate、SelGate、GameGate、BotSrv、ChatSrv;DBSrv存储抽象接口IPlayDataStorage落地,MySQL(PlayRecordStorage)与MongoDB(PlayDataStorage)可插拔切换。
-网络层换血:弃用老Indy/IOCP封装,接入TouchSocket高性能TCP,自定义ServerPacketFixedHeaderDataHandlingAdapter做封包分帧,GameGate内部SessionContainer支持万级并发会话,ClientMessageWorkThread多线程并行解包。
-逻辑模块化解耦:GameSrv内M2Server核心库拆出SystemModule(ActorMgr、WorldEngine)、ScriptSystem(NPC/任务脚本)、CommandSystem(GM命令)、MarketSystem(拍卖/行会)、RobotSystem(机器人)、PlanesSystem、ChatSystem、EventLogSystem。
-脚本与数据兼容:Envir目录StdItems、Magic、Monster、MapQuest、Market_Def、QuestDiary沿用原版格式;NPC脚本引擎重写,支持原@段、#IF/#ACT语义,新增C#侧钩子扩展。
-构建交付:GitHubActions对master/dev分支打tagv*自动dotnetpublish出自包含包(DBSvr.zip/LoginSrv.zip/GameSrv.zip/LoginGate.zip/SelGate.zip/GameGate.zip),standard-version生成CHANGELOG,ConventionalCommits规范提交。
二、LyoMir2/LyoMir2Client并行更新
•服务端LyoMir2:dotnet8.0C#重写,基于淡抹夕阳06年代码结构迁移,保留Mir2原生命周期;配套LyoMirWorld(传奇世界C#端)、LyoConsole(多控制台一键启停管理器)。
-客户端LyoMir2Client:dotnet8.0+AOT,渲染层接VorticeDX11/D3D11,直接吃原版周年客户端Data/Map/Wav资源,双击exe进游戏;协议层MirClient.Protocol与原版LoginGate7000/SelGate7100/GameGate7200对齐。
-授权:GPL-3.0/MIT双线,配套资源与补丁走社区群分发,源码全公开。
三、三层网关数据流向(本次架构未变)
1.客户端TCP→LoginGate(7300段)→LoginSrv(5500段):账号校验、注册、列表下发。
2.选角阶段→SelGate(7200段)→DBSrv:角色增删查、装备/仓库/技能读取。
3.进图阶段→GameGate(7100段)→GameSrv(5600段):移动、战斗、技能、NPC、掉落、行会、攻城。
DBSrv落库MySQL/MongoDB,GameSrv不直连客户端,所有流量必须穿透网关,延续官服抗连接压力设计。
四、编译与启动顺序(更新后依旧)
•环境:.NETSDK6.0+(推荐8.0),MySQL8.0,Git,VS2022/Rider。
-拉源:gitclonehttps://gitcode.com/gh_mirrors/op/OpenMir2→开OpenMir2.sln→还原NuGet→编整解。
•建库:sql/下mir2_db.sql/mir2_account.sql/mir2_data.sql顺序入MySQL,库名mir2。
-改配置:各csproj输出目录appsettings.json写连接串、内网地址、端口;单机锁127.0.0.1。
•启动:DBSrv→LoginSrv→GameSrv→LoginGate→SelGate→GameGate,1.76纯净客户端Mir2.ini指向127.0.0.1:7000。
五、相较老Delphi端实质差异
•指针/结构体改为托管对象:PlayObject、MonsterObject、NormNpc走C#class+Span<T>热路径,去掉BDE/DBC2000依赖。
-多进程替代单M2Server:某网关崩不影响逻辑层,水平扩容只加GameGate实例。
•脚本系统双轨:原Envir文本脚本保留,新增C#Attribute路由命令(@Make/@Map/@MobPlace可重载)。
-跨平台:Linux下dotnetDBSrv.dll起服务,网关端口iptables放行即可,不再绑Windows消息循环。
六、同源其他活跃仓
•HeroM2(Gitee,yeningning):C#重制M2引擎,兼容原数据结构,多机负载/跨服切换实验中,木兰宽松许可。
-LyoMirWorld:传奇世界C#服务端分支,复用LyoMir2核心WorldEngine。
更新主仓地址:https://gitcode.com/gh_mirrors/op/OpenMir2、https://github.com/mirbeta/OpenMir2、AndrewChien/LyoMir2。

