好的伙计们。我知道您可以使用 ostream 和 istream 读取文件和排序(至少在 C++ 中)。我的问题是游戏 >Minecraft< 能够生成 block (游戏世界),在玩家与游戏交互时保存它们并在需要时加载它们。我所说的互动是指 build 、采矿、行走、死亡(经常安静)。 这一切怎么可能??您如何修改每 2 秒保存一次的日期?我应该打开一个流而不是关闭它,还是有一个特殊的函数或方法可以做到这一点? 谢谢!!
最佳答案
我不知道 Minecraft 具体是如何做到的,但您可以通过多种方式实时获得一致的快照。例如。
如果修改器试图在快照期间更改数据结构的相关部分,则数据结构可以创建数据结构相关部分的卷影拷贝。
所有节点都可以被锁定,以防止 mutator 在快照进行时更改它们。如果修改器试图获取节点上的锁,这可能会导致快照进程将该节点移到队列的前面......这样修改器只会被短时间阻塞。
他们可能只是将快照创建过程实现为增量式的,并且典型的增量可能足够快,用户通常不会注意到更改器会暂停一小段时间。 (我的猜测是,任何小于 1/10 秒的时间都不会引起注意……除非它产生明显的“视觉伪像”。即便如此,Minecraft 的渲染质量也不会让用户过分担心。至少,这是我从观看其他人玩游戏时观察到的...)
但有一件事是肯定的。实现很可能是非常 Minecraft 特定的和手动调整的。没有通用的 Java 库类可以神奇地完成这种事情。我怀疑他们是否正在使用 IOStreams 的 Java 等价物来执行此操作。
关于java - 我的世界如何自动保存并同时继续处理游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17288011/