2

我正在使用 C# 开发一个相对较小的射击游戏项目,该项目必须以体素块的形式发送地图数据,以及玩家移动数据、战斗数据以及未来可能的其他内容。我已经决定使用 protobuf-net 对服务器和客户端之间的数据进行序列化/反序列化,但我不知道应该以何种方式自己发送数据包。protobuf-net 给出的示例使用 TcpListener.BeginAcceptTcpClient 但警告该示例绝不是最佳实践。我的目标是在一台服务器上支持至少 30 个用户,但我当然更希望达到 64 个,而不会因为射击游戏变得太慢而无法实现远程实用。我应该以什么方式建立 TCP 连接并处理数据包?

4

1 回答 1

3

使用 TCP 进行实时高性能数据交换似乎有点奇怪(尽管在某些情况下并且取决于您的网络技能,您可以为此提出理由)。由于可靠性不是核心要求,而是获取实时世界数据,因此使用 UDP 连接(例如使用Lidgren)更有意义,特别是当您在 LAN 设置中时。

最后,这里有一篇有趣的文章,从游戏的角度讲 TCP 和 UDP 的区别。

于 2013-05-28T20:53:33.833 回答