Sto lavorando su una Roguelike, e per questo ho creato un algoritmo FoV (ray tracing / casting field of view) che consiste nel tracciare linee di Bresenham in ogni punto di un cerchio solido. È privo di artefatti (e ragionevolmente efficiente), ma manca un mio importante requisito: la simmetria (se riesci a vedere un mostro, deve anche essere in grado di vederti).
Ecco un esempio del comportamento non simmetrico del mio codice. Nell'immagine a sinistra sono in piedi in un angolo (blocchi "X" rossi = muro). Sono in grado di vedere le tessere in alto a destra. Tuttavia, se mi sposto su una di quelle tessere (immagine a destra), non riesco più a vedere la tessera da cui provengo.
Penso che potrei avere una forma di Campo visivo permissivo , ma solo perché l'articolo Roguebasin ha suggerito che consentiva la simmetria. Ci sono mezzi alternativi per ottenere la simmetria?