在《荣耀传奇》服务端中,若需在同一登录器上同时支持合区与新开服务器,核心在于登录器配置、网关列表管理及客户端IP指向的协调。整个过程不涉及代码重写,仅通过配置文件调整即可完成。
首先明确架构逻辑。登录器(LoginGate)负责接收玩家连接请求,并根据用户选择的区服,将其转发至对应的游戏网关(RunGate)。每个区服对应独立的 M2Server 实例和数据库(或数据目录)。合服本质是将多个区的数据合并到一个服务端运行;新区则是新增一套独立服务进程。
准备新区服务端。复制现有区服的完整服务端文件夹,例如从 D:MirServerZone1 复制为 D:MirServerZone2。修改 Zone2 下所有配置文件中的端口,避免冲突:
LoginSrv 端口改为 7001
RunGate 监听端口改为 7101
M2Server 游戏端口改为 7201
DBServer 数据端口(如有)改为 6001
同时更新数据库名称(如使用 SQL Server),或更改文本型服务端的数据路径,确保新区数据隔离。
配置合服服务端。若执行合服操作,需先将原多个区的角色、物品、行会等数据导入同一数据库或合并 StdItems、Map、GuildBase 等文本目录。合服后的服务端作为独立区存在,例如命名为 MergeZone,分配新端口组(如 7002/7102/7202)。
编辑登录器网关列表。登录器读取的区服列表通常来自 ServerList.txt 或 !AddrTable.txt,位于 LoginGate 或 LoginSrv 目录。文件格式如下:
[新区]
IP=127.0.0.1
Port=7001
[合服区]
IP=127.0.0.1
Port=7002
[老区1]
IP=127.0.0.1
Port=7000
每行定义一个区服名称及其对应的 LoginSrv 地址和端口。客户端启动时,登录器自动加载此列表并显示在区服选择界面。
同步客户端配置。确保客户端使用的登录器版本支持多区列表。部分旧版登录器需替换为多区兼容版本,或修改其内部资源文件(如 .dat 或 .ini)以正确解析 ServerList.txt。
启动所有服务进程。依次运行:
原区 LoginSrv(7000)、新区 LoginSrv(7001)、合服区 LoginSrv(7002)
各区对应的 DBServer、M2Server、RunGate
注意每个区必须使用独立端口组,否则进程冲突导致启动失败。
验证区服显示。启动客户端,登录器应列出“新区”“合服区”“老区1”等选项。选择任一区后,客户端自动连接对应 IP 和端口,进入该区角色界面。
若某区未显示,检查三点:
对应 LoginSrv 是否正在监听指定端口(用 netstat -ano | findstr :7001 验证)
ServerList.txt 编码是否为 ANSI(UTF-8 可能导致乱码或无法识别)
防火墙是否放行所有 LoginSrv 端口(7000–7002)
通过上述配置,可在同一登录器下同时提供新区、合服区及原有区服的入口,玩家自由切换,互不影响。关键在于端口隔离、数据分离与列表文件准确指向。

