热血传奇服务端架构全解:MirServer目录结构与核心配置文件详解

来源: 作者: 点击:
服务端是热血传奇游戏运行的底层程序集合,决定地图、怪物、爆率、技能、任务、角色数据一切逻辑。无论Hero/Blue/GOM/GEE/OpenMir2,本质都是“数据库+网关+游戏逻辑+脚本”的组合。认识服务端就是搞清楚目录结构、关键进程、配置文件、脚本位置四个层面。

一、服务端根目录与核心文件夹
以经典MirServer为例,根目录下固定包含:
• DBServer:数据库服务,负责玩家账号、角色、背包、仓库、技能、任务数据读写。Hero/Blue配DBC2000,GOM/GEE用内置LiteSQL/Access,OpenMir2用MySQL/MongoDB。核心文件:DBServer.exe、DBServer.ini、HeroDB(DBC路径)。

• LoginGate:登录网关,处理客户端连接请求,验证账号合法性,默认端口7000。核心文件:LoginGate.exe、LoginGate.ini。

• SelGate:角色网关,处理角色创建、删除、选择,默认端口7100。核心文件:SelGate.exe、SelGate.ini。

• RunGate:游戏网关,处理游戏内数据通信(移动、攻击、聊天、交易),默认端口7200。核心文件:RunGate.exe、RunGate.ini。

• GameGate:部分引擎叫GameGate,功能同RunGate,负责客户端与M2逻辑交互。

• M2Server/Mir200:游戏逻辑核心,加载地图、怪物、NPC、技能、任务、爆率,处理战斗计算、移动同步、物品掉落。核心文件:M2Server.exe、!Setup.txt、!Abil.txt等。Mir200目录下Envir文件夹是脚本心脏。

• Mud2:数据库文件存放地,DBC2000的HeroDB路径指向Mud2\DB,内含StdItems.DB(物品库)、MonGen.txt(怪物刷新)、Magic.DB(技能库)、ChrNameList.txt(角色名列表)等。

• LogServer:日志服务,记录玩家登录、死亡、打怪、交易、GM操作。核心文件:LogDataServer.exe、LogData.ini。

• LoginSrv:账号验证服务,处理注册、登录、踢人、封号。核心文件:LoginSrv.exe、LoginSrv.ini。

• 登录器:生成客户端登录器程序,含配置器、列表文件、补丁密码。核心文件:GameOfMir登录器生成器.exe、MakeGameLogin.exe、ServerList.txt。

二、核心配置文件详解
• !Setup.txt(M2Server配置):控制经验倍数、爆率倍率、金币倍率、复活规则、PK模式、行会参数、沙巴克参数、地图切换规则。修改后M2内“重新加载配置”生效。

• DBServer.ini:数据库连接参数(DBC名称、路径、端口)、角色数据保存路径、账号表名。

• LoginGate.ini/SelGate.ini/RunGate.ini:网关IP、端口、最大连接数、防攻击参数。

• MonGen.txt(怪物刷新):定义每个地图的怪物种类、坐标、数量、刷新时间。格式:地图名 X Y 怪物名 数量 刷新间隔(秒)。

• MonItems(怪物爆率):每个怪物对应一个.txt文件,定义掉落物品、数量、概率。格式:物品名 数量 概率(1/xxx)。

• Shop.txt(商店NPC):定义NPC出售物品、价格、限购条件。

• AdminList.txt(GM权限):每行一个角色名,拥有GM命令权限(@级别 @刷 @金币等)。

• MapInfo.txt(地图信息):定义地图ID、名称、安全区、复活点、PK规则、背景音乐、连接点。

• MapQuest.txt(任务脚本):定义任务触发条件、NPC对话、奖励、失败惩罚。

• Npc_def(NPC脚本):每个NPC对应一个.txt文件,控制对话内容、功能选项、任务流程、商店逻辑。

三、关键数据文件
• StdItems.DB:物品数据库,定义武器、防具、首饰、药水、材料的基础属性(攻击、防御、魔御、重量、持久、需求等级、职业限制)。

• Magic.DB:技能数据库,定义技能名称、等级、消耗MP、伤害公式、范围、冷却时间。

• Monster.DB:怪物数据库,定义怪物名称、血量、攻击、防御、魔御、经验、移动速度、攻击速度、AI类型。

• ChrNameList.txt:角色名列表,用于封号、禁言、GM权限识别。

• GuildList.txt:行会列表,记录行会名称、会长、成员、等级、资金。

• CastleInfo.txt:沙巴克信息,记录占领行会、城主、税收、旗帜状态。

四、脚本系统逻辑
Envir目录下脚本分三类:
• Npc_def:NPC行为脚本,控制对话分支、任务触发、商店交易、功能调用(@传送 @修复 @合装备)。

• MapQuest:任务脚本,定义任务链、触发条件(杀怪数量、物品提交、NPC对话)、奖励发放。

• Market_Sell:商店脚本,定义NPC出售物品列表、价格、限购规则。

脚本语法固定:[@段名]定义标签,#IF #ACT #SAY #ELSEACT控制流程,<$PARAM>调用变量,%USERNAME%取角色名。修改脚本后M2内“重新加载NPC脚本”生效。

五、不同引擎服务端差异
• Hero/Blue:依赖DBC2000+BDE,目录结构最经典,脚本语法最通用,兼容性最强,但性能上限低。

• GOM/GEE:内置数据库,无需DBC2000,支持PAK补丁加密、多网关负载、云服务器部署,性能强,但脚本语法有私有扩展。

• OpenMir2:开源C#架构,跨平台,数据库用MySQL/MongoDB,分布式多服务,适合二次开发,但部署复杂度高。

• 翎风/3K/统一:在Hero基础上魔改,增加合击、内功、连击、奇经八脉,脚本兼容Hero但数据库结构扩展。

六、服务端启动流程
1. 启动数据库服务(DBServer/MySQL)。
2. 启动账号验证服务(LoginSrv)。
3. 启动登录网关(LoginGate)。
4. 启动角色网关(SelGate)。
5. 启动游戏网关(RunGate/GameGate)。
6. 启动游戏逻辑核心(M2Server/Mir200),加载地图、怪物、NPC、脚本。
7. 启动日志服务(LogServer)。
所有进程无报错、端口监听正常,服务端才算完全启动。

七、常见服务端故障点
• DBServer起不来:DBC2000路径错、HeroDB名称不一致、数据库文件损坏、端口占用。

• M2Server报错:脚本语法错误、地图文件缺失、物品数据库字段不匹配、怪物刷新坐标越界。

• 网关连不上:IP配置错、端口被防火墙拦截、网关进程未启动、客户端版本不匹配。

• 爆率不生效:MonItems文件格式错、概率数值超范围、M2未重载配置。

• 地图黑屏:Map文件缺失、MapInfo.txt路径错、客户端补丁未覆盖。

服务端本质是游戏世界的“操作系统”,所有玩法、数值、规则都写在里面。改服务端就是改游戏本身,从爆率到技能,从地图到任务,全由这些文件控制。理解目录结构、配置文件、脚本逻辑,是修改、维护、二次开发的基础。