荣耀传奇合服与开新区如何在同个登录器实现

来源: 作者: 点击:
在《荣耀传奇》服务端中,若需在同一登录器上同时支持合区与新开服务器,核心在于登录器配置、网关列表管理及客户端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)

通过上述配置,可在同一登录器下同时提供新区、合服区及原有区服的入口,玩家自由切换,互不影响。关键在于端口隔离、数据分离与列表文件准确指向。