为我的第一个网络游戏阅读了很多关于此的内容,我了解 TCP v UDP 的保证交付与交付时间的核心区别。我还阅读了完全相反的观点,即实时游戏应该使用 UDP 还是 TCP!;)
没有人很好地涵盖的是如何处理丢包的问题。
TCP :阅读一篇使用 TCP 的文章,了解建议仅使用 TCP 的 FPS。使用 TCP 客户端输入的权威服务器将如何处理数据包丢失和突然的史诗般的延迟峰值?游戏是否只是暂停片刻,然后从中断的地方重新开始?TCP 数据包丢失是否如此罕见以至于这并不是什么大问题,并且基于 TCP 的 FPS 实际上运行良好?
UDP:另一篇文章建议只使用 UDP。显然,像“手榴弹投掷”这样的一次性 UDP 事件不够可靠,因为它们有时不会触发。您是否必须手动实现消息接收、重新发送协议?还是其他解决方案?
我的游戏是一个基于刻度的权威服务器,从服务器到客户端和本地模拟的更新时间为 1/10 秒,以使事情看起来更具响应性,尽管这个问题适用于更多的应用程序。