回答:
ローグライクなコミュニティでは、その問題に向けて多くの作業が行われています。
ここにあなたを助けるかもしれないいくつかのアルゴリズムとライブラリをリストするページがあります。 http://roguebasin.roguelikedevelopment.org/index.php?title=Field_of_Vision
これは完全な答えではありませんが、うまくいけば役立つでしょう。
マップ/タイルは静的または動的に設定されていますか?静的な場合は、オフライン処理を実行し、そのようにできる限り事前計算することを強くお勧めします。好きなように(レイキャスティングやもっと賢い方法で)できますが、レベルを「ベイク」している間はすべてオフラインで行われるため、非常に高速に作成する必要はありません。各スポットから見えるタイルを正確に事前計算するか、ある種の大きな領域と各領域から見える可能性のあるすべてのタイルを作成することができます。
次に、実行時に、表示されているタイルのクエリは非常に単純で非常に高速でなければなりません。
もちろん、動的に作成されたレベルがある場合、これはまったく適用されません:-)
使用しているプラットフォームはわかりませんが、(多くのemがない限り)ライトキャストエンティティの周りに円を成長させて、サークルアルゴリズムで「プロット」されようとしているタイルは、塗りつぶされたタイルであり、したがって遮光されます。そこから、オクルードされているかされていないサークルセグメントを追跡する必要があるため、少しトリッキーになりますが、それは私が行うことです。別のオプションは、タイルの解像度空間で(やはりかなり高速に)円にレイをキャストし、各レイが固体タイルに当たったときに停止することです。