使用 Firebase 的两人象棋游戏

Two player chess game using Firebase

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

我为下一个人写了一个库

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

-- 问题--

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

我无法使用 Google 游戏服务,因为我的应用程序中没有实现 google 登录(我只打算保留 facebook 登录)。使用 firebase 的优点(与套接字相比)是我将不得不编写更少的代码(重新连接等)并且它会解决可伸缩性问题。

我的问题是:-

(1) 当用户在两台 iOS 设备(而不是 android 的设备)上对战时,是否会出现问题? (例如更高的延迟)

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

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

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

与其让其他玩家向客户端发送消息,不如让客户端根据游戏中发生的情况显示消息?这对您来说似乎是一个更简单的解决方案,因为唯一需要发送的是实际移动,如果需要,您可以顺带使用它。

Firebase 云消息传递不适用于某种用途,并且除了无法保证交付时间(2013 - 2014 shows more than 1 seconds per message on avarage), FCM will probably imply throttling 在此类用例中的一些研究。

另请参阅此 SO post

我意识到我应该查看 Firebase 实时数据库(而不是消息传递)。

有用的链接:

我确信上面的答案会奏效,但我很难让它们发挥作用。这就是最终对我和我的 firebase 聊天应用有用的东西!

希望这对那里的一些人有所帮助。

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

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

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

src="chess/index.html"

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

接下来,我在同一个 public 目录中创建了一个名为 "chess" 的新文件夹,并向其中添加了国际象棋游戏的 "index.html" 文档和依赖项(js,css, 图片...等).

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

完成!

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

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

  • 之后,只需在页面任意位置右击select"view source"即可查看代码。干杯!

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