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