ryzom 游戏服务器做了什么功能

Image
Image

Ryzom(Ryzom Core)的游戏服务器不是简单的“地图服务器”,而是一套完整 MMORPG 后端框架。它采用 C++ + 服务化架构,把一个大型网游拆成多个独立 Service。Ryzom Core 开源了客户端、服务器和工具链,是少数完整开源 MMORPG 框架之一。

整体结构类似:

                 Client(Qt/OpenGL)
                       |
                  Login Service
                       |
                 Frontend Service
                       |
 ------------------------------------------------
 |              |              |                |
World Service  AI Service   Entity Service   Chat
 |              |              |                |
地图状态       NPC行为       玩家数据        社交
 |
Database

1. 登录认证服务器(Login/Auth)

负责:

  • 用户账号登录
  • 密码验证
  • 创建角色
  • 选择服务器
  • Session 管理
  • 防止重复登录

类似:

客户端
  |
Login Server
  |
账号数据库
  |
返回玩家ID

2. 世界服务器(World Server)

这是 MMO 核心。

负责:

玩家位置

例如:

玩家A:
x=1234
y=5678
地图=森林区域

服务器实时维护:

  • 坐标
  • 朝向
  • 移动状态
  • 可见玩家列表

AOI(Area Of Interest)

MMO 必须解决:

玩家不可能收到全世界所有人的数据

例如:

10000玩家在线

实际发送:

自己附近100米
     ↓

     玩家
   A B C D

只同步附近对象。


3. NPC AI服务器

Ryzom 有独立 AI Service。

负责:

  • NPC寻路
  • 怪物攻击
  • 群体行为
  • 动物生态

例如:

狼:

发现玩家
   |
计算距离
   |
追击
   |
攻击
   |
逃跑

不是客户端计算,而是服务器决定。


4. Entity 实体系统

MMO 世界所有东西都是 Entity:

例如:

Entity
 |
 + 玩家
 |
 + NPC
 |
 + 怪物
 |
 + 道具
 |
 + 建筑
 |
 + 资源

服务器维护:

class Entity
{
    uint64 id;

    Position pos;

    HP hp;

    Inventory inventory;
};

5. 战斗系统

服务器计算:

例如:

玩家攻击:

客户端:
我要攻击


服务器:

检查:
距离?
武器?
冷却?
命中?

计算:

伤害 = 攻击力 - 防御力


广播:
玩家A造成50伤害

防外挂:

客户端不能决定结果。


6. 角色数据服务器

保存:

玩家

账号
 |
角色
 |
技能
 |
装备
 |
背包
 |
任务
 |
经验

例如:

数据库:

player

id
name
level
money
skill
equipment

7. 聊天服务器

负责:

  • 世界聊天
  • 公会聊天
  • 私聊
  • 队伍聊天

结构:

Chat Service

玩家A
 |
消息
 |
Chat Server
 |
玩家B,C,D

8. 工会 / 社交系统

包括:

  • Guild
  • Friend
  • Group
  • Alliance

例如:

Guild

成员列表

权限:

Leader
Officer
Member

9. 任务系统

服务器管理:

Quest

任务ID

条件:

杀10只怪

奖励:

经验
金币
装备

10. 经济系统

MMO 最重要。

负责:

  • 商店
  • 交易
  • 拍卖
  • 制造
  • 资源

例如:

玩家A
 |
交易请求
 |
服务器验证
 |
扣金币
 |
增加物品

11. 地图和资源系统

Ryzom 特别强的是生态系统:

例如:

草
 ↓
动物
 ↓
玩家采集
 ↓
制造装备

世界不是静态地图。


12. 服务管理系统

Ryzom 最大特点:

服务器不是一个exe,而是一堆服务。

例如:

server/

login_service
world_service
ai_service
chat_service
database_service
admin_service

每个:

.exe
 |
独立运行
 |
网络通信

类似现在微服务架构。

(ryzomcore.atlassian.net)


Ryzom服务器技术特点

功能Ryzom实现
语言C++
网络自研NeL Net
架构Service-Oriented
通信消息事件
数据库持久化角色数据
地图大世界
AI服务器AI
客户端C++
工具世界编辑器

(ryzomcore.atlassian.net)


如果用 Qt/C++ 做 ERP/MES/WMS,可以借鉴哪些?

其实 Ryzom 的服务器架构非常适合企业软件:

比如:

ERP Server

LoginService
 |
UserService
 |
OrderService
 |
InventoryService
 |
FinanceService
 |
ReportService

对应:

Ryzom游戏ERP
玩家客户/员工
Entity订单/物料
World Service业务服务
AI Service自动调度
Chat消息中心
Inventory库存
Quest流程任务

所以 Qt + C++ + Ryzom这种Service架构,完全可以做工业软件平台。

Ryzom最大的价值不是游戏,而是它提供了一套成熟的 C++大型实时分布式系统设计范例。(Ryzom Core Community | Nevrax Library)

类似文章