大世界體系中它是不應(yīng)該存在的服務(wù)器(如跨服服務(wù)器)

傳統(tǒng)MMORPG服務(wù)器組簡化示意
為便于理解,圖中未涉及登錄、充值、DB 緩存/存儲和跨服相關(guān)的服務(wù)器,是因為在無縫大世界的實現(xiàn)中這些服務(wù)要么已有已經(jīng)成熟的解決方案( 如DB相關(guān))、要么其技術(shù)復雜度完全和是否大世界正交(如登錄和充值服務(wù)),要么在大世界體系中它是不應(yīng)該存在的服務(wù)器(如跨服服務(wù)器)。
為保持服務(wù)器名稱與其內(nèi)涵統(tǒng)一,故對圖1中服務(wù)器的功能邊界說明如下
Gate Server : 網(wǎng)關(guān)服務(wù)器,它的主要功能為接受客戶端連接、客戶端/其它服務(wù)器之間的消息透傳及對外網(wǎng)隔離游戲功能服務(wù)器??蛻舳酥恍枰繥ate Server的地址并和它進行通信,游戲功能服務(wù)器亦如是。
World Server: 世界服務(wù)器,它的主要功能分為兩部分,非游戲場景相關(guān)邏輯功能(如社交系統(tǒng)、聊天、部分社交任務(wù)等等)和游戲場景服務(wù)器的管理功能(場景服務(wù)器發(fā)現(xiàn)、健康檢查、啟動/關(guān)閉等)
Zone Server : 游戲場景服務(wù)器 ,它的主要功能為游戲除World Server負責外的所有功能,如角色移動與位置同步、技能戰(zhàn)斗、AI、尋路、大部分任務(wù)系統(tǒng)功能等。
這兒需要說明的是,Zone 0和 Zone N分管的是不同的游戲場景或游戲服務(wù)副本,這些場景之間有明確的邊界,游戲角色在地圖邊界的一邊完全不會感知到邊界另一邊的游戲角色和游戲內(nèi)容,即不同Zone服務(wù)器上的玩家之間彼此之間的場景玩法及位置等信息完全隔離。
如下圖所示,游戲地圖共分為6個Zone (A~F),其中Zone A中有玩家a(標紅),它的熱區(qū)范圍(AOI)被藍色圓圈所覆蓋。
在經(jīng)典MMORPG服務(wù)器架構(gòu)中,因為Zone之間的隔離性,玩家a只看到了藍色圈中變藍的那些玩家,他看不到Zone A之外其它Zone中被AOI實際位置所覆蓋的玩家,如位于Zone C中的玩家b。當玩家從跨越Zone的邊界,他就會從原來Zone的玩家視野中消失,進而出現(xiàn)在新進入Zone的玩家視野,即一個玩家不可能同時出現(xiàn)在兩個Zone玩家的視野,故兩個Zone上的玩家之間也不可能發(fā)生戰(zhàn)斗。
當游戲存在M個區(qū)服的時候,簡化的服務(wù)器架構(gòu)
拋開運營商業(yè)策略的原因,傳統(tǒng)MMORPG之所以在技術(shù)層面需要分區(qū)分服,其主要原因有:
AOI范圍內(nèi)的計算和消息復雜度和該范圍內(nèi)所覆蓋的Entity(包括玩家)的個數(shù)的平方成正比
單臺游戲服務(wù)器硬件所能提供的計算量、網(wǎng)絡(luò)帶寬、存取IO速率有限,故其只能容納有限數(shù)量的Entity仿真
故其策略是預估單個區(qū)服和單地圖可容納的人數(shù)上限,把玩家隔離在不同的區(qū)和不同的地圖服務(wù)器以保證游戲體驗的流暢性。
經(jīng)典游戲服務(wù)器架構(gòu)的優(yōu)點:
部署簡單,進程數(shù)量少,按MMO的區(qū)服容納人數(shù)標準,上述服務(wù)器進程除了網(wǎng)關(guān)、付費、DB服外大多可以部署在一臺物理機上,容易做到一鍵發(fā)布。
開發(fā)門檻低,游戲場景服務(wù)器功能高度內(nèi)聚,游戲主體邏輯可運行在單線程順序環(huán)境下,不需要考慮復雜異步通信和多線程的不確定性
部分無狀態(tài)服務(wù)器(Gate , Pay ,Login)或?qū)ρ舆t不敏感的服務(wù)器(World)雖然在架構(gòu)上是單點,但擴展為高可用的分布式服務(wù)器的成本和難度很低。

獨立Zone用于跨服的功能易于實現(xiàn)——在Server Group之間加上跨服消息轉(zhuǎn)發(fā)的服務(wù)器即可以實現(xiàn)相關(guān)功能
配合游戲運營過程中的合區(qū)功能易于實現(xiàn),在角色及道具ID生成和玩家可輸入的唯一標示(如角色名,公會名等)時候把區(qū)服信息納入考慮或做為標識頭的一部分即可解決運營中后期數(shù)據(jù)合區(qū)時DB表項沖突的絕大部分問題。