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

C++ Programmer's Cookbook

{C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

游戲引擎基礎(七)(網絡和連線游戲環境)

7部份: 網絡和連線游戲環境


網絡游戲
  我記得一些年前坐在GDC(游戲開發者大會)聽負責開發X-Wing Vs TIE Fighter的家伙們題為淹沒在Internet” 的演講,全是關于讓網絡游戲實時地在Internet上工作的東西。他們選擇那個題目是多么的正確啊。當它開始處理數據包的丟失,亂序,潛伏(一個數據包發送到它的目的地所花的時間)等等時,它確實淹沒了。然而它是可能的。對于Internet需要一些聰明和經驗,但它是肯定可能的??纯唇裉齑罅康倪B線游戲,從Quake IIIUnreal Tournament,Counter Strike一直到EverQuestUltima Online。

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

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

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


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

  TCP/IPUDP/IP是兩層的通信協議系統。IP層負責網際數據包的傳輸。UDP或者TCP層將大的數據包傳給IP,IP將數據包分割為小的子數據包,為每個數據包加上一個信封,計算出目的地的IP地址,應該如何到達那里,然后將數據包發送到你的ISP,或者不管怎樣你連接到網絡。 這實在象是在一張明信片上寫下你要發送的,貼上郵票,寫上地址,塞進一個郵箱,它就送走了。

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

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

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


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

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

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

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

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


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

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

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

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

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

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

公告

EMail:itech001#126.com

導航

統計

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

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1812196
  • 排名 - 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| 欧美电影免费| 中国亚洲黄色| 亚洲在线免费观看| 国内揄拍国内精品少妇国语| 亚洲精品久久久久中文字幕欢迎你| 午夜精品久久久久影视| 亚洲视频网在线直播| 欧美午夜不卡在线观看免费| 亚洲欧洲日本一区二区三区| 欧美亚洲视频在线观看| 欧美一级在线视频| a91a精品视频在线观看| 日韩天堂在线观看| 亚洲欧洲日本mm| 久久精品视频免费观看| 99国内精品久久| 亚洲视频在线播放| 久久在线免费观看视频| 日韩视频免费在线| 毛片一区二区三区| 欧美国产视频在线观看| 国产精品久久久久高潮| 欧美大胆成人| 亚洲日本中文字幕| 欧美人与性动交α欧美精品济南到| 另类天堂av| 亚洲经典视频在线观看| 久久在线精品| 日韩香蕉视频| 乱人伦精品视频在线观看| 国产区亚洲区欧美区| 亚洲精品无人区| 欧美一级视频精品观看| 国产精品久久久久久户外露出| 日韩视频在线永久播放| 亚洲男人第一av网站| 国产精品二区在线观看| 亚洲午夜激情网站| 亚洲国产欧美不卡在线观看| 国产精品手机在线| 欧美日韩国产成人| 久久亚洲春色中文字幕久久久| 欧美二区不卡| 久久亚洲精品网站| 久久激五月天综合精品| 亚洲高清在线播放| 国产综合色产在线精品| 欧美日韩精品二区| 欧美国产日产韩国视频| 欧美影院久久久| 亚洲一区免费在线观看| 亚洲激情婷婷| 亚洲激情欧美| 亚洲激情啪啪| 亚洲裸体俱乐部裸体舞表演av| 国产精品影片在线观看| 欧美日韩高清在线观看| 久久精品免费播放| 久久美女艺术照精彩视频福利播放| 欧美激情成人在线| 亚洲国产日韩一级| 亚洲欧洲日韩综合二区| 欧美一级二区| 欧美成人四级电影| 亚洲国产天堂久久国产91| 欧美成人精品三级在线观看| 亚洲视频网在线直播| 亚洲久久成人| 欧美在线播放| 欧美激情按摩| 亚洲字幕在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美国产日本| 日韩亚洲精品视频| 欧美一区不卡| 欧美日韩一区二区在线| 欧美视频成人| 狠狠狠色丁香婷婷综合激情| 欧美日韩xxxxx| 狠狠噜噜久久| 欧美一级久久久久久久大片| 亚洲一区二区精品在线| 久久成人亚洲| 在线中文字幕日韩| 欧美精品一区二区蜜臀亚洲| 久久亚洲精品欧美| 国产农村妇女精品一区二区| 欧美午夜片在线观看| 中日韩美女免费视频网站在线观看| 亚洲一区国产视频| 国产精品成人va在线观看| 狠狠色香婷婷久久亚洲精品| 影音先锋久久| 欧美国产综合一区二区| 午夜视频精品| 国产亚洲精品久| 久久久999成人| 久久久爽爽爽美女图片| 国产精品国色综合久久| 亚洲狼人综合| 99热在这里有精品免费| 欧美日韩精品久久久| 一区二区91| 一本久久a久久免费精品不卡| 欧美91视频| 亚洲一区在线观看视频 | 亚洲男人第一av网站| 欧美乱大交xxxxx| 欧美一级播放| 美日韩在线观看| 亚洲综合色丁香婷婷六月图片| 91久久精品国产91久久| 久久免费视频观看| 亚洲欧美日韩在线| 欧美 日韩 国产精品免费观看| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲黑丝一区二区| 在线精品福利| 午夜精品久久久久久| 尤物九九久久国产精品的特点| 免费在线播放第一区高清av| 亚洲电影网站| 国产麻豆精品在线观看| 亚洲电影欧美电影有声小说| 看欧美日韩国产| 久久久久久自在自线| 欧美激情视频网站| 免费av成人在线| 韩国精品在线观看| 亚洲国产精品va在线观看黑人| 久久久www成人免费精品| 国产精品激情| 亚洲久久在线| 99视频精品在线| 欧美激情综合亚洲一二区| 欧美一区永久视频免费观看| 久久午夜影视| 欧美成人按摩| 亚洲精品视频免费| 欧美日本精品| 一区二区三区产品免费精品久久75 | 在线视频中文亚洲| 亚洲一区二区免费看| 欧美成人亚洲成人| 亚洲伦伦在线| 久久久久久久久综合| 国产精品推荐精品| 久久精品一区二区三区中文字幕 | 久久国产精品网站| 欧美 日韩 国产精品免费观看| 国产视频在线观看一区| 亚洲欧美日产图| 亚洲国产精品v| 欧美一区二区三区四区夜夜大片| 国产精品久久夜| 久久天堂国产精品| 午夜精品婷婷| 亚洲理伦在线| 亚洲国产精品久久久| 亚洲欧美成人精品| 亚洲国产精品黑人久久久 | 欧美日韩中文另类| 免费在线观看日韩欧美| 亚洲另类在线视频| 欧美福利在线观看| 久久久亚洲高清| 久久久久国产一区二区三区四区| 伊人久久av导航| 国产日韩一区二区三区在线| 欧美资源在线| 欧美一区成人| 欧美一区二区视频在线观看2020| 狠狠色丁香久久婷婷综合丁香 | 亚洲国产天堂网精品网站| 欧美日韩国产一区二区三区地区 | 精品9999| 激情综合久久| 国产一区二区剧情av在线| 欧美性片在线观看| 欧美午夜激情视频| 国产日韩精品在线| 黄色精品网站| 精品成人一区二区三区| 加勒比av一区二区| 亚洲国产综合视频在线观看| 国产精品区二区三区日本| 久久久亚洲精品一区二区三区 | 久久午夜色播影院免费高清| 91久久黄色| 亚洲欧美另类国产| 欧美v亚洲v综合ⅴ国产v| 蜜臀91精品一区二区三区| 久久精品一二三| 欧美视频在线一区二区三区| 欧美不卡福利| 国产人妖伪娘一区91| 国内精品伊人久久久久av影院 | 欧美成在线观看|