我正在开发一款基于PC的在线纸牌游戏。它的特点是有一个大堂,可以自动更新活动游戏的列表,所以我会向许多客户发送许多更新。我会有一个这样的游戏服务器。延迟对我来说并不是太大的问题,如果玩家有时不得不额外等待1/4秒,直到他们的牌被展示出来,这并不是我真正关心的。我担心的是可靠性和稳定性。我希望能够主办许多4人游戏,我也允许人们观看一个特定的比赛。
我还需要让他们登录,并在他们断开连接时记住他们的会话,这样如果他们断开连接,他们就可以回到游戏中。
我正在争论的是,我是应该使用基于UDP的可靠的Enet,还是普通的老式TCP/IP。
我最终需要能够向他们发送额外的内容创建,如额外的卡片组,这将是一个压缩文件的形式。但是,我确信有一个库可以帮助我从HTTP源获取这些内容。
如果任何人对这两种方法中的一种或两种都有经验,我将非常感谢您的意见。
Thnks
发布于 2012-04-09 22:18:11
我会坚持使用经典的TCP,而不是某些库,这些库将正确的排序和数据包传递的可靠性嵌入到一个不是为它设计的协议中。
Enet声称拥有TCP的一些好处,同时为“实时”游戏提供速度。这句话让我想到了FPS,它根本不是你的应用。
发布于 2012-04-09 22:44:30
我没有使用过ENet,但我快速阅读了它的文档,它似乎在某些情况下可能会很有用。
第一个问题:您是否需要可靠的数据包传输机制,或者不可靠是否正常?ENet可以做得很可靠,但在这一点上,它变得有点类似于TCP,除非你需要它的多数据流支持,否则我不确定它是否值得一玩。
如果不可靠是可以的,那么下一个问题是:您是否需要ENet所具有的数据包分段支持?如果你的数据包很小,那么我建议直接使用UDP。
我不清楚ENet是如何使用UDP套接字以及它是如何管理连接的,所以我不清楚使用大量开放的TCP套接字还是使用大量开放的ENet连接会更好。
https://stackoverflow.com/questions/10074430
复制相似问题