在开发游戏时,我正处于需要跟踪世界上所有单位的地步,以便可以进行最近邻检查以进行战斗。这是一款类似于RTS的游戏,可能有成千上万的小型自动化单位在移动。
我一直在研究KD树和四叉树(尤其是点四叉树)。我仍在尝试了解它们如何工作的详细信息,但是到目前为止,Point Quadtree对我来说最有意义。但是,我的印象是KD-Trees的搜索速度更快,这对我在树中拥有的点数很重要。
另一方面,就我而言,我将跟踪大量始终在移动的单元。从一帧到另一帧,它们的位置将始终不同。四叉树显然比KD-Trees重平衡更快,但是我不知道当您重新平衡树中的每个点时是否适用。
我想知道在这种情况下,最好只是逐帧废弃树并从头开始重建它,而不是尝试重新平衡树中的每个点?如果Quadtree重新平衡的速度更快,是否也意味着从头开始构建的速度更快?如果是这样,那对性能而言可能比KD-Tree的搜索速度更重要,这取决于创建树的负担,但我不知道...