我一直在为最后几天的工作方法,以保存时将我的xna游戏的144百万磁贴表示压缩为非常小的尺寸。设法解决这个问题后,我现在发现自己难以应付如何从文件中将它们从大块中分离出来。请求方向加载我的文件块(只需要建议)
在我有的文件中。
- 一个整数(它被压缩到使用7BitEncodedInt方法字节)
- 字节
压缩整数表示的片的数目和随后的字节确定什么类型的砖。这一切都很好,并且运作得非常好。最重要的是,它将文件大小平均缩小到只有50mb。
问题是我正在读回整个文件。 从文件我得到这个。
- 每一瓦片的索引值(只是一个基本迭代作为我抢瓦片)
- 类型每一瓦片为字节值
- 表示用于该图块的纹理的一个字节值(这是很难解释,但它的必要基于每个瓷砖)
所有这一切的最终结果是,我设法保存文件,只使用约50MB。但是通过重新装载整个东西,扩展到了将近1.5G的内存。我无法承担牺牲任何瓦信息。所以我需要一种只根据玩家位置加载地图部分的方法。目标是在100-200mb范围内
我一直在寻找内存映射文件,使用quadtrees,几乎所有我能找到的用于加载文件的块。虽然这些选项似乎都很不错,但我不确定哪个是最好的,或者如果考虑到情况,可能会有另一个更好的选项。所有这些问题的另一个问题是,这些解决方案似乎都很涉及(尤其是因为这是我第一次使用它们),虽然我并不反对把自己投入一些冗长的编码,但我想知道它会做我所做的需要它之前。
我的问题是,鉴于我在处理文件时需要如何处理文件,并且需要根据播放器位置来完成这一事实,那么最好的方法是什么?我只是在这里寻找一些方向。代码总是受欢迎但不是必需的。
在我头顶,jst看看你是否可以优化你存储在文件中的数据和你想传输的数据。把它分成几块,只发送需要的东西。对于网络传输,发送已更改并主要保存在本地计算机本身。对不起,如果这不是你要找的答案。 – Zenwalker 2011-06-15 04:56:05