2

我正在为 PC 开发一款在线回合制纸牌游戏。它有一个大厅,可以自动更新活动游戏列表,因此我会向许多客户发送许多更新。我将为此准备一个游戏服务器。延迟对我来说不是什么大问题,如果玩家有时必须额外等待 1/4 秒才能显示他们的卡片,我并不关心。我关心的是可靠性和稳定性。我希望能够主持许多 4 人游戏,我也允许人们观看特定的游戏。

我还需要让他们登录,并在他们断开连接时记住他们的会话,以便他们在断开连接时重新进入游戏。

我正在争论的是我是否应该使用基于 UDP 且具有可靠性的 Enet,或者使用普通的旧 TCP/IP。

我最终需要能够以 zip 文件的形式向他们发送其他创建的内容,例如额外的套牌。但为此,我确信有一个库可以帮助我从 HTTP 源获取这些。

如果有人对这两种方法或两种方法都有经验,我将不胜感激您的意见。

谢谢

4

2 回答 2

2

我会坚持使用经典的 TCP,而不是某些库将正确的排序和数据包传递可靠性入侵到不是为它设计的协议中。

Enet 声称拥有 TCP 的一些好处,同时为“实时”游戏提供速度。这句话让我想到了 FPS,它根本不是你的应用。

于 2012-04-09T14:18:10.720 回答
0

我没有使用过 ENet,但我快速阅读了它的文档,它似乎在某些情况下很有用。

第一个问题:你需要一个可靠的数据包传递机制,还是不可靠可以?ENet 可以做到可靠,但在这一点上它有点类似于 TCP,除非你需要它的多流支持,否则我不确定它是否值得愚弄。

如果不可靠是可以的,那么接下来的问题是:你需要ENet所具备的数据包分片支持吗?如果您的数据包很小,那么我会说直接使用UDP。

我不清楚 ENet 如何使用 UDP 套接字以及它如何管理连接,所以我不清楚使用大量打开的 TCP 套接字还是打开大量的 ENet 连接会更好。

于 2012-04-09T14:44:30.487 回答