0

我有一个需要多人游戏支持的 Windows Phone 游戏。多人游戏类似于 Wordament 中的多人游戏:每个人都玩相同的游戏;客户端最初获得游戏,然后每个玩家自己玩游戏,不与其他人进行任何互动,当游戏结束时,收集并显示每个人的结果。不同之处在于:在我的应用程序中,游戏不会在指定时间段后结束,而是在其中一个客户端发出信号时结束。因此,当有人完成游戏(达到目标)时,必须通知所有其他人有人赢了。

我最初的想法是每隔 5 秒汇集一次服务器,看看游戏状态是否已更改。当客户端完成游戏时,它会发送一个包含该信息的请求,并且所有其他客户端在下一次池请求时将获得新状态。IMO,这是最简单、最方便的解决方案,因为我只需要一个字节的数据来告诉我游戏是否结束。

实时(如毫秒精度)并不重要。正如您在上一段中可能已经注意到的,5 秒的延迟是可以接受的。

但是,我问你,专家,双工通道是否更适合这种情况?我找到了像 Pusher 这样提供双向通道的解决方案,但在我看来,这样的解决方案非常复杂且昂贵(我们的预算非常有限)。

4

1 回答 1

1

将分享我目前的知识。

Pull(Poll)
实现简单,应用广泛。
示例:Facebook.com、TeamCity Web 界面、用于 QPID 消息代理的 .NET 客户端


看看这篇文章
Microsoft Silverlight 3 中 HTTP 轮询双工服务器端通道的性能
我自己注意到的:需要额外的配置工作,可伸缩性和性能可能存在问题
我能想到的唯一场景 - 交换持续不断的海量数据
示例:大型多人在线游戏(事件数量巨大,通知时间非常关键)

按需获取更改
典型的商务桌面应用程序。
示例:TFS(刷新网格(任务和错误),在签出时获取锁定文件状态)

结论:为您的任务汇集非常适合

于 2013-06-05T09:05:54.790 回答