使用Firebase的双人棋牌游戏

时间:2017-01-24 19:21:02

标签: firebase-realtime-database real-time firebase-cloud-messaging multiplayer

编辑:答案是使用firebase实时数据库。

我为下一个人写了一个图书馆。

https://github.com/flipflopapp/turnbased-games-with-firebase

- 问题 -

我正在实施两个玩家国际象棋游戏(www.halfchess.com),我正在考虑使用firebase消息(而不是使用套接字创建房间和两个玩家匹配)。游戏将涉及在两到三分钟内(可以是android或iOS)在两个设备之间发送60-100个国际象棋动作作为消息。我的nodejs服务器将具有支持设备到设备消息传递的代码(从一个播放器接收并发送给其他播放器)。

我无法使用Google游戏服务,因为我没有在我的应用中实施谷歌登录(我只打算保持Facebook登录)。使用firebase(与套接字相比)的优点是我将不得不编写更少的代码(重新连接等),它会处理可伸缩性问题。

我的问题是: -

(1)当用户互相玩游戏时,两个iOS设备(而不是Android设备)会出现问题吗? (例如更高的延迟)

(2)如果用户在物理上更改位置并且包含国际象棋移动的消息未送达,何时会重试?

(3)对于快速的国际象棋游戏,延迟是否可以控制?这就像正常聊天速度的8-10倍。

虽然我在这个主题上阅读了更多内容,但也许已经尝试过的人可以发表评论。

4 个答案:

答案 0 :(得分:1)

Firebase云消息传递不适用于某种用途,并且除了无保证的交付时间外(某些研究来自2013 - 2014显示每封邮件超过1秒),FCM可能会在这种用例中暗示throttling

另见SO post

答案 1 :(得分:1)

我确信上面的答案会奏效但是,我很难让它们发挥作用。这最终适用于我和我的firebase聊天应用程序!

希望这能帮助那些人。

我能够在我的firebase聊天应用程序中添加国际象棋游戏,我使用的只是一个iframe!但是,它第一次没有用,因为我所做的只是将iframe编码添加到我的应用程序中。

这就是我让我的iframe在firebase应用程序中工作的方式......

首先,将目录(cd)更改为聊天应用程序的“公共”文件夹(通常运行“firebase deploy”命令),然后将iframe添加到位于那里的“index.html”文档中。将此地址用于iframe的源URL(src)...

<强> SRC = “棋/ index.html中”

  • 如果您不包含“index.html”页面名称,它将无法正常工作!

接下来,我在同一个公共目录中创建了一个名为“chess”的新文件夹,并添加了国际象棋游戏的“index.html”doc和dependanciess(js,css,images等)。

最后,但不是租赁,在同一个“公共”文件夹中打开一个终端并运行“firebase deploy”将整个内容上传到您的firebase帐户和控制台。

完成!

我很确定在你的firebase应用程序中包含你的国际象棋应用程序文档是使iframe最终起作用的原因。我还用几个'div'标签包装了iframe但是,我不确定这是否有任何区别。

  • 请随时来看看,但您必须登录Google才能进入!

  • 之后,只需右键单击页面上的任意位置,然后选择“查看源代码”即可查看代码。干杯!

https://friendly-chat-b2d6a.firebaseapp.com/

答案 2 :(得分:0)

为什么不让客户端根据游戏中发生的事情显示消息,而不是让其他玩家向客户端发送消息?这似乎是一个更简单的解决方案,因为唯一需要发送的是实际移动,如果需要,你可以捎带它。

答案 3 :(得分:0)