运行应用程序,更好地加载资源或存储它们使用?

时间:2015-09-04 14:57:40

标签: java

我的问题与这个问题有些相关(Better to load resources on the run or to pre load them on memory?)但是我有一些自己的想法要提出来。

即,我知道即时加载资源可能会产生性能影响(加载延迟,延迟等),但我想真正的问题是预先加载所需的一切还是更好,因为它们是更好的加载必需的。

例如:我目前正在开发2D游戏。在加载游戏时,它会自动加载一些所需的图像/精灵。但是我想扩展它还包括地图,项目和npcs(当前保存在文本文件中)。话虽如此,加载地图的延迟相当明显(在游戏中更改地图时为0.5 - 1.25秒)。 NPC和物品的影响不大(因为它们通常都很小,而且会有少量)。

这是一个更好的做法,在程序启动时加载所有内容,还是被认为是一种不好的做法?同样,如果它只适用于较小的实现,那么你预计它何时会开始耗尽计算机以使它们全部加载?请注意,我希望游戏包含大约200-500张地图,每张地图最大约50kb,所有NPC /物品的总数少于200kb。

1 个答案:

答案 0 :(得分:1)

这是一个很好的问题。这就是我解决它的方式。

我和他们一起去了。我在我的视频游戏中创建了航点。每个航点都有各种必须由该航点加载的文件。然后我有一个文件加载器,它有一个加载文件所需的优先顺序列表。每个航点都有它所需的文件。在我的游戏中,当它到达未完成加载的航路点时(文件加载器将跟踪航路点完成的百分比),它会以百分比的形式抛出加载栏。

文件加载器在一个单独的线程上运行。在实现它之后,我注意到我在开始时只有一个快速加载条,它只是为第一个菜单加载了一堆菜单图像,我再也看不到另一个加载条了。当用户到达他们需要的时间点时,所有文件都会被加载。

编辑:我不加载地图的backgorund图像,直到需要它为止。虽然该地图中的所有其他单元(已在游戏的其他级别共享)已经加载。在您愿意在用户的计算机上消耗多少内存以及您愿意接受用户的加载时间之间存在平衡。我能够将内存占用限制在150MB左右。如果我愿意,如果我决定加载地图的backgorund图像,这给了我加载所有地图的空间。如果游戏是一个小型休闲游戏,你的mem足迹已经达到400MB,那么我会考虑避免加载不必要的对象。使用mem使用的更精简,加载对象可能需要的选项越多,以减少加载时间。