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

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

一、环境清单与系统要求
• 操作系统:Windows 10/11、Windows Server、Linux(Ubuntu 20.04+)均可,跨平台由.NET承载。

• 运行时:.NET SDK 6.0或8.0(项目现主干目标框架为.NET 8)。

- 数据库:MySQL 5.7+/8.0+,或MariaDB;可选MongoDB做附加存储。
• 工具:Git、Visual Studio 2022 / VS Code / Rider。

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

二、获取源码与还原依赖

git clone https://gitcode.com/gh_mirrors/op/OpenMir2
cd OpenMir2
dotnet restore OpenMir2.sln
dotnet build OpenMir2.sln -c Release

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

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

CREATE DATABASE mir2_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE mir2_db;
SOURCE sql/mir2_db.sql;
SOURCE sql/mir2_account.sql;
SOURCE sql/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/7200 TCP。

六、客户端对接与登录器
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.ini IP填错。

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

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

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

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

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