網絡游戲都是借助于互聯網運作的,要實現網絡游戲同步的第一步就是設計出高效的網絡體系結構。數據信息傳輸的過程中,網絡底層協議影響著信息傳輸的可靠性和準確性,因此網絡協議的選擇也是必須加以重視的問題。而影響網絡游戲同步的各種因素正是我們為解決同步的突破口。
1 C/S模式的體系結構
大多MMOG游戲都采用C/S的網絡體系結構,該體系結構如圖1所示:
圖1 基于C/S的網絡游戲結構
在此結構中服務端的作用是擔任中心服務器的角色,每個連接到此服務端的客戶端需要更新或發出新的消息時,服務端接收到客戶端傳來的數據信息后,根據邏輯進行相應的處理后把消息廣播到相應的客戶端玩家,對于客戶端來說,相互之間不能直接通信,他們都要通過服務器的間接傳遞才能收到另外客戶端發來的數據信息。
在服務器端存放整個網絡游戲的世界原型,而玩家只能在客戶端進入這個世界,觀察里面的動態和情況,在游戲世界里互相溝通、交流、做出不同的回應或攻擊。這樣客戶端就不能篡改游戲的狀態,但是同時也會把所有的任務都交給服務端,服務器就需要承載更多的壓力。C/S結構的優點是能夠很好的保證游戲狀態的一致性,這是因為整個游戲世界的原型和數據都保存在服務端,而客戶端的操作都需要經過服務端的處理,這樣游戲狀態要經過服務端的統一分析和處理,客戶端的非法操作就無法執行,這樣就有效的防止了玩家的作弊。該結構的缺點是容易造成系統的瓶頸,這是由于中心服務器的負載過重導致的。而服務器的癱瘓就會導致整個游戲的癱瘓。該結構的另一個缺點是客戶端的升級十分困難,每次游戲升級都要下載龐大的客戶端軟件。尤其對于帶寬小的用戶更是一件十分不容易的事情。因此在設計游戲時,客戶端更新程序的下載應適當縮減。
2 P2P體系結構
P2P體系結構[3],又稱對等通信結構,該結構也是應用比較廣泛的一種結構,其結構圖如圖2所示。
圖2 P2P(Peer to Peer)對等通信結構
與C/S體系結構不同的是,該結構沒有中心服務器的概念,游戲狀態都保存在客戶端。各客戶端之間采用Peer to Peer通信方式進行溝通和交流。
該結構的大體思想是:通常由創建游戲局的客戶端擔任服務器的角色,該客戶端玩家既擔任服務器也擔任客戶端的角色。這個服務器就像浮動服務器一樣。對戰型游戲大多采用此結構。
P2P結構的優點是縮短了傳輸的網絡延遲,這是因為客戶端之間是可以直接進行交互的,他們不用把數據信息發送到服務端等待服務端的統一裁決,這樣就避免了消息通過服務端中轉所花費的時間。游戲狀態都保存在客戶端,也就不存在C/S體系結構中的服務器資源有限而不能隨時隨地都及時反應的問題。該結構的缺點也是顯而易見的,由于消息在各客戶端之間傳輸時不可避免的會出現丟失或則時間延遲的情況,這樣就很容易引起游戲狀態的不同步。但是控制和決策機制都放在客戶端,玩家要想作弊是輕而易舉的事情,這種機制不能很好的防止玩家的作弊行為。
P2P體系結構是通過廣播的形式來進行工作的,廣播這種機制只能在局域網內使用,因此P2P結構比較適合應用于局域網中。
3 分布式體系結構
下面我們給出結合了C/S和P2P優點的體系結構,即分布式體系結構。該結構非常適合用于MMOG游戲中,該結構的玩家分布在不同的地區甚至有可能是不同的國家。它有多種設計和實現方式,鏡像游戲服務器架構是一種很有代表性且比較常用的方式,如下圖所示:
在采用分布式體系結構的系統中,當客戶端登錄時,根據“就近原則”,它會連接到與自己網絡延遲較小的那臺服務器上。由每個服務器來維護游戲狀態的一致性,客戶端和服務器之間的通信仍然類似于C/S結構,而鏡像服務器之間通過P2P模式進行連接和交互。
在分布式體系結構中,每個鏡像服務器都保存一份游戲狀態備份(就像P2P體系結構中的客戶端一樣),這樣就消除了C/S體系結構中的弊端,即消除了服務器成為制約游戲的瓶頸的問題和一臺服務器癱瘓后對游戲的同步影響問題。相對于P2P結構,此架構保存游戲狀態的服務器數量較少,因而要達到游戲同步是比較容易的。
--- 版權最終歸艾銻無限所有http://www.maosdadas.net/ 如需轉載,請標明出處。
相關文章