Quick and dirty FOV/LOS

From RogueBasin
Revision as of 17:47, 29 February 2012 by Algebraist (talk | contribs)
Jump to navigation Jump to search

Quick and dirty field of view algorithm

This is a FOV algorithm (read: babies first Line of sight) i used in a C# roguelike i made for the learning experience, it is probably not as efficient as it could be.


  For each block (assuming your roguelike map works in blocks, 99.9% of RL's do)
  {
     if the block is within the players view radius
     {
        draw a virtual line from the player to the block
        for each block on the line
        {
           set it as visible initially
           if it is a wall/door/object that blocks vision
           {
              the block = non-visible
           }
        }
     }
  }

C# code Note: This was programmed using XNA, the datatypes "vector" and "point" can be easily recreated in normal c# with the use of datastructures

Other methods

This method worked fine in my RL, however, it may be more efficient (read: probably) to draw a line to each block that lays on the line of circumference around the player (the radius being view distance), and going through each block on the line and checking for blocking objects.