0

我正在开发基于 minecraft 的 java LWJGL 游戏。我正在研究地形管理,这很困难,因为世界可以随着你的探索而扩展。如果地形存储在块对象中,并且您需要知道从渲染列表中删除哪个块、添加哪个块以及根据玩家的 xyz 位置生成哪个块,您将如何管理地形?

4

1 回答 1

3

我使用高分辨率医学体素数据并使用八叉树以有效的方式存储它。

您不能真正使用八叉树,因为您想要动态扩展地形(八叉树在查找时非常快,但在构建/扩展时非常慢)。

我建议你尝试使用 HashMap,如果你为 Vector3 提供了一个好的散列函数,那么对于任何数量的块(理论上 O(1),但这只是最好的情况......)的查找时间几乎相同。

然后,您可以通过遍历映射键来删除所有看不见的映射条目。(这可以在处理所有加载/卸载的辅助线程上完成)。

希望这可以帮助,

~ 洛基

于 2012-08-21T09:12:17.707 回答