@Nathan Reedの回答に対するコメントとしてこれをコメントとして追加します。ただし、コメントとしては大きすぎて、おそらく別の回答に値するものです。
私たちは彼の回答で提案されたことを正確に行っていました。実際、このページにリンクしているソースにコメントがあります。2、3か月に1回、検索クエリの継続時間が非常に長いために無応答になったサーバーがランダムに失われていることを除いて、ほとんどの場合、非常にうまく機能しています。
この問題の根本的な原因は、パフォーマンスチェックを行って何が原因であるかを理解しようと試みているときに気付きました。オブジェクトのオーバーラップを許可する場合にのみ問題になる可能性があります。私たちのゲームでは、そして最悪のシナリオでは、パフォーマンスが大幅に低下することがあります。
境界ディスクを持つすべての約100個のオブジェクトが非常に近接してクラスター化された1つのエッジケースがありました。オブジェクトがクワッドツリーノードでカバーされる領域よりも大きくなり、新しい各オブジェクトが複数のノードに表示されて、木、したがって、制御不能な問題を雪だるま式にします。
これからの要点は、オブジェクト領域のオーバーラップを許可する場合、オブジェクトの密集したクラスターを取得する場合は注意深く監視して、ツリーが深くなりすぎないようにすることです。
私が現在調査している解決策は、オブジェクトをポイントとして格納し、検索を実行するときに、ツリーに格納されている最大半径だけ検索長方形の境界を広げることです。ツリーは最初のパス検索であるため、これでうまくいくはずです。次に、真円に基づく範囲チェックと他のいくつかの基準チェックを実行します。これにより、余分な偽のアラートが除外されます。
実際の走行距離は異なる場合があります。