传奇服务端的架构设计,可以拆解为五个功能独立又相互协作的核心模块。每个模块对应一个独立的可执行程序,各自承担不同的职责,通过内部通信协议完成数据交换。这套架构从早期版本延续下来,形成了稳定的分层结构。
### 登录网关:玩家进入服务器的第一道关卡
登录网关对应的程序文件是LoginGate.exe,负责处理玩家账号验证阶段的连接请求。当玩家打开登录器输入账号密码时,数据首先到达登录网关,由它转发给账号验证服务模块处理。
登录网关的核心作用是端口监听与数据转发。它监听特定端口,接收来自客户端的数据包,验证数据包格式并转发给账号验证服务,再将验证结果返回给客户端。登录网关本身不存储任何玩家数据,只做通道和过滤,阻止格式异常的数据包进入内部网络。
登录网关的配置集中在`!Server.txt`文件中,管理员可以通过修改配置文件调整最大连接数和IP限制等参数。
### 角色网关:角色列表与选择的数据通道
角色网关对应的程序是SelGate.exe,在玩家通过账号验证后开始工作。它的任务是处理角色列表展示、角色创建和角色选择等操作。
玩家输入账号密码验证通过后,登录网关将连接转交给角色网关。角色网关从数据库服务模块获取该账号下的所有角色信息,返回给客户端展示在角色选择界面。玩家选择角色后,角色网关记录本次选择并将连接转交给游戏网关。
角色网关在客户端与游戏世界之间起到了路由决策的作用,确定了玩家进入哪个角色和哪个地图。
### 游戏网关:游戏运行时的数据高速公路
游戏网关对应RunGate.exe,是玩家进入游戏后所有数据交互的中转站。它负责维持客户端与游戏主引擎之间的长连接,承载玩家移动、攻击、拾取、聊天等所有操作的数据传输。
游戏网关的工作方式与登录网关相似,也是监听端口进行数据转发,但游戏网关的处理量和实时性要求远高于前两者。游戏网关支持多开,通过增加网关实例来分担压力。每个网关实例可以独立设置端口和最大连接数,在`Config.ini`文件中配置。
游戏网关的稳定性直接关系到玩家游戏体验。如果游戏网关出现延迟或丢包,玩家会感受到明显的卡顿和操作延迟。
### 游戏主引擎:所有游戏逻辑的计算核心
游戏主引擎对应M2Server.exe,是服务端架构中最核心的模块。M2Server承载了游戏世界的所有逻辑计算,包括角色属性变化、战斗伤害计算、技能释放判定、怪物AI行为、物品掉落机制、任务进度推进等。
M2Server内部包含多个子系统:
- **角色系统**:管理玩家的等级、属性、装备、背包数据
- **战斗系统**:处理攻击命中判定、伤害数值计算、防御减免逻辑
- **技能系统**:管理技能学习、CD计算、效果释放
- **怪物系统**:控制怪物的移动逻辑、仇恨机制、攻击行为
- **物品系统**:管理物品属性、掉落概率、合成规则
- **地图系统**:控制地图切换、坐标移动、碰撞检测
- **脚本系统**:通过加载Envir目录下的脚本文件,动态控制游戏内的各种逻辑,如NPC对话、任务流程等
M2Server启动时读取所有配置文件和脚本,将数据加载到内存中供快速访问。在游戏运行期间,M2Server持续接收游戏网关转发的玩家操作,计算后将结果通过游戏网关返回给客户端和数据库服务。
M2Server的负载压力最大,一旦崩溃整个游戏世界都会停止。
### 数据库服务与日志服务
数据库服务对应DBServer.exe,负责所有需要持久化存储的数据读写操作。玩家下线时,DBServer将角色数据写入数据库;玩家上线时,DBServer从数据库加载角色数据。它采用异步读写机制,减轻M2Server的数据存储压力。
日志服务对应LogServer.exe,负责记录服务器运行过程中的关键事件,包括玩家登录登出记录、GM操作记录、异常错误信息等。日志为事后追溯问题提供依据。
### 模块间通信与启动顺序
各模块之间通过网络通信协议交换数据,通常采用TCP协议。M2Server作为数据枢纽,大部分通信都与其相关:M2Server从DBServer读取角色数据,从LoginServer获取账号验证结果,向RunGate发送游戏状态更新。
模块的启动顺序有严格要求:
1. 首先启动DBServer和LogServer
2. 然后启动M2Server
3. 接着启动LoginServer
4. 最后依次启动LoginGate、SelGate和RunGate
如果启动顺序颠倒,网关无法找到对应的服务模块,客户端也无法正常连接。关闭服务时则按照相反顺序操作。
传奇服务端架构模块化拆解:五大核心组件功能详解
来源:
作者:
点击:

