Estoy trabajando en un Roguelike, y para ello he creado un algoritmo de campo de visión (FoV) de trazado de rayos / proyección que consiste en trazar líneas de Bresenham en cada punto de un círculo sólido. No tiene artefactos (y es razonablemente eficiente), pero le falta un requisito importante: la simetría (si puedes ver un monstruo, también debe poder verte).
Aquí hay un ejemplo del comportamiento no simétrico de mi código. En la imagen de la izquierda estoy parado en una esquina (bloques rojos 'X' = pared). Puedo ver los mosaicos superiores derechos. Sin embargo, si me muevo a uno de esos mosaicos (imagen derecha), ya no puedo ver el mosaico del que provengo.
Creo que podría estar buscando una forma de campo de visión permisivo , pero solo porque el artículo de Roguebasin sugirió que permitía la simetría. ¿Hay medios alternativos para obtener simetría?