假设我想制作一个完全在浏览器中运行的大型、实时、2d 开放世界风格的游戏,我想使用 Firebase 来实现。
让我们也抛开有关安全性的问题;我稍后会问这些。( =
玩家从 (0,0) 开始,可以向任何方向移动。我在空间上散列世界,以便任何给定的 x,y 坐标变成一个(或嵌套)键,我可以使用它来生成 Firebase ref:
var getKey = function(x, y) {
return Math.floor(x / 100) + ':' + Math.floor(y / 100);
}
var key = getKey(currX, currY);
var ref = new Firebase('https://whatever.firebaseio.com/world/' + key);
// ...
类似的东西。当玩家在世界各地移动时,我很确定我需要保持 4 到 9 个对 Firebase 的引用才能进行更改。这取决于我如何构建数据,这可能会增加一倍或三倍:其他玩家是存储在world/
树中还是其他地方?那种事。
我不希望播放器的浏览器获得它不关心的更新。我想在玩家四处移动时“过期”旧的 refs,这样浏览器就不会花费资源来谈论遥远的世界。
让 ref 实例超出范围并获得 GC 就足够了吗?或者我还需要做些什么来通知裁判我不想再使用它了吗?
我想到的另一件事不是担心有多少 refs,而是跟踪on
回调。当玩家离开世界特定区域的范围时,我可以off
设置任何回调。这足以让我的裁判停止与 Firebase 交谈吗?