TCP与Enet进行大堂在线纸牌游戏?

时间:2012-04-09 14:06:45

标签: c++ networking tcp enet

我正在为PC开发基于在线回合制的纸牌游戏。它有一个大厅,将自动更新活动游戏列表,所以我将向许多客户发送许多更新。我将有一个游戏服务器。对我来说,滞后对我来说并不算太大,如果玩家有时需要等待额外的1/4秒,直到他们的牌显示出来,那真的不关心我。我关心的是可靠性和稳定性。我希望能够举办许多4人游戏,我也允许人们观看特定游戏。

我还需要将它们登录,如果它们断开连接,请记住它们的会话,这样如果它们断开连接,它们就可以回到游戏中。

我在辩论的是,我是否应该使用基于可靠性的UDP或简单的旧TCP / IP的Enet。

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

如果有人对这些中的任何一个或两个都有经验,我将非常感谢您的意见。

Thnks

2 个答案:

答案 0 :(得分:2)

我坚持使用经典的TCP,而不是那些已经将正确的排序和数据包传输可靠性破解到不是为它设计的协议的库。

Enet的主张是获得TCP的一些好处,同时为“实时”游戏提供速度。那句话让我想起了FPS,这根本不是你的应用程序。

答案 1 :(得分:0)

我没有和ENet合作过,但是我快速阅读了它的文档,看起来它在某些情况下可能有用。

第一个问题:您是否需要可靠的数据包传送机制,或者不可靠? ENet可以做得很可靠,但是在那时它会变得类似于TCP,除非你需要它的多流支持,否则我不确定它是否值得愚弄。

如果不可靠,那么接下来的问题是:你是否需要ENet拥有的数据包碎片支持?如果你的数据包很小,那么我就说直接使用UDP。

我不清楚ENet如何使用UDP套接字以及它如何管理连接,因此我不清楚你是否更好地使用大量开放的TCP套接字或许多开放的ENet连接。