青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎(chǔ)} {C++ 高級} {C#界面,C++核心算法} {設(shè)計模式} {C#基礎(chǔ)}

游戲引擎基礎(chǔ)(七)(網(wǎng)絡(luò)和連線游戲環(huán)境)

7部份: 網(wǎng)絡(luò)和連線游戲環(huán)境


網(wǎng)絡(luò)游戲
  我記得一些年前坐在GDC(游戲開發(fā)者大會)聽負(fù)責(zé)開發(fā)X-Wing Vs TIE Fighter的家伙們題為淹沒在Internet” 的演講,全是關(guān)于讓網(wǎng)絡(luò)游戲?qū)崟r地在Internet上工作的東西。他們選擇那個題目是多么的正確啊。當(dāng)它開始處理數(shù)據(jù)包的丟失,亂序,潛伏(一個數(shù)據(jù)包發(fā)送到它的目的地所花的時間)等等時,它確實淹沒了。然而它是可能的。對于Internet需要一些聰明和經(jīng)驗,但它是肯定可能的。看看今天大量的連線游戲,從Quake IIIUnreal TournamentCounter Strike一直到EverQuestUltima Online

  如今大多數(shù)真正有長久生命力的游戲都至少有一些連線成分。最純粹的單人游戲容易玩一次,也許兩次,或者甚至三次如果它是非常好的游戲,但一旦游戲結(jié)束,就被束之高閣了。如果你想要有任何長久生命力,那么多人連線游戲就是形勢的核心所在,并且那意味著和Internet打交道,為編碼者打開了那個潘多拉的盒子。

  那么跟Internet打交道包括些什么呢?首先是要理解Internet是怎么工作的,和點對點與客戶機(jī)/服務(wù)器體系結(jié)構(gòu)的快速討論。點對點就是你在兩臺機(jī)器上運行游戲,并簡單地在它們之間共享輸入。每個單獨的游戲假定它是正確的,并僅僅在它一幀接一幀的刷新中合并來自另外一臺機(jī)器的輸入。客戶機(jī)/服務(wù)器是一臺機(jī)器有效地運行游戲,別的機(jī)器僅僅是一個終端,接受來自玩家的輸入,并渲染服務(wù)器讓它渲染的任何東西。

  客戶機(jī)/服務(wù)器的優(yōu)點是每臺機(jī)器都將會展現(xiàn)相同的游戲,因為所有的處理都在一個地方完成,沒有跨越多臺機(jī)器,你可以不用考慮每臺機(jī)器相互之間的同步問題。不足之處是,服務(wù)器本身需要有一些重要的CPU可用時間來處理每一個連接的客戶機(jī),和一個合適的網(wǎng)絡(luò)連接來確保每一個客戶機(jī)及時地接收到它的更新。


了解IP
  我們都已經(jīng)聽說過TCP/IP(傳輸控制協(xié)議/網(wǎng)間協(xié)議)和UDP(用戶數(shù)據(jù)包協(xié)議), Web網(wǎng)絡(luò)上有大量關(guān)于這些協(xié)議的深奧的技術(shù)資訊。實際上,在Cisco網(wǎng)站上有一些極好的TCP/IP指導(dǎo)。我們將在較高層面上介紹一些TCP/IP的基本知識,目的是讓你更好地了解使用這些標(biāo)準(zhǔn)協(xié)議的網(wǎng)絡(luò)游戲設(shè)計者面臨的挑戰(zhàn)。

  TCP/IPUDP/IP是兩層的通信協(xié)議系統(tǒng)。IP層負(fù)責(zé)網(wǎng)際數(shù)據(jù)包的傳輸。UDP或者TCP層將大的數(shù)據(jù)包傳給IPIP將數(shù)據(jù)包分割為小的子數(shù)據(jù)包,為每個數(shù)據(jù)包加上一個信封,計算出目的地的IP地址,應(yīng)該如何到達(dá)那里,然后將數(shù)據(jù)包發(fā)送到你的ISP,或者不管怎樣你連接到網(wǎng)絡(luò)。 這實在象是在一張明信片上寫下你要發(fā)送的,貼上郵票,寫上地址,塞進(jìn)一個郵箱,它就送走了。

  UDPTCP是從你編碼者或者游戲接收數(shù)據(jù)包的高層協(xié)議,并決定該如何處理這些數(shù)據(jù)包。UDPTCP的區(qū)別在于TCP保證數(shù)據(jù)包的傳送和有序,而UDP不保證。UDP是一條直接和IP對話的小路,而TCP是在你和IP之間的一個接口。它像是在你和你的郵件之間有一個管理員助手。使用UDP你會自己為你的信打字,把它們放進(jìn)一個信封等等。使用TCP你會僅僅向你的管理員口授信稿,管理員會做全部的工作并追蹤確認(rèn)信件送到了。

  然而,所有這些令人驚奇的為你完成的工作伴隨著代價。為了確定數(shù)據(jù)包通過Internet完好無損地送到了目的方,TCP期待從目的方為它發(fā)送的每個數(shù)據(jù)包發(fā)回一個應(yīng)答包(網(wǎng)絡(luò)用語是ACK)。如果它在一定時間內(nèi)沒有收到ACK,它就停止發(fā)送任何新的數(shù)據(jù)包,重新發(fā)送丟失的數(shù)據(jù)包,并且將繼續(xù)這樣做直到收到目的方的回應(yīng)。當(dāng)你訪問一個網(wǎng)頁時,我們都已經(jīng)看到了這種情形,在半途中下載停止了一會然后又重新開始了。可能是一個數(shù)據(jù)包在什么地方丟失了(假定不時ISP的問題),在任何更多的數(shù)據(jù)包被發(fā)送以前TCP要求重新發(fā)送它。

  這一切的問題是,在認(rèn)識到出了差錯的發(fā)送者和實際上正在送達(dá)的數(shù)據(jù)包之間出現(xiàn)了延遲。有時這能花上數(shù)秒鐘,如果你僅僅只是下載一個文件或一個網(wǎng)頁,這不是什么大礙,但如果這是一個游戲數(shù)據(jù)包而且每秒至少有十次,那么你真的是遇到麻煩了,尤其是因為它停止了其他一切事情。實際上就是這個問題所以幾乎沒有游戲選擇使用TCP作為它們主要的Internet協(xié)議,除非它不是一個實時動作游戲。大多數(shù)游戲使用 UDP--他們不能保證有序或可靠送達(dá),但它確實很快或者結(jié)果是至少通常比TCP/IP更快。現(xiàn)在我們了解這些了,接下來呢?


客戶端預(yù)測
  因為 UDP 明顯的是快速響應(yīng)游戲的方式,我們將必須自己處理數(shù)據(jù)包的丟失和亂序。邊而且這是技巧所在。不用說出太多的代碼秘密,我就能說有方法。作為開始,有客戶端預(yù)言,一個被談?wù)摰孟喈?dāng)多的詞語。當(dāng)你作為一個客戶端連接到一個大的服務(wù)器,但是不能連貫地看見來自服務(wù)器的更新,客戶端預(yù)言開始起作用了。正在你的電腦上運行的游戲部分看著你正給它的輸入,并在缺乏來自服務(wù)器的任何棄絕信息的情況下,對它認(rèn)為將繼續(xù)進(jìn)行的事情作出最好的猜測。它將會顯示被猜測的數(shù)據(jù),然后當(dāng)它得到來自服務(wù)器的世界的最新狀態(tài)時,改正它自己,如果需要。你可能會對這個方法的效力感到驚訝。大體而言,大部分時間數(shù)據(jù)包不容易丟失大多數(shù)時候是一秒的幾十分之一,這種情況下游戲沒有太多的時間偏離服務(wù)器實際上認(rèn)為正在發(fā)生的事情。偏離確實會隨著時間變的比較大,大多數(shù)游戲里面有一個超時功能,當(dāng)出現(xiàn)很長時間沒有來自服務(wù)器的聯(lián)絡(luò)時就停止游戲。

  你正在創(chuàng)造的游戲類型在這里有關(guān)系 -- 第一人稱射擊游戲不需要這樣有效的客戶端預(yù)言,因為它多數(shù)情況下僅僅處理我在哪兒,我是否要射擊?。在第三人稱游戲中,你必須更加精確,因此你能夠正確地預(yù)測你的角色正在播放的動畫,并且動作流暢。在這種情形中流暢的動畫是完全必要的。Heretic II在這方面有很大的問題,并且是當(dāng)它開始網(wǎng)絡(luò)編碼時Raven一直不得不處理的最困難的事情之一。

  當(dāng)然如果你有一個很不錯的網(wǎng)絡(luò)連接,比如寬帶連接,那么這個問題就遠(yuǎn)沒有那么重要。對比較大的數(shù)據(jù)包有一個更寬的管道,對你的網(wǎng)絡(luò)連通時間更快速。事實上,寬帶對于游戲的主要優(yōu)點不比較胖的管道多,但大大減少了延遲,特別是你到ISP的第一跳上。對于56K 調(diào)制解調(diào)器,第一跳典型的延遲是100ms,這已經(jīng)嚴(yán)重地增加了你到網(wǎng)絡(luò)上任意一臺游戲服務(wù)器的潛在連通時間。對于寬帶連接比如像DSL,第一跳的延遲時間多半是20ms。使用Windows中一個叫做TraceRouteTRACERT.EXE)的命令行程序并指定一個目標(biāo)IP地址或者域名,你能夠找出你的第一跳的連通時間。仔細(xì)觀察第一跳,因為這幾乎總是你到你的ISP的網(wǎng)絡(luò)連通時間。并且觀察你在你的ISP的網(wǎng)絡(luò)內(nèi)部用了多少跳直到你看見在一個給定跳上列出的一個不同的域名。

  請注意,寬帶并不總是能解決延遲問題。你仍然受最慢的路由器/服務(wù)器和數(shù)據(jù)包從服務(wù)器穿越網(wǎng)絡(luò)到達(dá)你的跳數(shù)(反之亦然)的支配。有一個寬帶連接確實容易緩和這些,但不可能它們最后就消失了。當(dāng)然,如果你打算要運行某種服務(wù)器,你將會需要一個具有足夠快速的向上游的數(shù)據(jù)速率的帶寬,因為僅僅一個調(diào)制解調(diào)器不能夠處理一個服務(wù)器產(chǎn)生的負(fù)荷。

  值得一提的是,如果你想要在PS2或者Xbox上面玩網(wǎng)絡(luò)游戲,你將需要一個寬帶連接,因為它們兩者都不支持調(diào)制解調(diào)器。


包大小,智能數(shù)據(jù)傳輸,和反作弊
  別的必須被處理的事情是數(shù)據(jù)包的大小。如果你在一個游戲里面64個人都在跑來跑去相互攻擊,從一臺機(jī)器發(fā)送到另外一臺機(jī)器的數(shù)據(jù)包能變得相當(dāng)大,達(dá)到了一些調(diào)制解調(diào)器沒有帶寬處理這些數(shù)據(jù)的程度。這正在變得特別和那些有著很大的地表系統(tǒng)的游戲有關(guān)。這里增加的問題是,因為你有這個很好的地表系統(tǒng),你能夠看得很遠(yuǎn),因此能夠看見許多其他游戲玩家,使得你為了精確渲染所需要的來自服務(wù)器的數(shù)據(jù)數(shù)量以很快的速率增長。我們能做什么呢?

  好吧,首先必要的是只發(fā)送絕對必須的東西給任何給定的客戶端,因此他僅僅得到從他的角度觀察游戲所需要的東西。發(fā)送在他視野以外的人們的數(shù)據(jù)沒有一點意義他將看不見這些。同時,你最好確保只發(fā)送那些每幀之間實際上發(fā)生改變的數(shù)據(jù)。如果一個家伙仍然在播放相同的動畫,重新發(fā)送數(shù)據(jù)沒有意義。當(dāng)然,如果數(shù)據(jù)包丟失時這確實帶來一些問題,但這就是為什么好的網(wǎng)絡(luò)程序員被支付很多金錢,來處理類似這樣的東西。

  還有一些其他的事情也要處理。最近已經(jīng)有大量的令人苦惱的連線作弊正在發(fā)生。這是某些人修改游戲以給他們不正當(dāng)利益的地方。盡管嚴(yán)格意義上這不是網(wǎng)絡(luò)的一部分,但它確實發(fā)生了。有時人們會創(chuàng)作一些模塊,允許他們立即瞄準(zhǔn)進(jìn)入視野的任何人,或者簡單地允許他們看穿墻壁,或者讓其他游戲玩家看不見他們自己。大部份時間這些事情可以在網(wǎng)絡(luò)層內(nèi)部或者在服務(wù)器上被處理。任何有100%命中率的人被簡單地踢出游戲,因為在人力所及的范圍內(nèi)那是不可能的。

  游戲開發(fā)者必須盡一切可能制止作弊行為,但很不幸,人做的東西可以被人突破。所有你能做的就是讓作弊變得困難,當(dāng)確實發(fā)生時去嘗試發(fā)現(xiàn)它。

  好吧,現(xiàn)在就到這里了。在第8部分中,我們將會看看游戲腳本系統(tǒng)的趣味世界,根據(jù)游戲過程中出現(xiàn)的事件來渲染或使能預(yù)先定義的場景和行為,協(xié)助故事敘述。

posted on 2007-12-04 13:24 夢在天涯 閱讀(3856) 評論(0)  編輯 收藏 引用 所屬分類: Game/OpenGL

公告

EMail:itech001#126.com

導(dǎo)航

統(tǒng)計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1812163
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              99视频一区二区三区| 美国成人毛片| 一区二区高清视频在线观看| 欧美成人在线免费观看| 国产精品久久久久久影院8一贰佰| 久久精品在线免费观看| 亚洲欧美怡红院| 亚洲风情亚aⅴ在线发布| 小黄鸭精品aⅴ导航网站入口| 国模大胆一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了 | 久久久久免费观看| 亚洲精品欧美激情| 久久精品中文| 最新亚洲电影| 亚洲精品日韩激情在线电影| 久久精品国产第一区二区三区| 亚洲青色在线| 女女同性女同一区二区三区91| 久久久蜜臀国产一区二区| 日韩视频在线你懂得| 亚洲综合精品四区| 国产欧美日韩视频在线观看| 亚洲免费伊人电影在线观看av| 一区二区精品在线| 亚洲精品国产欧美| 欧美成人午夜影院| 亚洲国产成人精品视频| 你懂的视频欧美| 国产一区二区三区久久久久久久久 | 亚洲美女黄网| 亚洲久久在线| 国产精品国产成人国产三级| 亚洲午夜在线| 欧美在线免费视屏| 午夜精品久久久久久久蜜桃app| 亚洲日本欧美| 国产伦精品一区二区三区视频孕妇| 久久综合免费视频影院| 亚洲视频第一页| 日韩视频一区二区在线观看| 久久久久一区| 小辣椒精品导航| 激情欧美一区二区三区在线观看| 欧美国产日韩一区二区在线观看| 久久久久**毛片大全| 欧美综合二区| 欧美精品播放| 国产一区二区三区精品久久久| 久久av在线| 国产精品视频专区| 久久精品视频导航| 欧美高清视频| 日韩午夜中文字幕| 一区二区三区成人精品| 日韩亚洲成人av在线| 欧美二区在线看| 久久亚洲欧美| 亚洲综合视频一区| 亚洲高清不卡| 亚洲电影第三页| 久久人人爽人人爽爽久久| 欧美18av| 久久免费精品日本久久中文字幕| 欧美一区二区三区视频在线观看| 在线视频日韩精品| 亚洲国产精品成人| 蜜臀99久久精品久久久久久软件| 日韩视频在线一区二区三区| 亚洲免费婷婷| 六月婷婷一区| 欧美精品一区三区| 国产一区二区视频在线观看| 亚洲毛片av| 亚洲久久视频| 久久国产欧美日韩精品| 黄色亚洲免费| 一区二区三区精品视频在线观看| 亚洲一区二区在线| 欧美一区二区三区精品电影| 亚洲欧洲另类| 欧美成人资源| 欧美日韩第一页| 国产欧美日韩高清| 亚洲午夜日本在线观看| 久久福利电影| 亚洲综合99| 国产精品国产三级欧美二区| 影音先锋久久久| 国产亚洲欧美激情| 午夜视频一区在线观看| 亚洲精品资源美女情侣酒店| 欧美在线free| 亚洲一区二区三区在线看 | 欧美中文字幕视频| 欧美激情一区在线| 国产精品视频1区| 亚洲一区二区视频在线| 久久久精品国产99久久精品芒果| 欧美日本视频在线| 在线午夜精品| 欧美国产日韩精品| 亚洲欧美中文在线视频| 国产精品五月天| 最近中文字幕日韩精品| 你懂的网址国产 欧美| 噜噜噜91成人网| 中文av一区二区| 免费看av成人| 欧美激情第六页| 欧美一区二区日韩一区二区| 欧美一区91| 伊人久久av导航| 亚洲高清av| 欧美日韩1区2区3区| 一区二区自拍| 一本色道久久综合| 日韩午夜激情| 午夜精品久久久久久久久| 国外成人在线| 午夜精品久久久久久久久久久久久| 久久深夜福利| 欧美在线视频在线播放完整版免费观看| 亚洲国产精品久久91精品| 欧美一级片在线播放| 亚洲视频一区二区在线观看| 另类尿喷潮videofree| 午夜精品久久久久久久蜜桃app | 欧美极品在线观看| 老牛国产精品一区的观看方式| 亚洲国产精品成人精品| 欧美偷拍另类| 久久久久久电影| 一区二区视频欧美| 久久一区二区三区四区| 蜜臀久久99精品久久久久久9 | 国产欧美va欧美va香蕉在| 久久精品成人欧美大片古装| 欧美www视频| 亚洲激情精品| 亚洲国产精品国自产拍av秋霞| 亚洲一区二区三区涩| 国产精品久久久久久久免费软件 | 国产欧美日韩综合一区在线播放 | 亚洲精品在线视频观看| 久久亚洲捆绑美女| 亚洲国产精品精华液网站| 亚洲电影免费观看高清完整版在线观看 | 蜜臀va亚洲va欧美va天堂| 欧美精品自拍偷拍动漫精品| 亚洲专区国产精品| 亚洲国产视频a| 亚洲永久字幕| 一区二区三区在线看| 国产精品一区二区在线观看| 亚洲免费在线精品一区| 久久久国际精品| 亚洲午夜国产成人av电影男同| 国产手机视频一区二区| 欧美v亚洲v综合ⅴ国产v| 亚洲精品午夜精品| 亚洲国产精品嫩草影院| 久久成人一区| 极品尤物久久久av免费看| 国产欧美一区二区三区视频| 国产一区久久久| 一区二区三区四区在线| 免费观看成人| 暖暖成人免费视频| 亚洲国产一区二区a毛片| 欧美一区成人| 亚洲欧美日韩一区在线观看| 久久久久久婷| 亚洲美女黄色| 欧美国产精品| 日韩网站在线观看| 久久久久久久欧美精品| 亚洲第一视频网站| 亚洲一区二区三区在线观看视频 | 欧美精品1区2区| 在线观看精品一区| 久久久99免费视频| 亚洲女女女同性video| 久久成人人人人精品欧| 国内揄拍国内精品少妇国语| 亚洲一区二区三区四区在线观看| 久久se精品一区二区| 亚洲欧美成人综合| 国产精品视频| 久久综合一区| 欧美精品乱码久久久久久按摩| 亚洲视频一起| 欧美护士18xxxxhd| 玖玖视频精品| 亚洲永久精品大片| 亚洲电影免费| 欧美日韩中文在线| 欧美一级视频免费在线观看| 亚洲欧美一级二级三级| 最新成人av在线|