一、先说明一个前提
虎啸祥瑞是一个具体的版本发布包名字,不同作者出的同名包,引擎、目录结构和配置写法可能完全不同。你没有贴出具体的报错内容、卡在哪个窗口、是单机还是上云主机,所以这里给的是这类版本上架后的通用排查框架。这个框架覆盖九成以上的故障,按顺序走一遍基本能定住问题;如果能提供具体的报错原文,可以直接对应到某一段处理。
二、上架后出问题的共性根源只有五个
不管表现多奇怪,最后查出来通常是下面五个之一:
路径不对。服务端放在了桌面、下载文件夹、中文目录、带空格的目录,或者 C 盘 Program Files、OneDrive 同步目录里。老引擎对中文和空格支持极差,表现就是各种莫名其妙的加载失败。
权限不够。程序没有写日志、写存档、读配置的权限。云上主机尤其常见,因为很多人用非管理员账户或把文件放在系统保护目录下。
端口被占或被拦。上次异常退出留下的残留进程没清干净,或者防火墙、云主机的安全组没放行对应端口。前者表现为能启动但连不上,后者表现为完全连不上。
组件不配套。DBServer、网关、M2、登录器来自不同的发布包,识别码或字段结构对不上。这种最隐蔽,因为每个窗口看着都正常启动了。
资源没传全或传坏了。地图、素材、补丁只传了一部分,或者 FTP 用了文本模式导致二进制文件损坏。
三、第一步:确认六个进程是不是都活着
正常的一套环境,起来应该是六个窗口:LogServer、DBServer、LoginGate、SelGate、RunGate、M2Server。少任何一个,下游就会表现出各种奇怪的断开。
逐个看状态:
LogServer 应该显示正在监听,不弹窗不退出。一打开就弹英文确认框然后消失,是日志目录不存在或路径写错,手动建一个 Logs 文件夹并把 Config.ini 里的路径改成绝对路径。
DBServer 应该显示物品库、技能库加载完成,没有 Exception。如果这两行报错,问题在 BDE 数据源或库文件,进入第四步。
三个网关应该显示连接成功、监听端口。如果闪一下就没了,是端口被占或 ini 里的 IP 填错。
M2Server 最后起,读完地图和脚本后控制台不再刷红色报错。有报错先解决报错,不要往下走。
主控制器一键启动只是把这六个按顺序拉起来,它本身不干活。所以排查时不要依赖一键启动,要单独双击每个 exe 看真实输出。
四、第二步:查 DBC2000 和数据源
这一步在本地装过的人到服务器上最容易漏,因为云服务器不会自动帮你装。
服务器上装 DBC2000,注意选对位数,64 位系统要装对应的版本。装完以管理员身份运行 BDE Administrator,左侧找别名,名字看 DBServer 目录里 dbsrc.ini 的 GameDBSourceName 字段,一个字都不能差,大小写也要一致。
没有就新建,驱动选 STANDARD,改名成引擎要求的那个,PATH 改成数据库目录的绝对路径,ENABLE BCD 设为 FALSE。改完 Apply 保存。
然后用 DBCommander 打开这个别名,看能不能列出 StdItems、Magic、MonItem、MapInfo 这些表,随便点一张能不能看到内容。能看到就是通了;表是空的或打不开,说明库文件缺失或损坏,回版本包重新解压。
五、第三步:查 IP 和端口的三处一致性
单机环境全部填 127.0.0.1。上服务器的话,GameCenter 配置、各网关的 Config.ini、Mir200!Setup.txt、登录器配置,这四处的 IP 必须完全一致,端口必须一一对应。只要有一处还留着 127.0.0.1 而别处改成了服务器地址,就会出现登录器能连上、选完角色就断的典型症状。
另外检查 ServerIndex 序号,三个网关的序号不能重复,重复会互相顶掉,表现为时好时坏。
云主机还要多两步:安全组放行引擎用到的全部端口(TCP),以及服务器系统防火墙放行这些程序或端口。测试阶段可以临时关防火墙确认是不是它的问题,确认定位后再改回精细规则。
六、第四步:查杀毒和实时防护
这条被低估得最厉害。服务端程序的行为特征很容易被误判,常见的结果是某个 exe 或某个 dll 被静默删掉一部分。表现不是完全打不开,而是能打开但功能残缺、报莫名其妙的错、存档写不进去。
一次性处理好:整个 Mirserver 目录加进排除项;如果之前已经报过毒,不要指望加白名单就能恢复,必须重新解压一次被删的文件;解压用 7-Zip 或 WinRAR,不要用系统自带解压;解压完右键根目录取消只读并应用到所有子文件夹。
七、第五步:查资源是否完整上传
上架后特有的故障几乎都集中在这里。
先看大小。挑几个关键文件(Mir200Map 下的沙巴克地图、Data 下的几个大 wil 文件、dbx 库文件),在本地和服务器上比对字节数。对不上就是没传完或传坏了。
再看传输模式。FTP 必须用二进制模式,文本模式会把 wil、map、dbx 转码损坏,损坏的文件往往还能被打开,只是内容错乱,这种最难排查。
然后看有没有漏传补丁和资源包。只传服务端不传客户端素材,是上架后城墙不显示、物品问号、技能没特效的共同原因。如果用微端,素材还要上传到微端资源目录并重新打包索引,否则玩家永远下载不到。
最后看目录权限。Mir200 及其子目录必须有读取和写入权限,城堡数据、存档、日志都是运行时写的,只读权限会导致运行时正常、重启后数据丢失。
八、第六步:按表现直接定位
能登录但选角色后断开或黑屏:优先查 RunGate 是否真活着、IP 是否有一处不一致、客户端与服务端版本是否匹配。对着本该有怪物的位置攻击,如果有伤害数字但看不见东西,是客户端素材问题;如果完全没反应,是服务端侧的问题。
能进游戏但像掉线、操作延迟极大:优先查 LogServer 是否缺席、网络延迟、网关连接是否释放干净。
人物数据重启后丢失:查 LogServer、存档目录写权限、磁盘剩余空间、关闭顺序(正确顺序是先停 M2,再停网关,最后停 DBServer 和 LogServer)。
物品显示问号、名称乱码:客户端 Data 素材缺失或补丁覆盖顺序错误。
地图花屏、地面错位:map 文件损坏或地砖素材不配套。
启动特别慢或卡在某一行:查脚本死循环读取、日志文件膨胀、杀毒实时扫描、机械硬盘读小文件慢。
能启动但功能不对(比如腰带鞋子宝石栏不显示):M2 功能开关、登录器界面选项、脚本前置条件三选一。
九、第七步:学会看日志而不是猜
M2Server 控制台的输出是最直接的线索。它停在最后一行报错的位置,通常就是故障点。注意区分三类信息:
红色报错或 Exception:必须解决,否则相关功能一定不正常。
警告类提示:一般不影响启动,但可能影响具体玩法,比如某个脚本文件找不到、某个配置项为空。
正常的加载进度:正在加载物品数据完成这类,看到才算通过。
另外 Mir200 和 LogServer 目录下常有 txt 日志文件,里面会记录运行时的具体错误行号和文件名。遇到脚本报错时,这个比控制台更详细。
十、第八步:建立回滚能力
这是最省时间的一条。第一次把环境调通之后,整目录复制一份作为干净快照,标注日期。每次大改之前再复制一份。
出了事直接回滚,比现场排查快得多。而且很多问题是连环的,改着改着会忘记最初的状态,最后连“本来哪里是好的”都说不清。
配合一份改动日志:哪天改了 IP、哪天盖了补丁、哪天换了登录器,三行字就够。一个月后你绝对记不住,而凭记忆排查是所有返工的开始。
十一、几个反复出现的细节
残留进程。每次测试前在任务管理器清掉所有 Mir、GameCenter、DBServer 相关进程,或者直接重启机器。否则端口永远冲突,怎么改配置都没用。
磁盘空间。服务器磁盘满了的表现很诡异,通常是写不进东西但不报明确错误,定期看一眼剩余空间。
兼容模式。老引擎在 Server 系统上跑,建议对每个 exe 设置 Windows 7 兼容模式并以管理员身份运行。
不要一次改五个地方。改一处、测一次、记一次。同时改 IP、端口、登录器和补丁,出了问题根本不知道是哪个动作导致的。
虎啸祥瑞传奇服务端架设完成后出问题的完整排查流程与解决办法
来源:
作者:
点击:

