壁を定義する大きな長方形で構成される大きなダンジョンで行われるスペースシューターを作成しています。ゲーム内のすべては、FarseerPhysicsを使用して物理的にシミュレートされます。ただし、問題が1つあります。ダンジョンを十分に大きく見せたいのですが、グリッドに少なくとも80x80の長方形が必要です。つまり、最悪のシナリオでは、6400の物理的にシミュレートされたボディがありますが、これは正確ではありません。ご想像のとおり、パフォーマンスに適しています。
私の一時的な解決策は、グリッドを垂直スライスに分割することでした。これにより、すべての列について、ブール値の追加操作を使用してすべての長方形が追加され、結果の凹多角形を使用してボディが作成されます。パフォーマンスは少し向上しますが、ポリゴンは混乱したり、存在しなくなったり、通常は通過可能であるはずのウェイをブロックしたり、無効になってFarseerをクラッシュさせたりする傾向があります。
どういうわけか壁の最大の領域を見つけてそれらを1つの大きな長方形にマージし、すべての穴が埋められるまで小さな長方形に対してこれを続けていくようなアルゴリズムを作成することを考えていましたが、これを実装する方法がわかりません。パフォーマンスの問題と、現在私が抱えている凹多角形の混乱を解決できるので、完璧な解決策のようです。誰かがこのようなものを実装する方法についての手がかりを持っていますか?
私のゲームの多くのものが物理エンジンに依存しているため、物理エンジンの使用を完全に停止することは解決策ではありません。
編集:これが今の体の様子の小さな例です:(すべての数字は体です)

そして、これが私が彼らになりたい方法です:
