問題:我正在嘗試爲我的地圖類存儲瓷磚數據。我有使用每層調色板的想法,調色板將描述層中的數據,該數據將是一個字節數組,每個字節代表一個瓦片類型。存儲瓷磚數據超過1億個瓷磚每層多層
這意味着1層1億個瓷磚將等於約96mb。但是我忽略了我可以在一個字節中實際存儲多少數據,事實證明,我當然只能存儲256個磁貼。導致256 *個瓷磚尺寸紋理尺寸的平方根(在這種情況下,256個瓷磚尺寸爲16)。 256 * 256紋理尺寸太小,因爲每個調色板只能有一個紋理。嚴重限制了我可以在一個圖層中的瓷磚。
我現在卡在一個綁定,就像我用2個字節(短)而不是1個字節來存儲瓦片數據,我會使我的內存使用量增加一倍,達到192mb每層。我至少想要4層。最終產品膨脹到768mb使用的RAM。我也無法描述數據中的數據,因爲每個字節的數組偏移量也是其位置的描述。
有沒有一種方法可以更有效地存儲這些數據。最壞的情況將涉及到我將所有這些保存到磁盤並緩存到磁盤的內存中。但我寧願保留在記憶中。
我想我可以在幾個小時內想出一些聰明的東西,但我想我會問,看看有沒有什麼常見的方法我不知道來解決這個問題。
這是你的錢包可以解決的問題。購買更多的RAM。;) – carlpett
我想我正在考慮一個有點老派的2D遊戲,1gb ram的要求是不是我認爲不好。我仍然會喜歡另一種選擇。 – user936509
我有點開玩笑,即使它會起作用。所有1億個瓷磚同時可見嗎?否則,您可以嘗試將可見部分保留在內存中,並根據需要加載其他部分。另外,所有職位是否總是包含數據?否則,請考慮創建一個稀疏結構。 – carlpett