我正在构建一个游戏,其中有一些人可以玩,生活
我使用firebase共享用户相关数据并从heroku上的后端nodeJS获取更新。到目前为止一直很好,但我有一个主要要求,我还没有完全想出使用firebase和NodeJS后端构建
可能有大量用户希望玩游戏。我想匹配这些用户的k并为他们分配一个独特的游戏室ID,然后他们可以“玩”。为了这个问题,我们可以省略实际的“游戏”。
所以我想创建一组随机的k用户,这就是我想要接近它的方法,我想知道这是一个好方法还是一个糟糕的方法。如果有更简单的方法可以实现这一目标,我还想了解更多建议:
我想补充一点,如果单个队列工作者有办法访问多个任务,那么我更喜欢这样。在这种情况下,步骤2几乎不是必需的,因为实时播放器可以将自己添加到队列中,并且单个工作人员可以访问这些用户中的k个以将它们匹配在一起 - 这是否可以使用当前的Firebase队列?
答案 0 :(得分:2)
让我先说明这是一个概念性答案,并不直接涉及Firebase队列。这些可以相应地利用。
我们不知道创造一个好的混合球员的标准是什么,但让我用一个典型的魔兽地牢组拍摄。该组将有5名球员;一个坦克(领导者)一个治疗师和三个造成伤害的球员(dps)
在这个例子中,似乎可以通过观察每个game_room节点的变化来呈现解决方案,并且还可以观察waiting_players节点的变化。
示例结构:
game_room_0
current_players
player_0
type: tank
player_1
type: healer
player_3
type: dps
player_4
type: dps
player_5
type: dps
waiting_players
player_6
type: dps
player_7
type: healer
会有x个游戏室,每个游戏室需要5个玩家。
该应用会观察当前播放器节点(在每个游戏室中)以移除播放器。
它还将观察waiting_players节点以添加玩家
当玩家离开game_room / current_players节点时,例如player_0,坦克(哦不!)你的应用程序将被通知该更改,然后可以在waiting_players节点查询type = tank。
此时它将有一个等待坦克列表,可以随机选择一个或进一步缩小标准以获得更好的混合。然后将它添加到需要坦克的游戏室中。
在这种情况下,没有坦克等待,但应用程序正在观察该节点,所以当一个新的玩家被添加到waiting_players节点(玩家表示他想要玩)时,应用程序会被通知该添加的玩家如果它是一个坦克,它们可以被放入游戏室以替换剩下的那个。
这种方法可以避免必须加载所有等待的玩家,因为应用程序将知道需要哪些特定的玩家。由于应用依赖Firebase事件,因此还可以减轻应用的负担,即可获得1000 * k任务。
最后,它可以响应离开或被添加的玩家以避免轮询,甚至减少对Firebase队列的依赖
如果这是不合适的,请告诉我。