firebase - 在firestore中高效匹配玩家

标签 firebase google-cloud-firestore google-cloud-functions

我正在开发一款需要玩家配对的游戏,即将 2 名玩家放入 1 个战斗室。

虽然游戏中在线玩家很少,但这不是问题,但是如果我们假设同时有 1,000,000 名玩家在线,并且都在尝试匹配,那么情况就会变得更加复杂。

假设以下流程

enter image description here

我的第一直觉是

  1. 当玩家点击“开始”时,调用云函数检查是否存在“开放”战斗室。
  2. 如果有一个空位,请将玩家放入其中并开始战斗或将战斗设置为事件状态。
  3. 如果没有开放房间,我们会创建新房间并等待另一位玩家加入。

但是,鉴于我们有 1,000,000 名玩家执行此操作,我在这里看到了很多问题。例如,在执行步骤 2 并将空间设置为“事件”时,我们可能会在这些请求得到解决期间将更多玩家插入其中?

最佳答案

如果你想处理并发,我认为你应该使用事务来执行此操作(将玩家添加到房间)。这样,您就可以确保在添加玩家之前检查房间是否仍然打开。如果2名玩家同时开始匹配并找到同一个房间,则该房间中只会添加一名玩家 https://firebase.google.com/docs/firestore/manage-data/transactions

关于firebase - 在firestore中高效匹配玩家,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54609385/

相关文章:

android - FCM Token会像GCM注册ID一样周期性变化吗?

node.js - Firebase 3.0 token : [Error: Invalid claim 'kid' in auth header.]

javascript - 将字段单独添加到 firestore 文档

firebase - Firestore规则,使用短路来挤出读取

wordpress - 后端连接wordpress时如何向设备发送通知?

firebase - 如何使用datetimepicker计算年龄?

database - Firebase消息未按命令草稿保存

android - 在本地测试 firebase 功能 : How to point android app to the locally running callable functions?

node.js - Firebase 函数返回连接错误

google-cloud-platform - 如何调度经过身份验证的云函数的http调用?