0

我正在为我的网络 Asteroids 游戏开发协议。第一个版本将只允许每个玩家在滚动世界中拥有一艘射击对手的船。稍后我会添加岩石,许多岩石。

在 UDP 之上实现协议似乎并非易事,但 UDP 无疑是实时游戏的必经之路。我研究了 Gaffers 关于游戏网络的文章,所以我认为我必须在 UDP 之上实现以下内容:

  • Reliablilty(通过发送确认确保某些数据包到达。这也意味着确保确认到达)。
  • 对大于建议的 UDP 数据包大小的数据包进行分段和重组。
  • 检测死客户。

我遗漏了什么重要的东西吗?

4

1 回答 1

1

问题是,您最终会重新发明 TCP / 流套接字功能吗?一旦您开始考虑 ACK/NAK、数据包排序和重组以及端点完整性,您实际上就是在重新发明轮子。不仅如此,您还在用户空间中执行此操作,并且没有内核提供的广泛的路径优化和内存管理策略。我并不是说 UDP 是错误的选择,但请查看 Q3 引擎中多人游戏/网络代码的来源等。很大程度上取决于有效负载内容和冗余。即,你能承受丢帧/数据包的代价吗?

于 2012-04-24T15:29:28.630 回答