日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

快节奏多人游戏同步:技术与算法的实现

發布時間:2024/8/26 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 快节奏多人游戏同步:技术与算法的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


介紹

這是系列的第一章,主要介紹快節奏游戲所用到的技術和算法。如果你熟悉多人游戲背后的概念,你完全可以跳過接下來介紹性質的內容。

開發任何一種游戲都是一項挑戰,特別是多人游戲,有全新的一套問題需要解決。網絡游戲的核心技術問題是作弊和通信。

作弊問題

作為游戲開發者,一般是不需要擔心玩家在單機中作弊的,他的行為只能影響到自己。作弊者可能沒法按照你設計的去體驗,但這是他們的游戲,他們怎么做都行。

多人游戲就不同了。在任何競技游戲中,作弊玩家不僅僅讓自己體驗更好而已,還讓其他人體驗更差。這回導致沒人愿意繼續玩,作為開發者,你肯定不想遇到這種情況。

防止作弊的方法有很多,但是最重要的方法(也很可能是唯一的方法)最簡單:別信任玩家。永遠假定最壞情況:玩家會作弊。

權威服務器和傀儡客戶端

這就有了一種看起來最簡單的方法,讓所有事情都在服務器發生并且受控??蛻舳酥皇鞘芟薜呐杂^者。換句話說,你的游戲客戶端只是發送輸入(按鍵、命令)到服務器,服務器運行游戲,然后將結果傳回客戶端。之所以叫權威服務器,是因為所有事情的發生都在服務器。

當然,你的服務器也會有漏洞,但這不在這系列文章的討論范圍。用權威服務器能夠阻止大范圍的破解行為。比如說,你不信任客戶端的血量,但被破解的客戶端可以本地修改血量到10000%,但服務器知道它實際只有10%。接下來玩家再被攻擊就會死亡,不管客戶端怎么破解。

你同樣不信任玩家的坐標。如果這么做了,一個破解了的客戶端會告訴服務器“我在(10,10)”接著下一秒會告訴服務器“我在(20,20)”,這就會讓玩家穿墻或者跑得比其他人要快。相反,服務器知道玩家在(10,10),客戶端會告訴服務器“我想往右邊一點點”,服務器就會更新坐標到(11,10),然后告訴客戶端“你在(11,10)”。
?


總的來講,游戲狀態只由服務器來管理。客戶端會發送他們的行為到服務器。服務器定期更新狀態,然后將狀態發回去,客戶端只要顯示可以了。

處理網絡

傀儡客戶端對于回合制游戲來講能良好工作,比如策略游戲或者撲克牌。它在局域網下也會有不錯的表現,通信幾乎是立刻到達。但這對于因特網上互聯的快節奏游戲來講是不可行。

這里算一下網速。假設你在舊金山,連接到紐約的QQ靚號交易服務器。這大概有4000km,也就是2500里(差不多等于里斯本到莫斯科)。沒有東西能比光速快,就算是在互聯網上的字節(微觀上是光脈沖,在電纜中的電流,也就是電磁波)。光傳播速度大約是300,000 km/s,所以穿越4000km需要13毫秒。

這可能聽起來很快,但這是基于非常樂觀的假設–這里假設了數據以光速在直線上傳輸,這幾乎是不可能的事情。在現實生活中,數據需要經過一個個路由器跳躍,大多數都沒有到達光速;路由器本身還存在一定的延遲,需要對數據包進行拷貝、檢查、發送。

為了便于討論,假設數據包從客戶端到服務器需要50毫秒,這已經是很好的情況–如果你在紐約連接到東京會怎樣?如果網絡阻塞會怎樣?100、200甚至500毫秒的延遲也不是沒有的。

回到我們的例子,你的客戶端發送輸入信息到服務器“我按下右鍵”。服務器在50毫秒后收到。假設服務器處理請求并且馬上回包。你的客戶端會在50毫秒后收到“你在(1,0)”。

在你看來,所發生的事情無非就是按下右鍵有十分之一秒沒有響應而已,接著角色才開始往右走。這個在你輸入與結果之間的延遲聽起來不是特別嚴重,但這會影響手感。如果延遲到了半秒鐘,這就不僅僅是影響手感,而是這游戲沒法玩了。

總結

網絡多人游戲非常有趣,但是帶來了全新的挑戰。權威服務器架構能解決大部分作弊問題。簡單的實現方式能讓游戲沒有響應性。

在接下來的文章里,我們將會基于權威服務器去構建系統,同時會去最小化延遲給玩家帶來的不良體驗,讓玩家感受到單機游戲般順暢。

總結

以上是生活随笔為你收集整理的快节奏多人游戏同步:技术与算法的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。