假设我想制作一个完全在浏览器中运行的大型,实时,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);
// ...
Run Code Online (Sandbox Code Playgroud)
这样的事情.当玩家在世界各地移动时,我非常确定我需要保留4到9个参考值,以使Firebase保持活跃状态以进行更改.这可能会增加一倍或三倍,这取决于我如何构建数据:是否存储在world/树中或其他地方的其他玩家?那种事.
我不希望播放器的浏览器获得它不关心的更新.当玩家四处移动时,我想"过期"旧的参考,因此浏览器不会花费资源聊聊世界上遥远的片段.
是否足以让ref实例超出范围并获得GCed?或者还有什么我必须做的事情来通知裁判我不想再使用它了吗?
我想到的另一件事并不是担心有多少参考,而是追踪on回调.当玩家离开世界特定区域的范围时,我可以进行off任何回调.这足以让我的裁判停止与Firebase交谈吗?