ほとんどの場合、海をピクセルに分割して、A*のようなことをする必要があります。隣接するピクセルをより大きな領域に結合することで少し最適化できますが、すべてを正方形に保つと、検索が簡単になる可能性があります。検索はマンハッタンスタイルではなくなりますが、十分な大きさの正方形があれば、追加の接続決定時間は埋め合わせ以上になります。
または、すべてのポートからポリゴンを繰り返し「成長」させて、凸多角形を構築することもできます(たとえば、ポリゴン内の任意のポイントが外に出ることなく他のポイントから到達できるように、PacManシェイプを避けたい場合)。これは、私が最初に述べた「正方形」アプローチの改良/複雑化/最適化です。重要なのは、そのエリアに入ると、そのエリアの他の場所に行くことができることを知っているということです。
申し訳ありませんが、これが役立つかどうかはわかりません。長い一日でした。でも頑張ってね。楽しい問題のようですね!
編集:言及するのを忘れて、あなたはまたあなたのエリアを四分木に前処理することができました。つまり、マップ全体を取得して、垂直方向と水平方向に半分に分割します(両方の分割を同時に行う必要はありません。時間をかけて「より良い」分割を行う場合は、後で行うことができます)。 、および各ノードが完全に陸または海になるまで再帰的に実行します。これにより、接続のネットワークを簡単に作成でき(隣接するリーフを接続するだけ)、A*はそこから実装するのに十分簡単なはずです。とにかく、これはおそらく私の最初の提案を実装する最も簡単な方法でしょう。:)