したがって、基本的には、障害物を通り抜けてパスを見つけ、診断的に移動できる A* パスファインダーをコーディングしました。私は基本的に、http: //www.policyalmanac.org/games/aStarTutorial.htm の疑似コードを実際のコードに実装し、バイナリ ヒープ メソッドを使用してオープンリストからアイテムを追加および削除しました。
バイナリ ヒープを使用すると、パフォーマンスが大幅に向上し、以前に使用した挿入ソート アルゴリズムよりも約 500 倍高速になりました。
問題は、平均で約 150 万ナノ秒かかることです。これは約 .0015 秒です。
問題は、マップにタワーを追加するたびに各モブのパスファインディングを更新する必要があるタワー ディフェンス ゲームを作成することです。マップ上に最大で約 50 体の Mob がある場合、Mob 全体のすべてのパスを更新するのに約 .0015 * 50 = .075 秒かかることを意味します。ゲームは基本的に 0.016 秒である 1/60 秒ごとに刻みます (すべてのゲーム内のものの更新)。したがって、問題は、刻みにかかる時間よりもパスの更新に時間がかかることです。これにより、大幅な遅延が発生します。では、これについてどうすればよいですか?オープンリストをソートするためのより良いアルゴリズムを見つけるか、パスファインディングタスクを分割して、各ティックがすべてではなくX個のパスファインディングタスクのみを実行するようにする必要があります。