I'm working on a Roguelike, and for it I've created a ray-tracing/casting field-of-view (FoV) algorithm that consists of plotting Bresenham lines to every point in a solid circle. It's artifact free (and reasonably efficient), but it is missing an important requirement of mine: symmetry (if you can see a monster, it must also be able to see you).
Here's an example of the non-symmetric behavior of my code. In the left image I'm standing in a corner (red 'X' blocks = wall). I'm able to see the top right tiles. However, if I move to one of those tiles (right image), I can no longer see the tile from which I came from.
I think I might be after a form of Permissive Field of View, but only because the Roguebasin article suggested it allowed for symmetry. Are there alternative means to get symmetry?