Saya sedang mengerjakan Roguelike, dan untuk itu saya telah membuat algoritma ray-tracing / casting-of-view (FoV) yang terdiri dari memplot garis Bresenham ke setiap titik dalam lingkaran padat. Ini bebas artefak (dan cukup efisien), tetapi tidak memiliki persyaratan penting saya: simetri (jika Anda dapat melihat monster, ia juga harus dapat melihat Anda).
Berikut adalah contoh perilaku kode saya yang tidak simetris. Pada gambar kiri saya berdiri di sudut (merah 'X' blok = dinding). Saya dapat melihat ubin kanan atas. Namun, jika saya pindah ke salah satu ubin (gambar kanan), saya tidak bisa lagi melihat ubin dari mana saya berasal.
Saya pikir saya mungkin mengincar bentuk Permissive Field of View , tetapi hanya karena artikel Roguebasin menyarankannya untuk simetri. Adakah cara alternatif untuk mendapatkan simetri?