传奇单机架设到角色区提示“服务器验证失败”的全链路排查与修复手册

来源: 作者: 点击:
能注册账号、能看到角色界面,说明登录网关(LoginGate)这一层是通的。问题出在从“选择角色”点击进入开始的后续链路上,核心是角色网关(SelGate)、数据库(DBServer)和引擎之间的验证握手没有完成。另外,“单机测试”状态本身就会触发这个限制,必须先关掉。按下面的顺序逐项排查,每改完一项就完全重启服务端验证一次。

先关闭服务端的单机测试模式

多数服务端默认开启测试模式,这会限制正式验证流程,进入角色区时直接跳过验证并报失败。找到服务端根目录下的Config文件夹,打开Server.ini,查找TestMode和SingleServer两个参数。如果值是1,全部改为0。如果使用的是引擎控制器启动,检查启动按钮是否点在了“单机测试启动”上,切换为“正常启动”再拉起服务。改完后确认登录器界面不再显示“单机测试”字样,才算生效。

检查角色网关(SelGate)是否存活

角色区验证失败最直接的原因,往往是角色网关根本没有正常运行。登录由LoginGate负责,进入角色界面后的认证会切换到SelGate,这个进程不在,验证必然中断。打开任务管理器,确认SelGate.exe(或SelGate文件夹下的Gate.exe)是否在进程中。如果缺失,进入服务端SelGate目录,双击启动脚本,观察控制台窗口是否显示启动成功或Ready。窗口一闪而过说明端口被占用或配置有误。用命令行执行netstat -ano | findstr :7100,查看7100端口是否被其他程序占用,常见的冲突来源包括酷狗、迅雷等后台软件。如果有占用,结束对应PID,或者修改SelGate配置文件中的端口,同时同步修改DBServer相关配置。

核对Key/Lic授权文件的一致性

Key文件不匹配是单机验证失败的另一个高频原因,表现通常是点击角色后直接弹窗,或者提示登录器版本太老。找到服务端Mir200目录下的Key.Lic(或GeeKey.dat、AuthKey.bin),以及登录器配置器所在目录下的同名文件。这两个文件必须完全一致,任何一边被覆盖或缺失,配置出来的登录器都无法通过引擎的授权校验。把同一份Key文件分别放入这两处,覆盖后重新用配置器生成一次登录器,不要继续使用旧登录器测试。如果使用的是GOM引擎,在M2Server的选项→登录器配置中查看“登录器标识码”,在生成器里填入相同标识码再生成。

统一所有配置中的IP为127.0.0.1

单机环境严禁IP混用。如果之前改过局域网IP或外网IP,部分配置文件可能残留了旧地址,导致网关之间握手时路由混乱。用记事本逐一核对以下位置,把所有ServerAddr、ServerIP、GateAddr字段的值统一为127.0.0.1,不能出现192.168.x.x或0.0.0.0:

Mir200\!Setup.txt中的ServerAddr和GameGateAddr;
LoginGate\Config.ini中的ServerAddr;
SelGate\Config.ini中的ServerAddr;
DBServer\!serverinfo.txt,单机标准写法为“0 127.0.0.1 127.0.0.1 7200”。

最省事的做法是删除服务端根目录的Config.ini、DBServer\dbsrc.ini、LoginGate\Config.ini、SelGate\Config.ini,然后用引擎控制器的“配置向导”全程填127.0.0.1重新生成一遍,让所有配置回到同一起点。

检查DBServer状态与数据库角色表

DBServer是角色数据验证的末端,它没有正常工作,SelGate传过来的角色信息就无法完成校验。确认DBServer.exe在任务管理器中存在,窗口内没有红色报错。如果走DBC2000,打开BDE Administrator,选中HeroDB,查看是否存在RoleDB表,以及表中是否有你创建的角色记录。表为空或缺失时,创建角色不会写入数据库,验证阶段自然读不到数据。同时确认Account.DB中你的账号Status字段值为0(正常启用),值为1或2代表禁用或冻结,同样会触发验证失败。

清理登录器缓存与安全软件拦截

登录器会缓存旧的服务器信息和配置文件,如果之前改过IP或端口,缓存可能仍在引导客户端连接错误的地址。删除客户端根目录下的Cache文件夹、Config文件夹以及所有.dat缓存文件,用新生成的登录器重新进入。同时把整个MirServer目录和客户端目录加入Windows Defender或第三方安全软件的白名单,DBServer或SelGate被静默拦截时,链路会在无提示的情况下断开。

按正确顺序重启并验证

完成上述修改后,彻底关闭所有服务端进程,按以下顺序重新启动:DBServer → LoginSrv → LoginGate → SelGate → RunGate → M2Server。观察每个控制台窗口,确保没有一闪而过或红色报错。M2Server窗口底部显示“服务器启动成功”且无异常后,用新生成的登录器进入游戏测试。如果仍然报验证失败,在LoginGate的Log文件夹中打开最新日志,搜索AuthPasswordError或M2ServerDisconnect,根据日志提示定位是网关密码不一致还是引擎连接断开,再做针对性处理。