Pracuję nad Roguelike i do tego stworzyłem algorytm śledzenia pola widzenia (FoV), który polega na kreśleniu linii Bresenhama do każdego punktu w jednolitym okręgu. Jest wolny od artefaktów (i dość wydajny), ale brakuje mi ważnego wymogu mojego: symetrii (jeśli widzisz potwora, musi on także cię widzieć).
Oto przykład niesymetrycznego zachowania mojego kodu. Na lewym obrazku stoję w rogu (czerwone „X” bloki = ściana). Widzę kafelki w prawym górnym rogu. Jeśli jednak przejdę do jednego z tych kafelków (prawy obraz), nie widzę już kafelka, z którego pochodzę.
Wydaje mi się, że mogę mieć formę Permissive Field of View , ale tylko dlatego, że artykuł Roguebasina sugerował, że dopuszcza to symetrię. Czy istnieją alternatywne sposoby uzyskania symetrii?