如何随机匹配用户与Firebase

时间:2017-09-11 13:11:11

标签: firebase matchmaking

我尝试使用Firebase创建一个用户随机匹配的游戏。

我想匹配它们的想法是这样的:

  1. 用户A来,阅读游戏列表。如果没有任何游戏等待开始游戏。将自己设为发起者,将对手设为null。
  2. 用户B来,阅读游戏列表。找到用户A的游戏(对手为空)并加入(他成为对手)
  3. 如果用户C介于用​​户B阅读游戏列表的那一刻和用户B将自己写为对手的那一刻(对于他的对手仍将为空),会发生什么。基本上是并发问题。
  4. 我已经阅读了有关交易的内容,但我并非100%确定他们在这种情况下有所帮助(阅读没有对手的游戏,将对手写入其中一个游戏),因为我已经看过他们使用过增加价值而不是读/写数据。

1 个答案:

答案 0 :(得分:1)

事务块用于并发。当两个用户同时尝试写入同一区域时,他们所做的是防止出现问题。就像你说的那样常见于喜欢。因此,如果游戏目前只有1名玩家​​而你保存的值为0,那么其他玩家就知道游戏是“开放的”。当玩家尝试连接到该游戏时,他们会写入该区域并将0更改为1.如果另一个玩家同时尝试连接,则他们的事务块将会触发。当他们获得数据时,他们会看到1但不是零。此时你退出并寻找新游戏。不确定这是否是最好的方法,但它应该工作。