2013-05-31 56 views
0

soive閱讀this在這裏發帖:和我有點困惑,所以這裏是我的另一個問題:UDP是如何工作的?在網絡遊戲中的例子

UDP如何處理丟失的數據?因爲它表示UDP不關心數據是否會到達目的地或數據的順序。

舉例在一個在線遊戲中,UDP如何處理數據丟失?我的理解是,當數據丟失,讓我說我的角色的手不能在一個在線遊戲中看到?或者我已經養殖了多年的梓醇012g的warglai​​ve丟失了? LOL

如果排序並不重要,所以讓我說我的角色的頭會被搞砸或身體會脫臼,類似的東西。

所以任何人都可以爲我澄清這一點?

+0

正如您在參考文獻中所述,UDP並不關心發送數據包以外的任何其他內容。它不處理訂單,如果它們到達,它不處理,...它只發送數據包。如果一個數據包在某個地方丟失了,那麼在接收端就會發現它從未被髮送過。如果您需要處理丟失的數據包,您必須使用TCP或者使用UDP來實現您自己的處理 - 例如,將數據包發回給收到的數據包。但我相信這個問題是離題的,因爲引用的也是。 – Bikonja

回答

2

在遊戲中的UDP的一個更好的例子是位置信息。

在這種情況下,一個字符的位置每秒發送幾次,並且數據包是否丟失並不重要,因爲另一個字符將很快再次發送。當你將它與一個插值和外推的遊戲引擎相結合時,你可以通過零星的數據實現平滑的運動。

在重新排序的情況下,如果由於數據包重新排序而收到較舊(及時)的字符位置,則只需將其丟棄即可,因爲您已獲得較新的值。

以你的戰利品爲例 - 有可能這些信息是通過TCP發送的,或者是使用圍繞UDP的可靠包裝發送給你的客戶端。

看看http://code.google.com/p/lidgren-network-gen3/是爲了一個C#UDP網絡庫而設計的。它通過UDP提供各種不可靠和可靠的渠道,並且應該讓你知道UDP在遊戲中的典型用法。

+0

哦,我明白了。在線遊戲中「不關心數據包是否被髮送」就是「滯後」?我對嗎? – Monkey