假设我正在制作一个时间风格的时间旅行游戏,并想要保存屏幕的当前状态(玩家和敌人的位置,无论可破坏的物体是否被销毁,等等)每秒到一个数组,在游戏开始变得相当滞后之前,我可以在这个数组上存储多少数据,我将不得不删除该数组或将其保存到游戏之外的文件(即:.bin)。
在类似的注释中,是不断地将每个屏幕保存到.bin更快,还是只在必要时才这样做(例如,当数组已满一半时开始保存)。
我知道运行它的计算机很重要,但假设它是在一台相当现代的计算机上运行的(不是旧的,但也不是nasa的超级计算器),特别是因为我无法确切地告诉玩这个游戏的人将使用什么。
发布于 2009-09-27 21:29:37
根据之后如何使用数据,您可以考虑存储状态之间的更改,而不是实际状态。
您应该使用缓冲区来减少I/O操作的数量。将数据放入主内存,并在需要时将大量数据写入磁盘。
发布于 2009-09-27 21:21:29
这将取决于您需要保存的对象数量以及每个对象占用的内存量。
假设,我们举一个过于简单和幼稚的例子,假设您的游戏平均包含40个对象,每个对象都有20个属性,这些属性占用了两个字节的存储空间。这就是每秒1600字节,如果你每一秒都在存钱的话。
发布于 2009-09-27 21:22:26
嗯,不可能给你一个肯定适用于你的场景的答案。您需要尝试一些方法。
假设您正在从磁盘加载较大的图像、声音或图形,由于争用而频繁地写入磁盘可能并不好。我之所以说“可能”,是因为它真的取决于这台电脑和正在发生的一切。那么你如何处理这个问题呢?一种方法是运行后台线程,该线程监视队列中需要写入磁盘的项。在写入磁盘之前,线程可以监视队列中一定数量的项。另一种方法是等待发生I/O的游戏中发生的某些其他事件,然后保存它。您可能需要分析要保存的事件的大小,并尝试不同的选项。
https://stackoverflow.com/questions/1484497
复制相似问题