meinst du ein fertiges script für die normale map oder willst du das für was ganz anderes verwenden und brauchst deshalb nur einen algorithmus?

falls es für die normale map ist, gibt es einige dinge die noch wichtig sind:
was versperrt denn die sicht? alle tiles die nicht passierbar sind? oder tiles mit einer speziellen terrain id? versperren events auch die sicht?

ich hab mal eine sichlinie für nen 2d shooter geschrieben:
Code:
class Game_Map
  def sichtlinie(start,ziel)
    n = Math.sqrt((start[0]-ziel[0])**2+(start[1]-ziel[1])**2).to_i
    x = start[0]
    y = start[1]
    for i in 0...n
      d = n-i
      x = ((x * (d - 1) + ziel[0]) / d.to_f).round
      y = ((y * (d - 1) + ziel[1]) / d.to_f).round
      return false unless $game_map.passable?(x,y,0)
    end
    return true
  end
end
aber ich weiß nicht ob ich dir dieses script wirklich "empfehlen" kann.
es funzt zwar weitgehenst, aber es gibt bestimmt bessere lösungsmöglichkeiten.
aufruf: $game_map.sichtlinie([x,y],[x2,y2])
gibt true oder false zurück

in dieser version wird die sicht nur durch unpassierbare tiles verpserrt.
falls das für dich nicht passt, passable? durch terrain_tag oder $game_map durch $player oder nen event ersetzen :/