问题:我正在尝试为我的地图类存储瓷砖数据。我有使用每层调色板的想法,调色板将描述层中的数据,该数据将是一个字节数组,每个字节代表一个瓦片类型。存储瓷砖数据超过1亿个瓷砖每层多层
这意味着1层1亿个瓷砖将等于约96mb。但是我忽略了我可以在一个字节中实际存储多少数据,事实证明,我当然只能存储256个磁贴。导致256 *个瓷砖尺寸纹理尺寸的平方根(在这种情况下,256个瓷砖尺寸为16)。 256 * 256纹理尺寸太小,因为每个调色板只能有一个纹理。严重限制了我可以在一个图层中的瓷砖。
我现在卡在一个绑定,就像我用2个字节(短)而不是1个字节来存储瓦片数据,我会使我的内存使用量增加一倍,达到192mb每层。我至少想要4层。最终产品膨胀到768mb使用的RAM。我也无法描述数据中的数据,因为每个字节的数组偏移量也是其位置的描述。
有没有一种方法可以更有效地存储这些数据。最坏的情况将涉及到我将所有这些保存到磁盘并缓存到磁盘的内存中。但我宁愿保留在记忆中。
我想我可以在几个小时内想出一些聪明的东西,但我想我会问,看看有没有什么常见的方法我不知道来解决这个问题。
这是你的钱包可以解决的问题。购买更多的RAM。;) – carlpett
我想我正在考虑一个有点老派的2D游戏,1gb ram的要求是不是我认为不好。我仍然会喜欢另一种选择。 – user936509
我有点开玩笑,即使它会起作用。所有1亿个瓷砖同时可见吗?否则,您可以尝试将可见部分保留在内存中,并根据需要加载其他部分。另外,所有职位是否总是包含数据?否则,请考虑创建一个稀疏结构。 – carlpett