【发布时间】:2016-11-24 02:28:08
【问题描述】:
我正在为一个学校项目编写一个 2-D RPG 风格、基于 sprite 的游戏,我们小组决定游戏应该有一个跟随玩家而不是固定的摄像头,这自然意味着游戏需要在玩家四处移动时动态加载世界数据。我知道这可以通过分块加载世界的各个部分来实现,就像在 Minecraft 中一样,但我希望能够有选择地和频繁地加载少量数据,而不是不那么频繁地加载大块数据。例如,玩家向上移动一个单位,因此游戏可以在加载顶行时从内存中丢弃底行数据,而不是加载整个块或不时卸载块。目前所有相关的世界数据都存储在二维数组中,那么有没有一种有效的方法可以从世界文件中加载数组中的特定数据点,而无需加载整个事物或大块加载?
再一次,也许大块加载是更好的选择,因为从硬盘加载需要更长的时间,有什么想法吗?
假设在这种情况下,我的世界文件由称为区域的较小文件组成,这些文件基本上是块。
那么我的问题是:“我将如何从主世界文件中加载这些特定区域而不立即加载整个内容?”
【问题讨论】:
-
所以简而言之,您想将一个矩阵存储在一个文件中,然后您想从文件中随机访问一个子矩阵,而不需要遍历整个文件?
-
@WasiAhmad 基本上,是的。
-
取决于文件格式。如果您可以以编程方式确定给定单元格的偏移量,则可以查找该偏移量并读取。如果不能(单元格大小可变),则必须索引序列化数据,使其成为单元格->偏移量。但是为此,是的,磁盘查找会杀死您,并且您可能会在内存中容纳整个世界。
标签: java arrays serialization