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

網絡游戲的位置同步

有關位置同步的方案實際上已經比較成熟,網上也有比較多的資料可供參考。在《帶寬限制下的視覺實體屬性傳播》一文中,作者也簡單提到了位置同步方案的構造過程,但涉及到細節的地方沒有深入,這里專門針對這一主題做些回顧。

  最直接的同步方案就是客戶端在每次發生位置改變時都向服務器報告 ,服務器再轉發給周圍的其他玩家,其他客戶端將對應的游戲實體移動到新的位置上。

  但是這樣存在一個問題,每個玩家的位置都是自己先開始移動,一段時間之后才在其他玩家的客戶端上表現出來。如果只是希望每個客戶端上看到的游戲對象都同時開始移動,那可以讓玩家的每一步操作都由服務器確認之后再執行,這樣誤差將縮減到不同客戶端之間的網絡延時差。但是顯然的,這樣的做法不可能真正被采用,因為這將使得玩家的游戲體驗非常的糟糕。有誰能忍受連每走一步路都要卡一下的游戲呢?

  既然一定存在先后時間差,那需要一種方法來讓不同客戶端上看到的玩家位置不至于有太大的誤差,尤其是不能有影響到游戲公平性的誤差存在。根據誤差出現的直接原因:時間差,我們應該能夠想到一個解決方案,那就是讓其他客戶端設法彌補掉這段時間差內少走的距離。這樣的話也就要求我們的消息包中多帶一個開始移動的時間數據,用于其他客戶端在收到這個消息包時計算對應的玩家實體已經移動過的時間和距離。

  我們以一個實際的例子來說明如何減少這種誤差的影響。假設玩家A以速度V從P1點去到P2點,A的網絡延時為T1,在A旁邊有個玩家B,他的網絡延時為T2。B收到服務器轉發過來的移動包時,A在其自己的客戶端上已經移動了T1+T2的時間,在這段時間內他自己已經走過了V*(T1+T2)的距離。如果這時在B的客戶端上開始將實體A從P1移動到P2,那顯然兩個客戶端上看到的A的位置始終存在V*(T1+T2)的誤差。

  為了使A在B客戶端上顯示的位置與其實際位置的誤差盡可能的縮小,一個簡單的做法是直接將A的位置向前拖V*(T1+T2)然后開始移動,這樣兩者之間的誤差便消除了。但這樣會使得客戶端的顯示太魯莽,要讓其看起來平滑一些,我們可以考慮使用一些算法,比如計算出A從當前位置走到P2點還需要的時間,然后加快其速度使其在規定的時間內到達P2點,這樣A和B看到的最終時間是相同的,但中間過程還是存在較多誤差。另一種較好的做法是先讓A以一個可接受的較快速度移動到其當前應該所在的位置稍前一點的地方,然后以正常速度移動到P2點,這樣后面的移動情況與其實際移動情況基本吻合了。

  看起來這個方案很完美,但是這里卻忽略了一個問題:我們假設的是每次移動時都知道玩家要去的確切位置。這在靠鼠標點擊來移動的2D游戲中是正好合適的,但是在WOW一類的靠鍵盤來移動的3D游戲中卻沒有辦法采用。WOW中的移動消息都只能向服務器報告當前的坐標及朝向信息。

  這類移動的位置同步其實也可以采用類似方案,服務器將移動玩家的當前位置信息廣播給周圍的其他玩家,當然其中也包含了時間戳。當其他玩家收到這個移動包后,表示的是在過去的某個時間里該玩家移動到了這個位置。如果只是簡單地將其對應的實體移動到這個位置,那同樣的,也存在位置誤差。

  與上一種情況類似,如果我們知道該玩家的移動速度,再通過數據包中的時間戳,假設該玩家還在以相同的速度朝相同的方向移動,那我們也可以預測出該玩家從開始移動到現在這段時間內他走了多遠了距離。我們也可以將其位置做適當的修正,并使其繼續移動下去。

  我們需要先停下來考慮一下這些算法的部分細節。其中出現了一些數據是否應該包含在我們的每個消息包中,也就是我們需要考慮的另外一個問題:移動同步的消息中應該包含哪些數據,以及這些數據到底應該向哪些玩家廣播。

  對于2D游戲的情況來說,我們的算法需要的數據有:玩家的速度V,玩家開始移動的時間T0,收到數據包的時間T1,玩家當前位置P1和玩家要去的位置P2。T1和P1從當前客戶端上都可以取到,而速度V一般來說不會經常改變,至少不是每次移動時都不一樣,所以我們可以為速度的改變設計單獨的消息碼,這樣V值也是可以在客戶端上取到的。最后,每個移動消息中包含的數據只需要有移動到的位置P2和開始移動的時間T0。

  其他客戶端在使用特定算法將玩家移動到P2后會將其停在此處,直到收到下一個移動包時再開始移動。而對于在移動過程中又收到了新的移動包的處理過程基本類似,不做過多描述。

  對于3D游戲的情況,算法是基本相同的,但是沒有目標點,替換為移動方向,比如是向正前方移動,還是向左或向右移動等。在這種情況下,只要沒有收到玩家停止移動的消息,其他客戶端上都會以最后一次收到的移動包的狀態來繼續模擬移動。

  所以,在網絡偶爾卡一下的時候也會出現一些奇怪的現象。比如WOW中,看到隊友直沖沖地走下了懸崖,你剛喊了句“怎么掉下去了?”只見隊友又從身后走出來,還冒出一句:“沒啊,我就在你旁邊!”

  關于數據要向哪些人廣播的問題,其實很簡單,哪些人會看到這個玩家就需要向哪些人廣播。不管是直接在主屏幕上看到還是在大地圖上看到的代表其位置的一個點。但是,針對不同的人使用的廣播策略還是存在差異。

  在《帶寬限制下的視覺實體屬性傳播》一文中提出了一個方案很值得參考。該方案提出的基礎是因為3D空間透視的原因,離你很遠的一個玩家移動了10米,最終在你的顯示器上看到的位移可能只有一個象素;而離你不到一米的一個玩家雖然只移動了一米,但最終顯示出來的位移可能會有幾十個象素。所以,遠處玩家的移動并不需要非常嚴格的關注,但近處玩家的移動同步需要非常高的優先級。

  這個方案的實現還依賴于另一項技術要求,玩家的屬性更新以一定的頻率來進行,更新時比較一下當前屬性值與上次更新時的屬性值,如果存在差異則通知客戶端更新,另外如果中間跳過了某次更新也不會對客戶端表現及游戲公平性造成什么影響。比如這里要處理的玩家坐標,第一次移動到A點,第二次從A點又移動到B點,如果移動到A點的更新包沒有發送,直接發送了移動到B點的更新包,這將不會對游戲邏輯產生大的影響。

  這套方案基本上是為3D游戲的實體屬性廣播優化而設計的,在2D游戲中很難使用。一是斜45度視角的2D游戲中屏幕頂端、中間和底部任何一個位置上的玩家移動,其距離和象素比是完全相同的,因為畫面不存在透視,所以也就沒有遠處對象更新頻率低這一可能。另外2D游戲中的移動與3D游戲也存在差異,具體情況前面有詳細描述,2D游戲中基本上每一次移動都需要廣播,不能跳過哪一個,否則玩家看到的現象就是在亂跑,這也必將影響到技能的使用等游戲邏輯。

  有關位置同步所涉及到的一些技術細節及優化方案上面描述了一部分,但是在實際的應用中是否會使用還是要看具體游戲的需求。比如大話類型的游戲,其本身對位置的精確同步就沒有要求,兩個客戶端上出現一前一后的移動也不會影響任何的游戲邏輯,所以前面提到的同步方案可能都用不上。

  而對于一些同步要求很高的游戲,如WOW中盜賊這類職業的需求,上面的方案可能還不夠細致,還需要設計更加有效的同步方案。

  另外,在位置同步過程中還有一個不容忽視的問題是外掛。我們不能像WOW那樣完全依賴客戶端,如果沒有暴雪那樣強硬的封號措施,游戲也就成為了外掛們的溫床。所以,如何在服務器端模擬每個客戶端的移動,如何檢測出客戶端是否存在作弊行為,也是需要重點關注的一個問題。

posted on 2008-05-12 02:55 RedLight 閱讀(782) 評論(1)  編輯 收藏 引用 所屬分類: 網絡服務器開發

評論

# re: 網絡游戲的位置同步 2008-06-28 02:30 soda

很多時候是不需要完全同步的吧  回復  更多評論   

<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

導航

統計

公告


Name: Galen
QQ: 88104725

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

相冊

My Friend

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲高清av| 久久综合久久综合这里只有精品 | 欧美精品自拍偷拍动漫精品| 久久一区中文字幕| 欧美成人午夜激情在线| 欧美激情视频一区二区三区在线播放| 欧美黄色免费网站| 国产精品入口夜色视频大尺度| 国产精品综合久久久| 国产在线观看一区| 亚洲美女在线国产| 欧美怡红院视频| 欧美激情中文字幕在线| 一区二区三区高清在线| 欧美影院成年免费版| 欧美成人一品| 国产伦精品一区| 亚洲精品欧美日韩| 久久不见久久见免费视频1| 裸体女人亚洲精品一区| 一本一本久久a久久精品综合麻豆| 午夜视频精品| 欧美乱在线观看| 国产一区视频观看| 一二三区精品福利视频| 久久久久亚洲综合| 99这里只有久久精品视频| 久久精品国产一区二区三区 | 国产午夜精品一区二区三区欧美| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美成人黄色小视频| 亚洲激情成人在线| 亚洲永久在线| 免费亚洲电影在线| 国产日韩欧美综合精品| 一道本一区二区| 欧美高清在线一区| 欧美主播一区二区三区美女 久久精品人 | 91久久在线| 久久精品国产欧美激情| 一二三区精品福利视频| 亚洲国产日韩欧美| 久久久美女艺术照精彩视频福利播放| 欧美日韩1区2区3区| 伊人久久大香线蕉av超碰演员| 亚洲欧美影音先锋| 亚洲精品孕妇| 欧美黑人在线播放| 亚洲激情一区二区三区| 你懂的国产精品| 久久久99免费视频| 国产日韩欧美在线一区| 午夜久久资源| 亚洲午夜电影在线观看| 欧美婷婷久久| 亚洲——在线| 中文国产亚洲喷潮| 欧美日韩视频在线第一区| 99精品欧美一区二区三区| 欧美激情一区在线观看| 美女久久一区| 亚洲国产精品一区二区第四页av| 久久在线免费观看视频| 久久久久久亚洲精品杨幂换脸| 国产在线拍揄自揄视频不卡99| 久久久久久久97| 久久久久一区二区三区| 亚洲片在线观看| 亚洲精品字幕| 国产伦精品一区二区三区在线观看| 新狼窝色av性久久久久久| 午夜影院日韩| 在线观看亚洲a| 亚洲精品色婷婷福利天堂| 欧美午夜精品伦理| 久久国产精品亚洲va麻豆| 久久国产精品免费一区| 亚洲激情另类| 一区二区欧美日韩| 国产一区在线免费观看| 亚洲高清色综合| 国产精品jizz在线观看美国 | 国产日韩欧美中文在线播放| 久久九九免费| 欧美国产精品中文字幕| 亚洲欧美日本国产有色| 久久成人免费网| 日韩西西人体444www| 亚洲一级二级| 亚洲国产另类久久久精品极度| 99re66热这里只有精品4| 国产欧美视频在线观看| 欧美成人资源| 国产精品xxxxx| 欧美a级理论片| 国产精品美女一区二区在线观看| 美女任你摸久久| 国产精品久久| 国产在线欧美日韩| 国产伦一区二区三区色一情| 久久国产精品久久久久久| 久久综合99re88久久爱| 午夜久久久久| 欧美日韩成人综合天天影院| 久久久久久国产精品mv| 欧美精品日韩综合在线| 久久婷婷综合激情| 国产精品青草久久| 亚洲欧洲精品一区二区三区| 国产亚洲欧美一区二区三区| 日韩一区二区精品葵司在线| 在线精品国产欧美| 性欧美大战久久久久久久久| 在线亚洲一区二区| 欧美成人午夜激情在线| 美日韩在线观看| 国产日韩专区| 亚洲综合电影一区二区三区| 99视频+国产日韩欧美| 麻豆九一精品爱看视频在线观看免费| 欧美呦呦网站| 国产精品乱码| 日韩午夜三级在线| 日韩写真在线| 欧美国产日韩一区| 亚洲国产二区| 亚洲高清中文字幕| 久久精品免费看| 久久国产免费| 国产一区二区三区视频在线观看| 亚洲一区二区三区四区中文| 亚洲私人影院| 欧美日韩性生活视频| 亚洲国产毛片完整版| 亚洲电影免费| 模特精品裸拍一区| 亚洲国产视频一区二区| 亚洲人成亚洲人成在线观看图片| 久久免费一区| 欧美激情导航| 一本色道综合亚洲| 欧美日韩一区二区三区在线看| 亚洲日韩第九十九页| 一本色道**综合亚洲精品蜜桃冫| 欧美黄色小视频| 99热这里只有精品8| 亚洲男人第一av网站| 国产女人精品视频| 欧美一区二区啪啪| 免费视频久久| 99国内精品久久| 国产精品久久久久久久第一福利| 一区二区免费看| 久久精品动漫| 亚洲欧洲精品一区二区三区不卡| 欧美精品一区二区三区高清aⅴ| 亚洲人成人一区二区三区| 一区二区三区黄色| 国产精品一区二区久久| 久久九九免费| 亚洲三级电影全部在线观看高清| 在线综合亚洲欧美在线视频| 国产美女搞久久| 免费欧美日韩| 亚洲天堂男人| 欧美大片va欧美在线播放| 一区二区三区精品久久久| 国产美女精品人人做人人爽| 国产日韩1区| 午夜精品久久久久久久久| 欧美天堂亚洲电影院在线观看 | 中文精品视频| 老司机免费视频一区二区三区| 亚洲国产日韩美| 国产精品你懂的在线欣赏| 久久久久久日产精品| 亚洲卡通欧美制服中文| 久久久综合免费视频| 在线亚洲电影| 亚洲国产精品成人久久综合一区| 欧美午夜视频一区二区| 久久综合精品国产一区二区三区| 一本色道久久综合狠狠躁篇怎么玩| 久久久久久久久蜜桃| 亚洲婷婷综合色高清在线| 在线不卡中文字幕| 国产精品丝袜久久久久久app| 欧美1区3d| 久久国产一区二区| 亚洲一级免费视频| 亚洲欧洲三级电影| 欧美a级片网| 久久久久久久久久久一区| 亚洲欧美激情一区| 99精品视频免费| 亚洲精品视频在线观看免费| 一色屋精品视频免费看| 国产亚洲精品高潮| 国产精品自拍在线| 国产精品一区二区你懂得|