Это просто для удовольствия:
Вы можете повторить подход Doom 3 в 2D, если сначала сделаете шаг, чтобы преобразовать свои плитки в линии. Например,
- - - - -
- X X X -
- X X - -
- X - - -
- - - - L
... будет уменьшено до трех линий, соединяющих углы твердого объекта в треугольнике.
Затем сделайте то, что делает движок Doom 3. С точки зрения источника света, рассмотрите каждую «стену», которая стоит перед светом. (В этой сцене будет рассматриваться только диагональная линия.) Для каждой такой линии спроецируйте ее в трапецию, передний край которой является исходной линией, стороны которой лежат на линиях от источника света через каждую конечную точку, а задняя часть далеко, мимо всей сцены. Итак, это трапеция, которая «указывает» на свет. Он содержит все пространство, на которое отбрасывает тень стена. Заполните каждую плитку в этой трапеции темнотой.
Пройдите через все такие линии, и вы получите «трафарет», который включает в себя все плитки, видимые из источника света. Заполните эти плитки светлым цветом. Вы можете захотеть осветить плитку немного меньше, когда уходите от источника («затухание»), или делать другие причудливые вещи.
Повторите для каждого источника света в вашей сцене.