X-Matrix

MMORPG无缝服务器设计

无缝服务器概述

所谓的无缝服务器是指一个游戏只有一个游戏世界,游戏中所有的角色都互相可见,可交互的。
传统的游戏服务器是分区的。进入游戏之前,先要选择游戏服务器组,再选择一个服务进入。进入游戏后如何要从一个地图到另一个地图,则要切换服务器(客户端或者接入服务器内部切换),对玩家来说,则是画面切换,像大话西游,传奇都是这样。魔兽世界在进入服务器后,如果不前往另一个大陆,则无换面切换,但 这不是真正的无缝。
无缝服务器复杂的根本是服务大量(甚至海量)玩家的要求。玩家多意味着交互多,数据流量大,必然要将请求发往多个服务器处理,于是问题就来了,那就是服务器交互。传统分区服务器设计也是多服务器的,但服务器相数量较小,交互的复杂性不大。但,考虑无缝服务器要服务的是海量的玩家请求,服务器数量比传统服务器大的多。
考虑下面的情况:
A玩家连接svr1,B玩家连接svr2,C玩家连接服务器svr3。现在A要砍B一下,svr1接到了A砍B的请求,但在svr1上没有B玩家,它如何才能找到B呢?也许加一个全局的玩家位置服务器可以解决这个问题,这个服务器上记录了每个玩家位于哪个服务器。但,考虑下,这个全局服务器只有一台吗?它可以处理所有的玩家吗?如果人数太多,在增加一台这样的服务器会怎么样?它们之间如何交互?很快就会发现,这个方法行不同。其实,这种全局服务器 的存在是分区服务器时代的产物,在无缝的前提下,不会在有全局服务器这样的东西。全局意味着唯一,而无缝则要求无限动态扩展。
无缝服务器的关键是维护一个服务的网状结构,只有这样,才可能动态扩展。

posted on 2008-07-30 14:56 x-matrix 阅读(1882) 评论(11)  编辑 收藏 引用

评论

# re: 无缝服务器概述 2008-07-30 15:21 Niino

关注  回复  更多评论   

# re: 无缝服务器概述 2008-07-30 16:21 lwan

p-2-p ??? 分布式??? 我瞎猜想的,没做过服务器。  回复  更多评论   

# re: 无缝服务器概述 2008-07-30 16:28 unnamed

在没有全局服务器的情况下,如果要查找B玩家,会有遍历多个服务器的可能性吧?  回复  更多评论   

# re: 无缝服务器概述 2008-07-30 17:30 Jeff Chen

我觉得可以参考GSM移动通讯网络的设计。

每个区域(一般是一个城市)都会有一个有一个HLR(归属服务寄存器)记录该区域所有用户的信息,包括当前所在位置。

当移动用户漫游到其它区域时,该区域所在的HLR根据用户的电话号码,向用户所属的HLR发信息获取用户信息和登记其所在区域。当然,用户移动电话的状态改变,同样会通知其HLR。

当有电话拨打漫游用户电话时,其所在的网络会先向漫游用户所属的HLR询问位置,再拨打电话。

那么,类似的,在分区服务器增加一个类似HLR的服务,并在分区间的保持游戏用户位置。

当第一次向B消息时,先询问其所属分区的HLR服务,获取其所在位游戏服务器(需要考虑位置缓存及策略),再直接向所在的游戏服务器发送消息。

这样既可以实现游戏用户在分区间‘漫游’,又不需要一个全局的服务器,易于维护和扩展。  回复  更多评论   

# re: 无缝服务器概述 2008-07-30 23:19 x-matrix

@Jeff Chen
"当移动用户漫游到其它区域时,该区域所在的HLR根据用户的电话号码,向用户所属的HLR发信息获取用户信息和登记其所在区域。"
当前的HLR如何找到用户原来所在的HLR来获取信息呢?似乎存在某种服务查找或者消息自动路由机制,所得请求被恰当的服务器处理。  回复  更多评论   

# re: 无缝服务器概述 2008-07-31 08:10 Jeff Chen

@x-matrix
根据用户电话号码的号码段,如1391234,是北京的。

当然,这个号码段和HLR的对应表是在各个HLR间同步的。当一个HLR增加一个号码段时,会通知其它HLR。

游戏用户的用户号码也可以通过类似的做法。  回复  更多评论   

# re: 无缝服务器概述 2008-07-31 10:29 bobcy

云风的blog上好像看到过类似如何设计无缝服务器的文章。  回复  更多评论   

# re: 无缝服务器概述 2008-07-31 10:32 x-matrix

@bobcy
他是大世界,不是完全无缝。
  回复  更多评论   

# re: 无缝服务器概述 2008-08-05 20:18 天涯明月刀

你这种所谓无缝,纯粹是找茬,不存在这样的设计结构,玩家视野内的其他玩家涉及到复杂的状态同步,是不可能做在两个服务器上的  回复  更多评论   

# re: 无缝服务器概述 2008-08-11 09:51 x-matrix

@天涯明月刀
在地图的交叠区域,玩家是位于两个服务器上的,bigworld既是此种。
  回复  更多评论   

# re: 无缝服务器概述[未登录] 2008-08-22 18:48 flyswift

你这种所谓无缝,纯粹是找茬,不存在这样的设计结构,玩家视野内的其他玩家涉及到复杂的状态同步,是不可能做在两个服务器上的
========
说得对,这种无缝会导致服务器逻辑异常复杂与低效。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


公告

MMORPG无缝服务器论坛
Google Groups
xmatrix
Visit this group

导航

统计

留言簿(2)

随笔档案

最新评论

阅读排行榜