2013-04-25 95 views
0

我創建了一個2d平鋪的遊戲口袋妖怪般的樣子,所以我創建了一個地圖編輯器來創建地圖。
遊戲將在網絡上,所以地圖編輯器必須是網頁。
我不知道如何將地圖存儲在內存中:
我以爲我可以使用2維數組,但地圖可能很大,導致大量內存使用/內存不足問題。
如何在不使用所有瀏覽器內存的情況下將整個地圖高效存儲在內存中?在內存中高效地存儲大2D地圖

+0

只是想知道這個問題......瓷磚地圖的近似尺寸是多少?另外,每塊瓷磚存儲了多少信息?它只是一個數字,還是每個單元格都是具有多個屬性的對象?如果它只是一個數字,一個技巧就是將地圖數組視爲一個大文本字符串,每個字符代表一個圖塊。這與其獲得的效率差不多,而不使用壓縮或動態部分加載。 – kbelder 2013-04-25 15:40:29

+0

@kbelder每個圖塊都有文件名,x/y偏移量,x/y大小。 – Roberto 2013-04-25 15:56:34

+0

啊。這不同於我期待的:)一種建議可能是不存儲每個圖塊的文件名,而只是存儲一個數字......在繪製地圖時,使用該數字作爲數組中的索引來查找文件名圖片。這可能會消除大量重複條目...但是,如果不知道地圖的詳細信息,很難說。 – kbelder 2013-04-25 16:13:37

回答

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的數字,只是爲了保持它小。您也可以將瓷磚名稱放在那裏。

1

該標準似乎沒有將整個地圖加載到內存中,而只是當前的視口或映射領域中提到的bounds

你會檢查任何地圖平移,界面滾動或縮放和獲取相應的瓷磚。