For example, if you're at the bottom of a cliff, you may only want people to see those at the very edge of the cliff, and no further. Likewise, if you are running to the edge of the cliff, you should not see below it until you get there. In the below example, the commoner could see both the ogre and the goblin, but the goblin and the ogre can only see the commoner. One of the ways I could see doing this (programmatically) is to allow a line to have a opacity variable. If a line blocks 50%, then he can continue seeing all the way through, until another line that blocks 50% or more (ie: it only blocks line of site once you look through enough of these things). This would be good to simulate trees as well (which might only block 1/4 each), fire (which might be 1/4 or less), or even stained glass.