当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

OpenMir2开源传奇服务器从零搭建教程:环境编译MySQL启动网关客户端对接

热度:
OpenMir2是基于C#与.NET重构的开源传奇2服务端框架,兼容1.76客户端,采用分布式多服务架构,替代老式Hero/Blue引擎的DBC2000+BDE方案,数据层走MySQL,逻辑层拆成独立进程。下面按实际部署顺序走一遍完整链路。

一、环境清单与系统要求
•操作系统:Windows10/11、WindowsServer、Linux(Ubuntu20.04+)均可,跨平台由.NET承载。

•运行时:.NETSDK6.0或8.0(项目现主干目标框架为.NET8)。

-数据库:MySQL5.7+/8.0+,或MariaDB;可选MongoDB做附加存储。
•工具:Git、VisualStudio2022/VSCode/Rider。

•客户端:热血传奇1.76完整版(10周年/16周年纯净客户端,非微端)。

二、获取源码与还原依赖

gitclonehttps://gitcode.com/gh_mirrors/op/OpenMir2
cdOpenMir2
dotnetrestoreOpenMir2.sln
dotnetbuildOpenMir2.sln-cRelease

编译成功后,各服务可执行文件落在src/<服务名>/bin/Release/net8.0/或net6.0/下。Windows默认输出到D:\MirServer\<ServiceName>,Linux/macOS按csproj内条件输出路径走。

三、MySQL数据库初始化
登录MySQL执行:

CREATEDATABASEmir2_dbCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;
USEmir2_db;
SOURCEsql/mir2_db.sql;
SOURCEsql/mir2_account.sql;
SOURCEsql/mir2_data.sql;

三脚本分别建表结构、账号体系、怪物/物品/地图基础数据。导入后编辑src/DBSrv/appsettings.json:

{
"ConnectionStrings":{
"DefaultConnection":"Server=localhost;Port=3306;Database=mir2_db;Uid=root;Pwd=你的密码;Charset=utf8mb4"
}
}

其余服务若各自带appsettings.json,也要确认连接串一致。

四、核心服务组件与职责
OpenMir2拆成多个独立进程,不是单个M2窗口:
•DBSrv:数据库服务,玩家数据持久化、账号读写。

-LoginSrv:账号认证、注册、登录校验。
•GameSrv/M2Server:游戏逻辑核心,战斗、移动、技能、地图、NPC、怪物刷新。

•LoginGate:客户端登录接入网关(默认端口7000)。

-SelGate:角色选择/创建/删除网关(默认7100)。
•GameGate:游戏内通信网关(默认7200)。

•附加:BotSrv、ChatSrv、LogDataSrv、MapSrv视版本编译。

五、启动顺序(铁律)
每个服务独立终端/窗口启动,前一进程无报错再起下一个:
1.DBSrv(数据库最先)
2.LoginSrv(账号认证)
3.GameSrv/M2Server(逻辑核心,加载地图脚本最慢)
4.GameGate(游戏网关)
5.SelGate(角色网关)
6.LoginGate(登录网关)
控制台出现监听端口、无红字异常即正常。单机回环地址统一填127.0.0.1;局域网/公网再换实际IP并放行7000/7100/7200TCP。

六、客户端对接与登录器
1.76客户端根目录找到Mir2.ini或Mir2Config.ini,改服务器地址为127.0.0.1(或你的服务端IP),区名自定义。OpenMir2不走老式HeroDB登录器生成器,直接用原生客户端+正确ini配置连LoginGate即可;若用统一/绿盟类登录器,列表填127.0.0.1:7000。启动客户端→注册账号→建角色→进比奇。

七、关键配置与定制入口
•经验/爆率/金币倍率:src/GameSrv/appsettings.json内ExpRate、DropRate、GoldRate。

•地图连接与刷怪点:src/GameSrv/Maps/。

-NPC对话与脚本:src/GameSrv/Npc/或src/M2Server/Npc/。
•物品属性/套装/掉落:物品配置目录与ItemDrop.ini。

•GM权限:账号表内提权或对应管理员配置,使用@级别等命令。

八、常见起不来排错
•端口占用:netstat-ano|findstr:7000查杀占用进程,或改各appsettings.json端口。

-数据库连接失败:MySQL未启动、密码错、utf8mb4字符集不一致、DBSrv连接串未改。
•客户端连不上:LoginGate/GameGate未起、防火墙拦端口、Mir2.iniIP填错。

•编译报错:.NETSDK版本不对(需8.0)、NuGet未还原、杀毒软删dll需加信任。

-地图黑屏/怪不刷:sql基础数据未导全、Maps目录缺失、GameSrv未完全加载完就起网关。

九、进阶部署
•DockerCompose:mysql+dbsrv+gamesrv容器化,适合长期运行。

-多GameSrv实例:GameGate配后端节点表,做负载分担。
•存储切换:DBSrv支持MySQL/MongoDB存储适配层,改存储实现即可换库。

启动验证标准:六个服务控制台均无异常退出,客户端能注册、建角、进比奇、砍鸡鹿羊、捡钱、学基础技能,即OpenMir2世界跑通。
[顶部]