0

我正在创建一个类似于口袋妖怪的 2d 平铺游戏,所以我正在创建一个地图编辑器来创建地图。
游戏将在网络上,因此地图编辑器必须是网络。
我不知道如何将地图存储在内存中:
我认为我可以使用二维数组,但地图可能非常大,导致大量内存使用/内存不足问题。
如何在不使用所有浏览器内存的情况下有效地将整个地图存储在内存中?

4

3 回答 3

1

该标准似乎没有将整个地图加载到内存中,而只是当前视口或bounds在映射世界中被引用。

您将检查任何地图平移、滚动或缩放的边界并获取相应的图块。

于 2013-04-25T15:35:18.270 回答
0

存储地图的内存不应该太大。您可以制作以 json 格式存储数据的特殊地图文件。

echo json_encode(array(array(4, 2, 6, 4), array(4, 2, 6, 4), array(4, 2, 6, 4), array(4, 2, 6, 4)));
// do some loading of the generated file
var map = <...>, i, j; // loaded data

for(i in map) {
  if(map.hasOwnProperty(map[i]))
  // etc
}

例如,数组中的数字指向一个 id,只是为了保持它的小。您也可以在其中放置磁贴名称。

于 2013-04-25T15:35:04.023 回答
0

我也在做一个2D平铺游戏......

您可以使用单独的数组来更轻松地创建地图,如下所示:

var mapX = [];
var mapY = [];
var mapType = [];

mapX 是瓦片 x 位置的数组,mapY 是瓦片 y 位置的数组,mapType 描述瓦片的类型(例如 0 = 水,1 = 草,2 = 泥土,3 = 岩石等.)。然后你可以有一个功能来制作这样的瓷砖:

function createTile(x,y,type){
mapX.push(x);
mapY.push(y);
mapType.push(type);
}

正在使用:

createTile(50,50,1);

将在 (50,50) 位置创建一个草块。

于 2018-03-27T02:24:45.567 回答