给出Ryzom服务之间的交互图
下面给出 Ryzom Core 服务器主要 Service 之间的交互关系图(逻辑架构)。
┌─────────────────┐
│ Client │
│ (游戏客户端) │
└────────┬────────┘
│
│ TCP/UDP
▼
┌─────────────────┐
│ WS │
│ Welcome Service │
│ 登录入口/分配 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ FES │
│ FrontEnd Service│
│ 客户端连接层 │
└────────┬────────┘
│
│ 消息转发
▼
┌────────────────────────────────────────────┐
│ │
│ 游戏核心逻辑层 │
│ │
│ ┌──────────────────────────────┐ │
│ │ EGS │ │
│ │ Entities Game Service │ │
│ │ 玩家/战斗/任务/物品/经济 │ │
│ └──────────────┬───────────────┘ │
│ │ │
│ ┌─────────┴─────────┐ │
│ │ │ │
│ ▼ ▼ │
│ ┌────────────┐ ┌──────────────┐ │
│ │ GPMS │ │ AIS │ │
│ │位置管理 │ │ AI服务 │ │
│ │坐标/AOI │ │ NPC/怪物行为 │ │
│ └─────┬──────┘ └──────┬───────┘ │
│ │ │ │
│ └─────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌────────────┐ │
│ │ TS │ │
│ │ Tick时间 │ │
│ │ 游戏时钟 │ │
│ └────────────┘ │
│ │
└────────────────────────────────────────────┘
数据/基础服务层
┌────────────────────────────────────┐
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ MS │ │ BMS │ │
│ │ Mirror │◄────►│ Backup │ │
│ │数据同步 │ │ 数据保存 │ │
│ └──────────┘ └──────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ IOS │ │ MFS │ │
│ │聊天/文本 │ │邮件论坛 │ │
│ └──────────┘ └──────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ DSS │ │ PDSS │ │
│ │动态剧情 │ │持久数据 │ │
│ └──────────┘ └──────────┘ │
│ │
└────────────────────────────────────┘
服务管理层
┌─────────────┐
│ NS │
│ Naming │
│ 服务注册中心 │
└──────┬──────┘
│
┌─────────────────────┼───────────────────┐
│ │ │
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ AS │ │ AES │ │ MOS │
│Admin中心 │───────►│服务启动 │ │监控服务 │
└───────────┘ │停止管理 │ └───────────┘
└───────────┘
日志分析系统
┌───────────┐
│ LGS │
│ Logger │
│ 日志采集 │
└─────┬─────┘
│
▼
┌───────────┐
│ LAS │
│日志分析 │
└───────────┘
┌───────────┐
│ RBS │
│Reference │
│数据构建 │
└───────────┘
玩家登录流程
Client
|
| 登录
↓
WS
|
| 查询服务器
↓
SU
|
| 查找Shard
↓
NS
|
| 找到服务
↓
FES
|
↓
EGS
|
↓
进入游戏
游戏运行时数据流
例如玩家移动:
客户端
|
| 移动(x,y,z)
↓
FES
|
↓
EGS
|
├──────────────► GPMS
| 更新位置
|
├──────────────► AIS
| NPC感知
|
├──────────────► TS
| 下一Tick计算
|
↓
FES
|
广播附近玩家
|
客户端
战斗流程
玩家A攻击玩家B
Client A
|
↓
FES
|
↓
EGS
|
|
├──检查距离(GPMS)
|
├──计算技能
|
├──查询状态(MS)
|
├──保存结果(BMS)
|
↓
FES
|
广播
|
Client B
服务层级关系总结
管理控制
|
AS + AES + NS
|
-------------------------
| |
网络接入 游戏逻辑
| |
FES EGS
| |
WS -----------------
| | |
GPMS AIS TS
数据支撑
|
MS / BMS / PDSS / LGS
辅助系统
|
IOS / MFS / DSS / RBS
这个架构实际上非常接近现在的大型 微服务 + 实时计算系统。如果改造成企业级平台(ERP/MES/WMS),可以直接映射为:
Gateway(FES)
|
Business Engine(EGS)
|
Inventory / Order / MES / Finance Service
|
Database Service(BMS)
|
Message Center(IOS)
|
Workflow Engine(DSS)
Ryzom 的核心价值就在于:把一个大型实时世界拆成几十个独立 C++ 服务,并通过消息总线协同运行。