一、分层架构设计
武易传奇服务端采用经典的分层架构,分为以下核心层级:
1. 网络通信层
功能:负责客户端与服务端的数据传输,包括加密解密、数据包解析、超时处理。
组件:
网关服(Gate):管理连接、转发消息(如登录请求到Web服,移动指令到场景服)。
接口分类:ID登录接口(LoginGate)、角色登录接口(SelChrGate)、游戏运行接口(RunGate)。
2. 应用层(逻辑处理层)
功能:执行游戏核心逻辑,包括战斗、技能、副本、经济系统等。
组件:
游戏服(Game):承载全局逻辑(如升级、装备强化)。
场景服(Scene):管理玩家视野同步、地图事件(如刷怪、资源刷新)。
战斗服(Fighter):处理独立战斗副本或跨服匹配玩法(如竞技场)。
3. 数据存储与缓存层
功能:持久化玩家数据并提供高速读写支持。
组件:
缓存服务(CacheServer):如Redis/Memcached,缓存角色状态、好友关系等高频数据。
数据库(DB):存储玩家账号(IDDB)、角色装备(FDB)、日志(GameLog)等。
二、核心组件解析
| 组件 | 职责 | 配置文件/路径 |
|-|--||
| Web服 | 处理登录、创角、充值、GM命令;连接数据库验证账号 | `D:\\MirServer\\LoginSrv\\IDDB`(账号库) |
| 网关服 | 消息路由(如移动→场景服,战斗→战斗服) | `Mirgate.ini`(接口配置) |
| 游戏服 | 全局逻辑(等级、经济系统);调用缓存读写 | `!Setup.txt`(经验配置) |
| 场景服 | 地图管理、怪物刷新(如精英怪1小时刷新)、玩家视野同步 | `MonGen.txt`(刷怪配置) |
| 日志服务 | 记录物品交易、玩家行为;独立部署避免主业务阻塞 | `LogDataServer.exe`(日志服务程序) |
三、数据流与同步机制
1. 玩家操作流程
登录:客户端 → Web服(验证) → 网关服(分配Token) → 游戏服(加载角色)。
战斗:游戏服匹配 → 战斗服执行逻辑 → 结果回传游戏服(发奖/结算)。
移动:客户端 → 网关服 → 场景服(同步周围玩家)。
2. 数据同步优化
事件驱动:实时响应怪物刷新、攻城事件(如`AttackSabukWall.txt`管理攻城信息)。
压缩传输:网络层对数据包压缩,降低延迟。
四、扩展性与优化策略
1. 跨服架构
平台服(Platform):协调跨服活动(如全服战场),多个服务器共享同一平台。
2. 热更新支持
逻辑层用Python/Lua编写(如技能脚本),支持不停机更新。
3. 性能调优
分线设计:多线路部署精英怪(如沃玛将军10条线分流玩家)。
异步存储:非关键数据(如日志)异步写入数据库,减少主线程阻塞。
五、武易传奇特色模块
魂石系统/必杀技:通过`Envir\\Npc_def`配置NPC交互逻辑,触发特殊玩法。
万人攻城:依赖场景服的动态负载均衡,分区块处理玩家密集区域。
魔幻坐骑:数据存储在`FDB`(角色库),由游戏服处理属性加成逻辑。
架构图示意
客户端 → [SLB负载均衡] → 网关服集群
├─ Web服(登录/充值) → DB
├─ 游戏服(全局逻辑) → Cache → DB
├─ 场景服(地图/刷怪)
└─ 战斗服(副本) → 平台服(跨服)