传奇服务器端是整套游戏的核心数据程序集合,包含引擎主程序、数据库文件、地图脚本、怪物数据、装备属性、技能逻辑、刷新规则、NPC对话脚本等内容,和客户端有着明确区分,客户端负责画面素材展示,服务器端负责全部游戏逻辑计算、数据存储、规则判定。没有正常运行的服务器端,就算拥有完整客户端,也无法组建可供接入的游戏服务。
服务器端内部文件有固定的分类结构,引擎主程序是整套服务的核心,负责接收外部连接请求,同步玩家数据,执行战斗、掉落、传送等各类指令。数据库文件用来存放装备、怪物、技能、物品的基础属性,所有物品的攻击、防御、价格、需求等级,都在数据库内定义。脚本文件夹存放NPC对话、任务、传送、奖励、活动相关脚本,每一个NPC的对话文字、触发条件、兑换规则都由脚本控制。地图配置文件记录每张地图的怪物刷新坐标、刷新间隔、刷新数量,同时控制地图的进入等级、死亡掉落、是否允许PK等规则。日志文件用来记录玩家登录、打怪掉落、交易、角色升级等行为,方便查看运行状态。
不同版本的服务器端相互之间不能直接通用,1.76版本的服务端没有英雄、合击相关的数据表和脚本,装备上限停留在赤月套装。1.85英雄合击版本服务端内置英雄数据表、怒气计算、合击判定逻辑,支持英雄领取、英雄升级、合击技能释放。1.95版本服务端新增更多高级装备、连击系统、新地图刷新脚本,单职业版本服务端会修改三职业底层逻辑,去掉另外两个职业的相关数据,调整攻速、切割、鞭尸这类专属判定规则。直接把其他版本的脚本或者数据库导入现有服务端,会出现报错、刷不出怪物、NPC无法交互、技能失效等问题。
启动服务端有固定的流程,先启动数据库支撑程序,再开启引擎主程序,等待引擎加载全部地图、怪物、脚本数据,加载完成之后,服务才处于可接入状态。加载过程中控制台会滚动输出信息,出现红色提示文字,代表存在异常,常见的报错包含脚本语法错误、数据库字段缺失、地图文件路径读取失败、怪物刷新坐标越界。脚本少写一个符号、括号不匹配、变量名称写错,都会直接导致这条脚本加载失败,对应的NPC或者功能失效。
数据库修改是调整内容最常用的方式,可以修改装备属性、怪物掉落、物品价格、技能伤害。修改数据库的时候,不要随意新增或者删除原有字段,字段类型不匹配会造成引擎读取崩溃。修改完成之后需要保存,重启引擎才能生效,部分引擎支持热加载,不用重启整套服务,但稳定性不如重启加载。修改前建议备份数据库文件,一旦改错可以直接恢复,避免整套数据无法使用。
脚本调整覆盖的范围更广,比如新增NPC兑换、调整沙巴克规则、修改经验倍数、设置爆率、添加限时活动。编写脚本要遵循引擎对应的语法格式,不同系列引擎的脚本写法存在差异,一套脚本不能直接换到别的引擎上面运行。爆率设置不是简单调高数值,要区分全局爆率、单个怪物独立爆率,爆率数值过大容易产出泛滥,打乱游戏内的物品循环。
服务端运行对电脑资源有一定要求,同时在线人数越多,需要的内存和处理器资源越高,大量玩家同时刷怪、释放技能、进行对战,会加重引擎运算压力。后台多余程序尽量关闭,防止抢占资源,造成服务卡顿、延迟升高,严重时会出现引擎自动关闭,所有玩家掉线。
端口和连接配置是让客户端能够连上服务端的关键,引擎默认会设置对应的通信端口,端口被其他程序占用,或者限制访问,外部就无法连接。配置文件内填写对应的地址和端口,引擎读取配置之后,才可以接收连接请求。配置出错的时候,客户端会提示连接失败,或者卡在登录界面,无法进入角色选择页面。
很多人容易把服务端和客户端混淆,客户端只有贴图、音效、模型,不包含任何游戏规则,就算修改客户端里面的装备外观,也不会改变实际属性,属性全部由服务端数据库控制。客户端只负责把服务端下发的数据展示出来,真实伤害、掉落判定、角色数据全部在服务端运算,这也是单纯修改客户端文件不会改变实际战力的原因。
日常维护的时候,要定时备份整套服务端文件夹,包含数据库、脚本、配置文件。遇到引擎崩溃、数据异常,用备份文件恢复,减少损失。不要在服务端运行的时候直接修改数据库文件,容易造成数据损坏,最好先关闭引擎,再做修改操作。清理日志的时候,只删除旧的日志记录,不要改动配置和脚本文件。
想要测试功能改动,优先在本地测试,测试无误之后再正式启用。新增地图的时候,除了在服务端添加地图刷新和权限配置,客户端也要配套对应的地图素材,不然玩家进入地图会黑屏,这是素材和服务端数据不同步带来的现象。怪物新增同理,服务端添加怪物刷新配置,客户端缺少怪物外观素材,怪物只会显示空白或者错位贴图。

