2012-04-24 54 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