根据我的情况,我应该去WebSockets或XmlHttpRequest或两者?

时间:2012-10-12 14:09:16

标签: websocket pubnub xmlhttprequest-level2

我即将在Monkey语言(跨平台翻译)中制作回合制游戏。该游戏将使用HTML 5平台。这个游戏将在线玩,玩家可以互相匹配(它可以是2vs2匹配)。我最近审查了大量的解决方案,我停止了其中的两个。好的旧的XmlHttpRequest和新的一个WebSocket似乎处于W3C的推荐状态,这是相当不错的。还有另一项我感兴趣的技术是PubNub,一种推送服务。这项服务实际上将消息推送到所有连接的客户端并且非常快......但是这需要花费很多时间,并且会限制您发送的消息数量。我的意思是,对于1000个连接和100万个消息,每月花费15美元,然后另外100万个消息花费1美元,然后继续。实际上有3个演员,用猴子写的客户端(HTML5)是用C#编写的服务器,因为我很清楚语言和PubNub用于广播消息。客户端只向服务器发送请求,服务器正在将消息中继到PubNub,然后发送回客户端。考虑到事实,我有两个计划:

  1. 游戏是用HTML 5编写的,但我可以将其移植到其他语言(Android为例)。如果我使用WebSockets,我不能这样做,因为我必须得到额外的图书馆来处理这个问题,我不想在这上面投入更多的时间。所以我现在将重点关注HTML 5,但移植它总是一种选择。
  2. 它是一个回合制的游戏,所以是的XmlHttpRequest似乎适合这项任务,但在哪一点?如果我有超过1000个连接发送请求它是否能够支持它?每个回合都是一个独特的请求,但聊天消息也是一个请求和私人消息,也是获取玩家数据(在你加入任何游戏之前)等。优于WebSockets的一个优点是Http Get易于制作并且在许多平台上都很容易支持所以如果我选择这个,我显然可以选择Android路线。
  3. 我不想在其他技术上投入更多时间,而不是这里所说的。
  4. PubNub最终会花钱,但是推送消息非常有效,所以不使用它可能会有风险,并且会迫使我自己传递代码来传递代码。
  5. 所以这是我的4个计划。

    1. 使用WebSockets并使用Alchemy作为C#的WebSocketServer,我测试并工作得非常好,并且后端仍然有PubNub演员来传递我的消息。
    2. 使用XmlHttpRequests并使用简单的WebAPI作为请求网关。
    3. 一起去。使客户独立于选择哪种技术。使用XmlHttpRequest作为后备并使服务器支持两种连接。 PubNub仍然是这里的中继演员,应该让整个事情进行沟通。
    4. 使用WebSockets但没有PubNub。
    5. 那么您建议我去哪条路线?为什么?

      谢谢!

2 个答案:

答案 0 :(得分:1)

独立游戏和多人在线世界的PubNub

当您构建模拟世界供人们探索时,网络很难。通常会考虑这些模拟。出于各种原因,PubNub是独立游戏开发者的最佳解决方案。使用PubNub的两个简单函数PUBNUB.publish({...})PUBNUB.subscribe({...}),在您的独立游戏中启用网络非常简单。在您的应用中添加网络可以让您实现多人游戏等等!在 HTML5 浏览器,手机,平板电脑等之间实施实时通知。一切都可以从地球上的任何地方发送和接收数据。

WebSockets或XMLHttpRequest或两者兼而有之?

PubNub为您做出此选择,自动检测适合您的播放器系统和功能的最佳连接类型。这意味着您的独立游戏将在所有平台上正常运行,包括 Android iPhone Chrome / Firefox / < strong> IE 等等。这使得它变得简单,因此您无需担心存在的各种平台的传输或交付方法。您的团队只需要专注于制作引人入胜且引人入胜的在线多人游戏。

在线独立游戏 - 服务器逻辑

您需要一种方法来安全地收集玩家进度并跟踪对您的世界的行为和后果。您可能还需要跟踪库存和玩家状态。这有两个很棒的服务。

RoarEngine

首先让我推荐http://www.roarengine.com/ RoarEngine是一个在线托管的游戏引擎,通过编写自己的自定义逻辑,它为您提供了一个脚本引擎,可以通过无限的可能性释放您的创造力。事件,挑战,定时机制,你的名字。 RoarEngine还提供Items&amp;通过创建影响玩家状态的项目来塑造玩家互动,由全功能商店,货币和礼品系统提供动力,可以即时管理。

解析

我强烈推荐https://parse.com/一个在线云托管服务,管理您的用户/玩家会话。当你需要一个更抽象,更少量化游戏的在线平台时,Parse很棒;它允许您以您选择的方式定义模型和对象。使用Parse,您无需专注于构建基础架构,而是专注于构建游戏世界状态。

PubNub HTML5 MMO XKCD游戏多人游戏

我们希望展示与PubNub一起使用的HTML5独立游戏的功能,以实现广泛的游戏玩法,实时加入世界各地的玩家。这个游戏使用HTML5 Canvas与多个用户一起飞行气球图。如果你被卡住了,你可以点击你的气球家伙,变成一个幽灵,无拘无束地穿过景观,不受树木和山丘等凡人的障碍。然而,在普通的现成游戏服务器上扩展用户存在问题。最大并发性一次只能是少数几个用户,让许多人想知道MMO的MMO部分在哪里。与自托管选项相比,PubNub使自动化成本更低。正在考虑自托管选项的团队将考虑与维护和托管游戏玩法的网络集群相比的成本。

上面的链接向您展示了基于HTML5 Canvas的游戏,该游戏由PubNub多人游戏功能提供支持。

答案 1 :(得分:0)

看看http://realtime.co - 它是一个类似于PubNub的实时平台,具有更多功能。