2012-04-24 51 views
0

我正在開發我的網絡小行星遊戲的協議。第一個版本將允許每個玩家在一個滾動的世界裏有一艘射擊對手。後來我會加石頭,很多石頭。待辦事項列表基於UDP的小行星遊戲

在UDP上實現該協議似乎不是微不足道的,但UDP無疑是實時遊戲的一種方式。我已經研究了遊戲網絡燈光師的文章,所以我想我必須實現在UDP上以下內容:

  • Reliablilty(確保某些數據包通過發送 確認到達這還意味着在確認 確認到達)。
  • 對大於 推薦的UDP數據包大小的數據包進行分段和重組。
  • 檢測死客戶。

我有沒有留下任何專業?

+0

您如何確保確認到達? – cnicutar 2012-04-24 14:35:21

+0

你是否關心無序到貨? – Flexo 2012-04-24 14:39:00

+0

@awoodland在某些​​消息順序的情況下可能很重要。在其他情況下,亂序消息被丟棄。 – ScrollerBlaster 2012-04-24 20:00:14

回答

1

問題是,你會不會重新發明TCP /流套接字功能?一旦開始考慮ACK/NAK,數據包排序和重新組裝以及端點完整性,您就基本上重新發明了方向盤。不僅如此,而且你正在用戶空間中完成它,並且沒有內核提供的廣泛路徑優化和內存管理策略。我並不是說UDP是錯誤的選擇,但可以看看Q3引擎中的多人/網絡代碼的來源等等。很大程度上取決於有效負載內容和冗餘。即,你是否可以承擔丟幀/數據包?

+0

有一個非常好的治療方法對於某些數據包,最好採取最新的更新並忽略丟失或無序數據包。對於某些數據包,如果沒有收到,它們必須被傳送或重新發送。我通過重新發明輪子意識到這一點。我不介意,因爲這是一個嗜好的事情。 – ScrollerBlaster 2012-04-25 07:51:17