设为首页收藏本站
  • 官方微信
    lmkj_wx 微信公众号 添加方式:
    1:扫描左侧二维码
  • 手机访问
    lmkj_sj
  •  找回密码
     立即注册

    QQ登录

    只需一步,快速开始

    查看: 4|回复: 0

    传奇游戏服务端结构详细介绍

    [复制链接]
    avatar
    • 打卡等级:魔龙套勇士
    • 打卡总天数:109
    • 打卡月天数:2
    • 打卡总奖励:13292
    • 最近打卡:2025-08-02 00:01:48

    6259

    主题

    114

    回帖

    7789

    积分

    管理员

    本站站长

    积分
    7789
    online_admin 发表于 昨天 17:50 | 显示全部楼层 |阅读模式
    传奇游戏服务端(以主流的热血传奇类服务端为例)是一个多模块协同工作的复杂系统,负责处理玩家连接、游戏逻辑、数据存储、交互响应等核心功能。其结构可按 “核心程序 - 配置文件 - 数据存储 - 资源脚本” 四大维度划分,不同引擎(如 Hero、GeeM2、GOM、3K 等)的目录结构略有差异,但核心模块一致。以下是详细介绍:
    一、核心服务程序:服务端的 “运行中枢”
    服务端的核心功能由多个独立程序协同实现,这些程序通常位于服务端根目录(如MirServer)下,各司其职且相互通信。
    1. 登录网关(LoginGate/GameGate)
    作用:处理客户端登录请求,验证账号密码、拦截非法连接、分配游戏服务器线路。
    核心文件:
    LoginGate.exe(主程序):监听登录端口(默认 7000),接收客户端登录数据包。
    LoginGate.ini(配置文件):设置登录端口、服务器名称、最大连接数、防攻击参数(如每秒最大连接限制)。
    工作流程:
    客户端 → 登录网关(验证账号密码) → 验证通过 → 返回游戏服务器 IP 和端口 → 客户端连接游戏引擎。
    2. 游戏引擎主程序(M2Server)
    作用:服务端的 “大脑”,处理所有游戏逻辑(玩家移动、战斗、技能、任务、NPC 交互等),管理地图、怪物、物品状态。
    核心文件:
    M2Server.exe(主程序):传奇最核心的程序,占用资源最高,直接决定服务器性能。
    M2Server.ini(核心配置):控制服务器基础参数(如经验倍数、金币掉落率、PK 惩罚、最大在线人数)。
    核心功能:
    实时同步玩家状态(坐标、血量、装备);
    计算战斗伤害(根据攻击、防御、技能公式);
    触发脚本事件(如玩家死亡、NPC 对话、任务完成);
    管理怪物 AI(巡逻、攻击、掉落)。
    3. 数据库服务(DBServer)
    作用:负责玩家数据(等级、装备、金币等)的读取、存储和同步,是服务端的 “数据仓库”。
    核心文件:
    DBServer.exe(主程序):连接数据库文件,处理 M2Server 的数据读写请求。
    DBConfig.ini(配置文件):设置数据库路径、自动备份时间、数据同步频率。
    数据交互流程:
    玩家操作(如升级、捡取物品) → M2Server 记录临时数据 → 定时(或触发事件时) → DBServer 写入数据库 → 玩家下线时强制同步所有数据。
    4. 辅助服务程序
    网关守护进程(Guardian):监控 LoginGate 和 M2Server 的运行状态,若程序崩溃则自动重启(防止服务器离线)。
    日志服务器(LogServer):收集所有操作日志(登录记录、交易记录、GM 命令使用记录),输出到Logs目录。
    机器人服务(RobotServer):部分引擎自带 “假人系统”,生成 AI 玩家填充服务器,提升人气(配置文件通常为Robot.ini)。
    二、配置文件目录:服务端的 “规则手册”
    配置文件是服务端的 “参数开关”,控制游戏玩法、数值平衡、功能限制等,核心目录为MirServer\Mir200\Envir(不同引擎路径一致)。
    1. 核心配置(Envir 根目录)
    MapInfo.txt:地图参数配置
    记录所有地图的基础信息,如:
    ini
    [3]  ; 地图编号(3=盟重土城)
    Name=盟重土城  ; 地图名称
    SafeZone=1     ; 是否为安全区(1=是,0=否)
    Reputation=0   ; 进入所需声望
    MonsterMax=200 ; 地图最大怪物数量

    Monster.txt:怪物属性配置
    定义怪物的血量、攻击、防御、经验、掉落等,如:
    ini
    稻草人  ; 怪物名称
    HP=100   ; 血量
    MP=0     ; 魔法值
    Attack=5-10  ; 攻击范围
    Defense=1-3  ; 防御范围
    Exp=50   ; 经验值
    DropItem=1,0.2  ; 掉落物品(物品ID=1,概率20%)

    Item.txt:物品属性配置
    定义装备、药水、材料的属性,如:
    ini
    裁决之杖  ; 物品名称
    Type=1    ; 类型(1=武器)
    Job=0     ; 适用职业(0=战士)
    Attack=0-30  ; 攻击加成
    Level=38  ; 需求等级
    Durable=32  ; 耐久度

    Npc.txt:NPC 配置
    记录 NPC 的坐标、名称、对话脚本绑定,如:
    ini
    3 330 330  ; 地图编号、X坐标、Y坐标
    服装店老板  ; NPC名称
    1  ; 类型(1=普通NPC)
    @Store  ; 绑定的脚本入口(调用商店脚本)

    2. 脚本配置(Envir\Market_Def)
    脚本是实现交互逻辑的核心(如 NPC 对话、任务、活动),主流引擎通过.txt文件编写,常用目录:

    QFunction-0.txt:全局事件脚本
    绑定玩家行为事件(如死亡、升级、捡取物品),例如:
    lua
    [@PlayerLevelUp]  ; 玩家升级时触发
    SENDMSG 5 "恭喜<$USERNAME>升级到<$LEVEL>级!"  ; 发送系统消息
    GIVE 金币 1000  ; 奖励1000金币

    Store.txt:商店脚本
    定义 NPC 商店的售卖物品,例如:
    lua
    [@Store]  ; 与Npc.txt中的@Store绑定
    STOREBEGIN 服装店  ; 商店名称
    STOREITEM 布衣 1 100  ; 物品名称 数量 单价
    STOREITEM 皮甲 1 200
    STOREEND

    Task.txt:任务脚本
    定义任务接取、完成条件、奖励,例如:
    lua
    [@Task101]  ; 任务ID=101
    TASKACCEPT 收集10个鹿肉  ; 接取任务提示
    REQUIREITEM 鹿肉 10  ; 完成条件:10个鹿肉
    TASKREWARD 经验 500  ; 奖励500经验

    3. 引擎扩展配置
    Mir200\Setup.txt:引擎功能开关
    控制是否开启转生、元素属性、行会战争等高级功能,如:
    ini
    OpenRebirth=1  ; 开启转生系统(1=开启)
    OpenElement=1  ; 开启元素属性系统

    Mir200\Notice.txt:系统公告
    设置定时公告(如活动提醒),每行一条,支持变量:
    plaintext
    10 欢迎<$USERNAME>加入游戏!  ; 每隔10秒发送一次
    30 双倍经验活动将于10分钟后开启!

    三、数据存储:玩家信息的 “保险柜”
    服务端的数据存储分为 “玩家数据” 和 “系统数据”,主流存储方式有两种:
    1. DBC2000 数据库(传统引擎)
    存储内容:玩家角色信息(等级、装备、金币)、行会数据、好友列表等。
    核心文件:
    位于MirServer\Mud2\DB目录,以.dbf格式存储(如HeroDB.dbf存储玩家基础信息,Items.dbf存储物品数据)。
    特点:轻量、读写速度快,但容量有限(单表最大约 2GB),适合中小型私服。
    2. MySQL 数据库(大型 / 定制服务端)
    存储内容:与 DBC2000 一致,但支持更大数据量和多服务器同步(如跨服玩法)。
    配置方式:通过DBConfig.ini设置 MySQL 的 IP、端口、账号密码,替代 DBC2000。
    特点:适合高并发、大数据量场景(如万人在线服务器),但配置复杂。
    3. 数据备份
    自动备份:DBServer 会定时(默认每小时)将数据备份到MirServer\Backup目录,文件格式为DB_YYYYMMDD_HHMMSS.rar。
    手动备份:直接复制Mud2\DB目录下的.dbf文件(需先关闭服务端,避免数据冲突)。
    四、地图与资源:游戏世界的 “骨架”
    1. 地图文件(Mir200\Map)
    核心文件:以.map为后缀的地图数据文件(如3.map对应盟重土城),记录:
    地形信息(可走区域、障碍物、传送点);
    刷怪点(怪物类型、刷新时间、数量);
    特殊区域(如安全区、副本入口)。
    编辑工具:通过MapEditor(地图编辑器)修改,保存后需重启服务端生效。
    2. 素材引用(客户端关联)
    服务端不直接存储图片、音效等素材,仅通过配置文件指定素材路径(与客户端对应)。例如:

    物品图标:Item.txt中通过Shape=100指定客户端Data\Item.wil中的第 100 个图标;
    怪物模型:Monster.txt中通过ResID=5指定客户端Data\Monster.wil中的第 5 个模型。
    五、日志与安全:服务端的 “监控器”
    1. 日志系统(MirServer\Logs)
    LoginLog.txt:记录所有登录信息(账号、IP、登录时间、是否成功)。
    ActionLog.txt:记录玩家关键操作(交易、丢弃物品、使用 GM 命令)。
    ErrorLog.txt:记录服务端错误(脚本语法错误、程序崩溃原因),是排查问题的核心依据。
    2. 安全防护配置
    防外挂:M2Server.ini中开启AntiCheat=1,拦截加速、无敌等外挂数据包。
    IP 限制:LoginGate.ini中设置MaxIPConnect=3(单 IP 最大 3 个账号连接,防多开)。
    账号安全:DBConfig.ini中开启AccountBind=1(强制账号绑定手机号 / 邮箱)。
    六、不同引擎的结构差异
    Hero 引擎:结构最经典,脚本以QFunction-0.txt为核心,配置文件简洁,适合新手入门。
    GeeM2 引擎:新增Envir\ExData目录(存储元素、转生等扩展数据),脚本支持更多函数(如元素属性计算)。
    GOM 引擎:强化了地图事件系统,新增Envir\Event目录(配置地图定时活动,如刷 BOSS)。
    3K 引擎:数据库兼容性更强,支持 MySQL 和 DBC2000 无缝切换,适合大型服务器。
    总结
    传奇服务端的结构是 “程序驱动 + 配置定义 + 数据支撑” 的有机整体:

    核心程序(M2Server、LoginGate 等)负责 “运行”;
    配置文件(Envir 目录)负责 “定规则”;
    数据库负责 “存数据”;
    地图与脚本负责 “造世界”。

    理解这一结构,是进行服务端修改(如调整倍率、添加新玩法)的基础。实际操作中,需结合具体引擎的文档,重点关注M2Server.ini(核心参数)、QFunction-0.txt(交互逻辑)和Item/Monster.txt(数值平衡)三大模块。

    您需要登录后才可以回帖 登录 | 立即注册 qq_login

    本版积分规则

    QQArchiver 手机版 小黑屋 39传奇素材网 ( 蜀ICP备2022016510号-3 )

    快速回复 快速发帖 返回顶部 返回列表