使用 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 实时数据库(而不是消息传递)。
有用的链接:
https://firebase.googleblog.com/2016/07/have-you-met-realtime-database.html
Is firebase realtime json database suitable for data broadcasting?
https://groups.google.com/forum/#!topic/firebase-talk/n_B1nrgp580
(根据这个谈话,大多数时候延迟可以小于 200 毫秒)
我确信上面的答案会奏效,但我很难让它们发挥作用。这就是最终对我和我的 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"即可查看代码。干杯!
编辑:答案是使用 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 实时数据库(而不是消息传递)。
有用的链接:
https://firebase.googleblog.com/2016/07/have-you-met-realtime-database.html
Is firebase realtime json database suitable for data broadcasting?
https://groups.google.com/forum/#!topic/firebase-talk/n_B1nrgp580 (根据这个谈话,大多数时候延迟可以小于 200 毫秒)
我确信上面的答案会奏效,但我很难让它们发挥作用。这就是最终对我和我的 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"即可查看代码。干杯!