- 相關(guān)推薦
玩網(wǎng)絡(luò)游戲的心得
我記得一些年前坐在GDC(游戲開發(fā)者大會(huì))聽負(fù)責(zé)開發(fā)X-Wing Vs TIE Fighter的家伙們題為"淹沒在Internet"的演講,全是關(guān)于讓網(wǎng)絡(luò)游戲?qū)崟r(shí)地在Internet上工作的東西。他們選擇那個(gè)題目是多么的正確啊。當(dāng)它開始處理數(shù)據(jù)包的丟失,亂序,潛伏(一個(gè)數(shù)據(jù)包發(fā)送到它的目的地所花的時(shí)間)等等時(shí),它確實(shí)淹沒了。然而它是可能的。對(duì)于Internet需要一些聰明和經(jīng)驗(yàn),但它是肯定可能的。看看今天大量的連線游戲,女生小游戲如今大多數(shù)真正有長(zhǎng)久生命力的游戲都至少有一些連線成分。最純粹的單人游戲容易玩一次,也許兩次,或者甚至三次如果它是非常好的游戲,但一旦游戲結(jié)束,就被束之高閣了。如果你想要有任何長(zhǎng)久生命力,那么多人連線游戲就是形勢(shì)的核心所在,并且那意味著和Internet打交道,為編碼者打開了那個(gè)潘多拉的盒子。打扮小游戲
那么跟Internet打交道包括些什么呢?首先是要理解Internet是怎么工作的,和點(diǎn)對(duì)點(diǎn)與客戶機(jī)/服務(wù)器體系結(jié)構(gòu)的快速討論。點(diǎn)對(duì)點(diǎn)就是你在兩臺(tái)機(jī)器上運(yùn)行游戲,并簡(jiǎn)單地在它們之間共享輸入。每個(gè)單獨(dú)的游戲假定它是正確的,并僅僅在它一幀接一幀的刷新中合并來自另外一臺(tái)機(jī)器的輸入。客戶機(jī)/服務(wù)器是一臺(tái)機(jī)器有效地運(yùn)行游戲,別的機(jī)器僅僅是一個(gè)終端,接受來自玩家的輸入,并渲染服務(wù)器讓它渲染的任何東西。時(shí)尚小游戲
客戶機(jī)/服務(wù)器的優(yōu)點(diǎn)是每臺(tái)機(jī)器都將會(huì)展現(xiàn)相同的游戲,因?yàn)樗械奶幚矶荚谝粋(gè)地方完成,沒有跨越多臺(tái)機(jī)器,你可以不用考慮每臺(tái)機(jī)器相互之間的同步問題。不足之處是,服務(wù)器本身需要有一些重要的CPU可用時(shí)間來處理每一個(gè)連接的客戶機(jī),和一個(gè)合適的網(wǎng)絡(luò)連接來確保每一個(gè)客戶機(jī)及時(shí)地接收到它的更新。
了解IP
我們都已經(jīng)聽說過TCP/IP(傳輸控制協(xié)議/網(wǎng)間協(xié)議)和UDP(用戶數(shù)據(jù)包協(xié)議),在Web網(wǎng)絡(luò)上有大量關(guān)于這些協(xié)議的深?yuàn)W的技術(shù)資訊。實(shí)際上,在Cisco網(wǎng)站上有一些極好的TCP/IP指導(dǎo)。我們將在較高層面上介紹一些TCP/IP的基本知識(shí),目的是讓你更好地了解使用這些標(biāo)準(zhǔn)協(xié)議的網(wǎng)絡(luò)游戲設(shè)計(jì)者面臨的挑戰(zhàn)。白領(lǐng)小游戲
TCP/IP和UDP/IP是兩層的通信協(xié)議系統(tǒng)。IP層負(fù)責(zé)網(wǎng)際數(shù)據(jù)包的傳輸。UDP或者TCP層將大的數(shù)據(jù)包傳給IP,IP將數(shù)據(jù)包分割為小的子數(shù)據(jù)包,為每個(gè)數(shù)據(jù)包加上一個(gè)信封,計(jì)算出目的地的IP地址,應(yīng)該如何到達(dá)那里,然后將數(shù)據(jù)包發(fā)送到你的ISP,或者不管怎樣你連接到網(wǎng)絡(luò)。這實(shí)在象是在一張明信片上寫下你要發(fā)送的,貼上郵票,寫上地址,塞進(jìn)一個(gè)郵箱,它就送走了。
UDP和TCP是從你編碼者或者游戲接收數(shù)據(jù)包的高層協(xié)議,并決定該如何處理這些數(shù)據(jù)包。UDP和TCP的區(qū)別在于TCP保證數(shù)據(jù)包的傳送和有序,而UDP不保證。UDP是一條直接和IP對(duì)話的小路,而TCP是在你和IP之間的一個(gè)接口。它像是在你和你的郵件之間有一個(gè)管理員助手。使用UDP你會(huì)自己為你的信打字,把它們放進(jìn)一個(gè)信封等等。使用TCP你會(huì)僅僅向你的管理員口授信稿,管理員會(huì)做全部的工作并追蹤確認(rèn)信件送到了。美人魚小游戲
然而,所有這些令人驚奇的為你完成的工作伴隨著代價(jià)。為了確定數(shù)據(jù)包通過Internet完好無損地送到了目的方,TCP期待從目的方為它發(fā)送的每個(gè)數(shù)據(jù)包發(fā)回一個(gè)應(yīng)答包(網(wǎng)絡(luò)用語是ACK)。如果它在一定時(shí)間內(nèi)沒有收到ACK,它就停止發(fā)送任何新的數(shù)據(jù)包,重新發(fā)送丟失的數(shù)據(jù)包,并且將繼續(xù)這樣做直到收到目的方的回應(yīng)。當(dāng)你訪問一個(gè)網(wǎng)頁時(shí),我們都已經(jīng)看到了這種情形,在半途中下載停止了一會(huì)然后又重新開始了?赡苁且粋(gè)數(shù)據(jù)包在什么地方丟失了(假定不時(shí)ISP的問題),在任何更多的數(shù)據(jù)包被發(fā)送以前TCP要求重新發(fā)送它。
這一切的問題是,在認(rèn)識(shí)到出了差錯(cuò)的發(fā)送者和實(shí)際上正在送達(dá)的數(shù)據(jù)包之間出現(xiàn)了延遲。有時(shí)這能花上數(shù)秒鐘,如果你僅僅只是下載一個(gè)文件或一個(gè)網(wǎng)頁,這不是什么大礙,但如果這是一個(gè)游戲數(shù)據(jù)包而且每秒至少有十次,那么你真的是遇到麻煩了,尤其是因?yàn)樗V沽似渌磺惺虑。?shí)際上就是這個(gè)問題所以幾乎沒有游戲選擇使用TCP作為它們主要的Internet協(xié)議,除非它不是一個(gè)實(shí)時(shí)動(dòng)作游戲。大多數(shù)游戲使用UDP--他們不能保證有序或可靠送達(dá),但它確實(shí)很快-或者結(jié)果是至少通常比TCP/IP更快,F(xiàn)在我們了解這些了,接下來呢?
【玩網(wǎng)絡(luò)游戲的心得】相關(guān)文章:
網(wǎng)絡(luò)游戲作文02-21
網(wǎng)絡(luò)游戲線上活動(dòng)方案01-21
玩QQ飛車心得之二04-28
遠(yuǎn)離網(wǎng)絡(luò)游戲倡議書12-17
玩開心農(nóng)場(chǎng)心得體會(huì)08-23
玩陀螺12-02
玩作文10-17