给出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++ 服务,并通过消息总线协同运行。

类似文章