引擎启动的时候,弹出各类报错弹窗或者日志持续输出异常信息,会造成程序无法启动、网关断开、数据库加载失败,不同报错对应不同问题,下面按照出现频率依次整理故障现象、产生原因以及对应的处理方式。
数据库连接失败,日志提示无法连接数据库,账号密码错误。这类报错大多是数据库服务没有启动,或者引擎配置文件内填写的数据库账号、密码、库名不一致。先检查数据库程序运行状态,确认数据库服务已经正常开启。打开引擎配套的数据库配置文档,核对地址、端口、账号密码,修改成和数据库设置一致的内容。如果数据库端口做了修改,配置文件内端口号也要同步改动。数据库字符集不匹配也会触发连接警告,建议设置为utf8,避免中文数据表读取异常。修改完成保存配置,重启引擎程序重新尝试连接。
找不到物品数据库StdItems.DB,怪物数据库Monster.DB读取失败。出现这个提示,代表引擎在指定路径下没有找到db文件,或者db文件损坏。打开引擎配置面板,查看数据库文件读取路径,确认路径指向版本目录下的DB文件夹。检查DB文件夹内三个核心数据库文件是否完整,StdItems.DB、Monster.DB、MonItems.DB缺一不可。如果文件被安全软件隔离,恢复文件并添加目录信任。文件损坏的情况下,使用版本原始备份db文件覆盖替换,不要直接使用其他版本的数据库文件,字段结构不同会引发更多报错。文件夹名称带有中文、空格、特殊符号,也会导致引擎读取数据库失败,修改目录名称为纯英文数字。
端口被占用,提示绑定端口失败,地址已在使用。引擎登录网关、游戏网关、M2主程序都需要单独端口,端口被其他程序占用就无法监听。打开系统端口查看工具,查询报错端口对应的进程,结束占用端口的程序。如果需要保留该进程,就修改引擎网关配置,更换为其他空闲端口。修改端口之后,客户端配置文件内的端口参数同步更新。部分时候进程没有完全关闭,后台残留网关进程持续占用端口,打开任务管理器,结束所有引擎相关进程,再重新启动整套程序。
文件权限不足,日志提示无法写入日志文件,无法创建临时文件。服务器系统环境下容易出现这类报错,程序没有目录读写权限。把引擎所在文件夹权限调整,给予读写执行权限。本地电脑环境,右键程序选择以管理员身份运行。系统安全软件限制程序写入文件,把整个版本目录加入信任名单,防止程序写入日志、保存游戏数据的时候被拦截。
引擎版本不匹配,提示版本校验失败,无法加载脚本文件。使用的引擎程序和当前版本脚本不配套,高版本引擎打开旧版本脚本,或者旧引擎加载新版脚本,都会触发脚本解析报错。核对版本自带的引擎文件,不要随意替换网上下载的其他引擎包。脚本语法错误也会附带这类报错,日志会标注出错脚本文件行数,打开对应脚本,检查语法、变量、指令写法,修正错误脚本代码。脚本文件编码不对,保存编码改成ANSI格式,减少解析报错。
地图文件加载失败,提示Map文件不存在或者地图数据损坏。引擎读取地图资源时,找不到对应map文件,地图编号不匹配。打开引擎地图配置,核对地图文件存放路径。检查Map文件夹,确认报错编号对应的地图文件存在。地图文件传输过程中断,会造成文件损坏,重新拷贝原版地图资源。脚本里调用了不存在的地图编号,打开地图脚本,删除无效地图调用代码。
pak资源加载报错,提示pak包密码错误,无法打开pak资源。资源包密码填写错误,pak文件路径不对,文件损坏都会出现该提示。打开pak列表文件,核对每个pak文件名称、路径、密码。文件名大小写需要和实际pak文件保持一致。pak包传输损坏,重新上传原始pak文件。密码确认无误依旧报错,检查pak包加密版本,当前引擎不支持该加密pak,更换对应工具处理pak资源。
网关连接断开,游戏网关与引擎连接失败,网关掉线。引擎和网关之间通信异常,先确认引擎和网关配套成套,不能混用不同版本网关。检查网关配置内引擎IP和端口填写正确。本地环境填写本地地址,外网环境填写对应地址。防火墙拦截内网通信,临时关闭防火墙测试。网关程序闪退,查看网关日志,大多是脚本、资源读取异常导致,优先解决日志内的前置报错。
时间格式报错,系统时间格式不兼容,引擎启动闪退。部分引擎对系统时间显示格式有要求,系统时间格式修改为yyyy-MM-dd。系统区域语言设置异常,会干扰引擎读取时间相关函数,调整系统区域设置,重启电脑再启动引擎。
内存不足,日志提示分配内存失败,引擎启动之后立刻关闭。服务器内存容量不够,引擎加载数据库、地图、怪物资源消耗大量内存。查看系统内存占用,关闭其他占用内存较大程序,物理内存不足需要升级内存。也可以调低引擎配置内预加载资源参数,减少启动阶段内存占用,代价是地图、怪物加载速度变慢。
脚本变量报错,提示未定义变量,调用无效函数。脚本编写疏漏,调用不存在的函数,变量没有声明。引擎日志会标注出错脚本路径与行数,打开对应脚本文件定位代码。复制其他版本脚本粘贴时,容易带入多余特殊字符,删除多余符号,重新保存脚本。一次性注释掉新增脚本,分段排查,定位出问题脚本,快速缩小排查范围。
启动报错处理通用步骤,启动引擎前查看整套文件完整性,提前备份版本目录。出现报错优先查看引擎日志,日志信息可以直接定位故障文件。修改配置或者脚本之后,必须完全关闭引擎、网关所有进程,再重新启动程序。不要在引擎运行状态下替换db、pak、脚本文件,改动文件需要停止程序操作。每次只修改一处内容,修改完成测试,避免多个改动叠加,无法判断哪一项修改引发报错。整套程序启动顺序保持固定,先启动数据库,再依次开启各个网关,最后启动引擎主程序,颠倒启动顺序容易出现各类连接类报错。

