在android中使用firebase配对两个玩家游戏?

时间:2017-04-15 07:30:20

标签: android firebase firebase-realtime-database multiplayer

我正在尝试使用firebase(用于实时配对)在Android中实现双人游戏。

在firebase上,我已经设置了一个代表活跃玩家的节点。在每个客户端上我都有一个childEventListener来监听玩家节点上的任何变化。

假设

  1. 最初只有一名球员(球员A)。
  2. 然后又增加了3个玩家(B,C和D)(在相同的时间戳)。
  3. 然后,在客户端 1. 4个玩家中的每一个都将通过childEventListener获得有关节点变化的通知。

    现在,我想要实现的是“独特的配对”,即我应该能够从这4个玩家中产生2对。 (当然,一个玩家不能同时成对)

    我已编写代码将两个玩家配对在交易区块中,这样就不会有两个玩家与同一个玩家配对。

        import sys
        sys.path.append("Macintosh HD/Library/Python/2.7/site-packages")
        import beautifulsoup4
    

    我的DOUBT

    1. 这是配对的正确方法吗?
    2. 当PlayerA尝试与PlayerB配对时会发生什么,PlayerB尝试与PlayerC配对,而PlayerC尝试与PlayerD配对,最后PlayerD尝试与PlayerA配对(以CYCLIC方式)。如何确保这种情况不会发生?
    3. 请注意,在Doubt2中,我没有注意两个玩家尝试与同一个玩家配对的情况。 (因为事务块将确保它不会发生,我想:/)。

1 个答案:

答案 0 :(得分:0)

您要做的事情很难正确安全地完成。让后端服务进行这种匹配更好,这样客户就不必知道如何以某种方式达成一致。

您可以使用Cloud Functions for Firebase编写一个响应数据库更改的database trigger。一种策略是客户端将数据推送到数据库中的某个位置,以指示其匹配的 intent 。然后,当一个函数触发这些写操作时,它可以检查是否有其他合适的玩家匹配,并将更多数据写入数据库以设置游戏。客户还需要一种方法来监听匹配后启动的游戏。这仍然是非常重要的,但比将逻辑放在客户端要容易得多。