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