MMORPG服务器端架构和设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


账户收支



账户数据库
⑤允许/拒绝 ⑥ 是否有账户余额? ⑦允许/拒绝
登陆服务器


令牌 生成


⑧ 加密用户ID,生成令牌
⑨允许/拒绝, 最终回应

游戏玩家
MMORPG服务器端设计
服务器端工作流
选择玩家
① 使用令牌,发出请求 ② 空索引队列?
空索引队列
③ 是否存在空位 ④ 请求账户角色列表
网关代理 规则
服务器端部署
服务器个数: 5
方案2
● 中等成本 ● 普通性能
逻辑地图 服务器1
逻辑地图 服务器n
聊天服务器
网关服务器
角色数据库 账户数据库
登陆服务器
游戏玩家
游戏玩家
—— 单台服务器
MMORPG服务器端设计
服务器端部署
服务器个数: 5+N (N>=1)
方案3
● 高成本 ● 高性能
逻辑地图 服务器1
逻辑地图 服务器N
MMORPG服务器端设计
服务器架构
登陆服务器
MMORPG服务器端设计
服务器架构
登陆服务器
MMORPG服务器端设计
服务器架构
角色队列
网关服务器
DoS 检测 令牌
索引 队列A
空闲索引 队列 A 玩家1角色A 玩家1角色B 玩家1角色C
游戏玩家
地图 代理 玩家n角色A 玩家n角色B 索引 队列B
角色认证
MMORPG服务器端设计
服务器架构
登陆服务器
MMORPG服务器端设计
登陆服务器
严格讲不属于登陆服务器一部分,只是为找到 登陆服务器作准备。
MMORPG服务器端设计
服务器架构
登陆服务器
MMORPG服务器端设计
服务器架构
登陆服务器
参见Logonserver.conf文件: <LogonDatabase Hostname = "localhost“ Username = "root“ Password = "“ Name = “TestLogonDB“ Port = "3306“ Type = "1">
请求队列 …… …… …… ……
请求队列
第二次请求
请求代理 令牌 用户ID 游戏玩家
玩家n结算
空闲索引 队列 B
保存 角色服务器
载入
日志服务器 (可选)
MMORPG服务器端设计
服务器架构
网关服务器
MMORPG服务器端设计
服务器架构
网关服务器
MMORPG服务器端设计
服务器架构
网格 数据
地图服务器
网关服务器
进入游戏
① 使用令牌,发出请求 ② 用户ID是否在角色列表
数据
同步
③ 是则处理,否则等待 ④ 地图服务器处理或等待
角色列表
⑤ 客户端随机请求 ⑥ 服务器端随机回复 ⑦ 其它玩家信息间歇性请求
数据


地图服务器
网格信息
同步
⑧ 其它玩家信息间歇性回复



⑤ ④

游戏玩家
逻辑地图 服务器1
逻辑地图 服务器N
逻辑地图 服务器1
逻辑地图 服务器N
角色数据库1
网关服务器1
网关服务器N
角色数据库N
聊天服务器
登陆服务器
账户数据库
游戏玩家
游戏玩家
MMORPG服务器端设计
服务器端工作流
用户登陆
① 使用帐户、密码,发出请求
黑名单
掩码 过滤表
② 黑名单、掩码过滤 ③ 允许/拒绝 ④ 账户、密码有效?
--架构设计和开发基础
MMORPG服务器端设计
■ ■
■ ■
服务器端设计目标 服务器端架构
服务器端实现 服务器端工作流
MMORPG服务器端设计
服务器端设计目标
● 低系统配置 ● 低学习曲线 ● 高稳定性 ● 高性能 ● 高适应性 ● 跨平台支持
MMORPG服务器端设计
服务器端架构
服务器集群 地图服务器
MMORPG服务器端设计
服务器架构
地图服务器
MMORPG服务器端设计
服务器架构
地图服务器
MMORPG服务器端设计
服务器端部署
服务器个数: 1
方案1
● 低成本 ● 低性能
逻辑地图 服务器1
逻辑地图 服务器N
聊天服务器
网关服务器
角色数据库 账户数据库
登陆服务器
游戏玩家
游戏玩家
—— 单台服务器
MMORPG服务器端设计
游戏循环 用户群
网格数据管理 玩家加入 玩家离开 玩家移动 周围玩家
逻辑地图 服务器1 逻辑地图 服务器2
循环1
角色列表1
数据
角色列表2
循环2
网关 服务器
同步
逻辑地图 服务器N
地图数据库 (可选)
角色列表n
循环n
MMORPG服务器端设计
服务器架构
地图服务器
MMORPG服务器端设计
服务器架构
参见ascent.conf: <WorldDatabase Hostname = "localhost" Username = "root" Password = "" Name = “TestWorldDB" Port = "3306" Type = "1"> <CharacterDatabase Hostname = "localhost" Username = "root" Password = "" Name = “TestCharacterDB“ Port = "3306" Type = "1"> 地图服务器
地图服务器
网关服务器 数据库服务器 登陆服务器
对话服务器 账户服务器 日志服务器
游戏玩家
游戏玩家
MMORPG服务器端设计
服务器架构
登陆服务器
DoS 检测
游戏玩家
令牌生成
账户收支
黑名单
网关代理
授权
认证
请求队列 …… …… …… …… 请求队列
第一次请求
请求代理 账户 密码 游戏玩家
掩码认证
账户数据库
聊天服务器
网关服务器
角色数据库
登陆服务器
账户数据库
游戏玩家
游戏玩家
—— 单台服务器
MMORPG服务器端设计
服务器端部署
—— 单台服务器
M —— 服务器集群数
商业方案
服务器个数: 3+M*(2+N) (M>=1,N>=1)
N —— 集群地图服务器数
● ● ● ● ●
支持大规模玩家 高成本 高负载均衡 高性能 高灵活性
⑧ ⑨⑩
生成 令牌



角色数据库
⑤ 获取角色列表 ⑥ 向玩家反馈角色信息 ⑦ 玩家选择角色
网关服务器
④ ⑦ ⑥ ①
⑧ 玩家ID信息& 玩家位置信息等
⑨ 根据规则,提议地图服务器 ⑩ 加密用户ID & 地图服务器ID, 生成令牌

游戏玩家
⑾ 选择地图服务器,最后回应
MMORPG服来自百度文库器端设计
服务器端工作流
相关文档
最新文档