基于实时浏览器的游戏

时间:2009-06-18 04:33:14

标签: web-applications

我想实现一个支持大量成员并提供实时操作的bbg。

我目前的游戏已经开始运行但很快就会消失。

我正在使用的方法是轮询。我想闲置用户的浪费使服务器烧坏(服务器在C#中,客户端是Javascript)

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

也许http://goldfishserver.com可能对您有用(即Comet服务器)。它提供了一个简单的API,允许推送通知到您的网页。简而言之,当您的数据更新时,将其(一些有效负载数据)发送到Goldfish服务器,并通过相同的数据通知您的客户端浏览器。

回合制游戏非常适合金鱼,但根据您的设计,可能会使用更“大世界”的系统。

免责声明:我是一名从事金鱼工作的开发人员。

答案 1 :(得分:1)

你总会有一些滞后。我不确定您是否正在轮询单个更新,但您可以查看以下某些操作以降低滞后和密集的服务器资源:

  • 对所有更新进行一次轮询。不要在一次通话中查看“生命数量”,在另一次通话中查看“位置”,一次性完成所有操作。

  • 由于更新次数减少,因此轮询较少。当有很多更新时我经常轮询。当没有或更少的新更新时,我不太频繁地进行轮询。

  • 最后,我会发送多个更新,并告知发生的时间。所以让我们说玩家x移动到5,5然后攻击某人并移动到5,8。这将是一次民意调查中发生的三个不同事件。前端将负责以对用户有意义的方式随时间显示这些变化。

我不认为这是最终解决方案。这更像是关于如何更好地处理轮询方面的建议。

答案 2 :(得分:0)

如果您想要实时做出反应,那么轮询就无法完成任务。您需要通过长时间运行的http连接或某些东西来使用某种持久连接。 (彗星)

答案 3 :(得分:0)

HTTP中的持久连接/轮询可能很棘手,正如您所指出的那样,无论如何都不是很有效。我建议迁移到支持服务器推送消息的基于插件的游戏。也许Unity因为它基本上是为游戏而设计的,但如果你想要更普遍的东西,那就是Flash。

如果您真的想坚持使用HTML,可以使用混合解决方案,通过插件传递消息并在响应中重写DOM。