所謂的無縫服務器是指一個游戲只有一個游戲世界,游戲中所有的角色都互相可見,可交互的。
傳統(tǒng)的游戲服務器是分區(qū)的。進入游戲之前,先要選擇游戲服務器組,再選擇一個服務進入。進入游戲后如何要從一個地圖到另一個地圖,則要切換服務器(客戶端或者接入服務器內(nèi)部切換),對玩家來說,則是畫面切換,像大話西游,傳奇都是這樣。魔獸世界在進入服務器后,如果不前往另一個大陸,則無換面切換,但 這不是真正的無縫。
無縫服務器復雜的根本是服務大量(甚至海量)玩家的要求。玩家多意味著交互多,數(shù)據(jù)流量大,必然要將請求發(fā)往多個服務器處理,于是問題就來了,那就是服務器交互。傳統(tǒng)分區(qū)服務器設計也是多服務器的,但服務器相數(shù)量較小,交互的復雜性不大。但,考慮無縫服務器要服務的是海量的玩家請求,服務器數(shù)量比傳統(tǒng)服務器大的多。
考慮下面的情況:
A玩家連接svr1,B玩家連接svr2,C玩家連接服務器svr3。現(xiàn)在A要砍B一下,svr1接到了A砍B的請求,但在svr1上沒有B玩家,它如何才能找到B呢?也許加一個全局的玩家位置服務器可以解決這個問題,這個服務器上記錄了每個玩家位于哪個服務器。但,考慮下,這個全局服務器只有一臺嗎?它可以處理所有的玩家嗎?如果人數(shù)太多,在增加一臺這樣的服務器會怎么樣?它們之間如何交互?很快就會發(fā)現(xiàn),這個方法行不同。其實,這種全局服務器 的存在是分區(qū)服務器時代的產(chǎn)物,在無縫的前提下,不會在有全局服務器這樣的東西。全局意味著唯一,而無縫則要求無限動態(tài)擴展。
無縫服務器的關鍵是維護一個服務的網(wǎng)狀結(jié)構(gòu),只有這樣,才可能動態(tài)擴展。