详细介绍一下传奇游戏服务器数据的结构组成
传奇游戏服务器的数据结构围绕核心数据库、配置文件、地图资源、脚本逻辑、日志系统五大模块展开,不同引擎(如 GOM、GEE、HERO)在目录结构和文件命名上存在差异。以下是基于主流引擎的系统化解析:一、核心数据库结构
传奇服务器的玩家数据主要存储在DBC 数据库或MySQL 数据库中,具体路径因引擎而异:
1. DBC 数据库(经典引擎)
存储路径:
plaintext
D:\MirServer\Mud2\DB\Magic.DB # 技能数据库
D:\MirServer\Mud2\DB\Monster.DB# 怪物数据库
D:\MirServer\Mud2\DB\StdItems.DB # 物品数据库
核心文件:
Hum.DB:角色基础属性(等级、职业、坐标等)。
Item.DB:装备、道具的详细属性(攻击力、持久度等)。
Magic.DB:技能数据(伤害值、冷却时间等)。
Monster.DB:怪物 AI、血量、攻击方式等。
2. MySQL 数据库(现代引擎)
存储路径:
plaintext
D:\MirServer\DBServer\FDB\HumanDB.db# 角色数据(GOM引擎)
D:\MirServer\DBServer\FDB\HeroDB.db # 英雄数据(HERO引擎)
表结构:
account:账号信息(用户名、密码、注册时间)。
characters:角色详细数据(装备、背包、技能等级)。
guilds:行会信息(成员、等级、公告)。
二、配置文件体系
配置文件控制服务器的运行逻辑和参数,按功能分为以下几类:
1. 引擎核心配置
文件路径:
plaintext
D:\MirServer\Mir200\!Setup.txt # 基础参数(端口、IP、游戏名称)
D:\MirServer\LoginSrv\!AddrTable.txt # 登录网关IP白名单
D:\MirServer\DBServer\DBSrc.ini # 数据库连接配置
关键参数:
ServerName:游戏名称(显示在登录器列表)。
Port:登录网关端口(默认 7000)。
DBPath:数据库文件路径。
2. 地图与场景配置
文件路径:
plaintext
D:\MirServer\Mir200\Envir\MapInfo.txt # 地图全局配置
D:\MirServer\Mir200\Envir\MonGen.txt # 刷怪规则
D:\MirServer\Mir200\Envir\Market_def\# 商人NPC脚本
核心内容:
MapInfo.txt:定义地图 ID、名称、进入条件(如等级限制)。
MonGen.txt:指定地图内怪物刷新的坐标、数量、间隔时间。
Market_def:配置 NPC 出售的商品列表和价格。
3. 脚本逻辑配置
文件路径:
plaintext
D:\MirServer\Mir200\Envir\MapQuest_def\QManage.txt # 登录触发脚本
D:\MirServer\Mir200\Envir\Market_def\QFunction-0.txt # 功能脚本库
典型功能:
QManage.txt:验证玩家账号密码,初始化角色数据。
QFunction-0.txt:定义游戏内事件(如怪物死亡、玩家交易)的响应逻辑。
三、地图与资源文件
地图数据是玩家交互的基础,分为二进制地图文件和资源素材:
1. 地图文件(.map)
存储路径:
plaintext
D:\MirServer\Mir200\Map\M001.map# 盟重土城地图
D:\MirServer\Mir200\Map\D2008.map # 新地图
数据结构:
头部信息:地图 ID、名称、宽度、高度。
地形数据:二维数组表示地面类型(如草地、墙壁)。
怪物与 NPC 位置:坐标列表及属性。
2. 素材文件
存储路径:
plaintext
D:\MirServer\Mir200\Data\Object.wil# 物品外观
D:\MirServer\Mir200\Data\Tiles.wil # 地形贴图
文件类型:
.wil:图片素材(装备、怪物模型)。
.ani:动画文件(技能特效、角色动作)。
.wav:音效文件(攻击、脚步声)。
四、脚本系统与动态逻辑
传奇的游戏逻辑通过文本脚本和引擎插件实现:
1. 文本脚本(.txt)
存储路径:
plaintext
D:\MirServer\Mir200\Envir\MapQuest_def\# 地图事件脚本
D:\MirServer\Mir200\Envir\QuestDiary\ # 任务流程脚本
核心脚本:
QManage.txt:处理登录、注册、角色选择。
MapQuest.txt:定义地图内触发事件(如杀怪掉落特定物品)。
UserCmd.txt:自定义游戏命令(如@god开启无敌模式)。
2. 引擎插件(.dll)
存储路径:
plaintext
D:\MirServer\Mir200\PlugList.txt# 插件加载列表
D:\MirServer\Mir200\PlugIns\ # 插件文件目录
典型插件:
IPLocal.dll:IP 封禁与白名单管理。
Gamemaster.dll:GM 工具扩展(刷物品、传送玩家)。
五、日志与监控数据
日志系统记录玩家行为和服务器状态,用于故障排查和安全审计:
1. 玩家行为日志
存储路径:
plaintext
D:\MirServer\LogServer\BaseDir\2025-07-10.log# 按日期命名的日志文件
记录内容:
登录 / 登出时间、IP 地址。
物品交易、丢弃、拾取记录。
角色死亡原因(怪物击杀、玩家 PK)。
2. 系统运行日志
存储路径:
plaintext
D:\MirServer\LoginSrv\ConLog\ # 登录网关日志
D:\MirServer\DBServer\Log\ # 数据库操作日志
关键信息:
数据库连接错误、脚本执行异常。
服务器负载、内存使用情况。
六、不同引擎的结构差异
1. GOM 引擎
数据库:
角色数据存于D:\MirServer\DBServer\FDB\HumanDB.db。
支持 MySQL 扩展(需配置DBServer.ini)。
脚本:
QFunction-0.txt为核心功能脚本,支持加密(EncryptQFunction工具)。
登录器:
配置文件LoginGate.ini控制登录逻辑,需与服务器 IP 匹配。
2. HERO 引擎
数据库:
独立数据库D:\MirServer\DBServer\FDB\HeroDB.db。
行会数据存于D:\MirServer\Mir200\GuildBase\Guilds。
脚本:
QManage.txt处理登录流程,QMapEvent-0.txt管理地图事件。
登录器:
列表文件ServerList.txt需包含服务器 IP 和端口。
3. GEE 引擎
数据库:
使用D:\MirServer\Mud2\DB\Magic.DB等 DBC 文件。
支持动态扩展表结构。
脚本:
PsMapQuest.txt控制任务触发,PsNpcScript.txt管理 NPC 行为。
登录器:
配置文件Config.ini需指定网关端口和补丁路径。
七、数据交互流程
玩家登录:
登录器读取LoginGate.ini,连接登录网关(LoginGate.exe)。
登录网关验证账号密码,从IDDB获取角色列表。
角色数据从HumanDB.db加载,通过游戏网关(RunGate.exe)进入游戏。
游戏内操作:
玩家行为触发脚本(如拾取物品),调用QFunction-0.txt逻辑。
数据变更(如装备更新)实时写入数据库,并同步到其他服务器节点。
日志记录:
玩家操作生成日志,存储于LogServer\BaseDir。
系统日志通过M2Server.exe控制台输出,可配置ELK Stack实时监控。
总结
传奇服务器的数据结构以数据库为核心,通过配置文件和脚本驱动游戏逻辑,结合地图资源和日志系统形成完整的生态。不同引擎在目录结构和文件命名上存在差异,但核心模块(数据库、配置、脚本)的功能逻辑高度一致。理解这一结构是服务器管理、备份恢复和安全防护的基础,建议结合具体引擎文档进行深度优化。
页:
[1]