传奇服务端核心架构与部署全流程解析

来源: 作者: 点击:
传奇服务端是一套用于运行传奇游戏世界的后台程序系统,由多个独立进程协同工作,处理账号认证、角色数据、地图逻辑、战斗计算等全部游戏功能。其标准结构基于MirServer框架,适用于多种版本(如1.76、1.80、十周年等)。

一、基础组成模块
LoginSrv(登录服务器)
主程序:LoginSrv.exe
功能:验证玩家账号密码,分配会话令牌,控制IP连接权限
关键文件:!AddrTable.txt(允许连接的IP列表)、ID.db(临时会话记录)

Gate_Server(网关服务器)
主程序:RunGate.exe
功能:接收客户端TCP连接,转发数据包至M2Server,缓解主进程压力
端口:默认监听7000,可配置多Gate实现负载分担

Mir200(主游戏服务器)
主程序:M2Server.exe
功能:加载地图、管理怪物刷新、处理技能释放、计算伤害、同步背包装备
核心目录:Envir(脚本)、Map(地图索引)、GuildBase(数据库)

Share(共享数据区)
存储 Account.db(账号库)、Castle.db(沙巴克归属)、HumData(角色存档)
所有进程均需读写此目录,必须设置完全控制权限

二、关键配置文件说明
!Setup.txt(位于Mir200根目录)
定义服务器名称、IP地址、经验倍数、爆率、是否开启英雄系统等全局参数。
示例:ExpRate=5 表示经验获取为原版5倍;Hero=1 启用英雄功能。

MonGen.txt(位于Mir200)
按行定义怪物刷新规则,格式:地图编号 X Y 方向 怪物名 数量。
如:7 150 150 0 蝙蝠 10 → 在地图7(毒蛇山谷)刷10只蝙蝠。

MapInfo.txt(位于Envir)
映射地图编号与名称,缺失条目将导致地图无法识别。
示例:0 比奇城;1 盟重省;3 比奇省。

Npc_def(位于Envir)
存放所有NPC的对话脚本与功能逻辑,使用QFunction机制触发事件。

三、数据库文件类型
StdItems.db:装备、药品、材料属性库,含攻击、防御、重量、持久等字段
StdMonsters.db:怪物血量、攻击、防御、经验、AI行为模式
Account.db:玩家账号、密码(明文或简单加密)、最后登录时间
HumData:角色等级、坐标、背包、技能等级等实时状态

四、部署前环境准备
操作系统:Windows 7/10/Server 系列(不支持Linux原生运行)
运行库:必须安装 Visual C++ 2010 x86 Redistributable
路径要求:服务端不可放在含中文或空格的路径(如“D:我的游戏”)
编码格式:所有 .txt 文件必须为 ANSI 编码,UTF-8会导致M2Server闪退

五、标准启动流程
双击 LoginSrvLoginSrv.exe 启动账号认证服务
运行 Gate_ServerRunGate.exe 开启客户端接入通道
执行 Mir200M2Server.exe 加载游戏世界与脚本
客户端修改 IPaddr.txt 填写服务器IP,启动Mir.exe登录

六、版本兼容性要点
1.76服务端仅支持无英雄客户端
1.80及以上需包含 Hero 目录及 Hero.ini 配置
十周年版要求 StdItems.db ID范围扩展至8000+
客户端与服务端地图数量、装备ID必须严格一致

七、常见故障排查
M2Server启动后立即关闭:检查 !Setup.txt 是否有非法字符或路径错误
角色创建失败:Share 目录无写入权限,或 Account.db 被其他进程占用
地图黑屏:客户端缺失对应 .map 文件,或 MapInfo.txt 编码非ANSI
连接超时:防火墙阻止7000端口,或 RunGate 未运行

传奇服务端的价值在于提供完整可运行的游戏逻辑框架,后续内容扩展依赖脚本编写与数据库编辑。正确部署后,可通过修改MonGen.txt调整刷怪、编辑StdItems.db新增装备、编写QFunction实现自定义任务,无需改动核心EXE文件。