我从 lance-gg 开始,正在构建一个游戏,每隔几分钟就会生成一个新的游戏地图。客户端游戏引擎需要接收生成的地图。目前我正在将地图注册为可序列化的对象,并在服务器启动时向游戏世界添加一个新实例。
class Map extends serialize.DynamicObject {
constructor(id, width, height) {
super(id);
this.class = Map;
this.width = width;
this.height = height;
this.netScheme = {
tiles: { type: "CLASSINSTANCE" },
};
}
randomTiles() {
const tiles = [];
_.forEach(_.range(this.width), (x) => {
tiles[x] = [];
_.forEach(_.range(this.height), (y) => {
tiles[x][y] = _.random(0, 1);
});
});
return tiles;
}
}
该地图是一个双整数数组,可能非常大,所以我想避免将它作为网络方案的一部分来实现(无论如何我认为我在这里做得不正确),因为它不需要非常更新经常。我还想在游戏世界中保留对它的引用,以使其与实际改变位置的对象分开。
做这个的最好方式是什么?