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