Кроме того, в алгоритме сразу нужно предусмотреть, что свет может падать и от других источников. И просто обновлять свет только в одних участках, попутно сравнивая.
В целом, половина этого алгоритма только у тебя, так еще и неправильная.
P.s. комментарий написан на первый взгляд, без особых думок и тем более тестов.
Фактически вся ошибка здесь. Ты зачем-то просто приводишь свет к 0 удаляя его.Забывая что у тебя 2 источника. А удаление при обнаружении дистанции (радиуса) срабатывает на освещении 1, которая соприкосается и даже накладывается на 2 источник. Но из-за приведения к 0, ты буквально просто убрал свет и 1 и 2 - потому что никаких проверок не сделал. Тебе лучше обновлять каждый блок, вынеси в отдельный метод.
Ошибка или недоработка. Ты вычисляешь где у тебя свет будет, это очень плохо оптимизируемый участок. А именно, что каждое движение придётся обновлять - это bad practice.
Конечно вряд-ли ты поймёшь концепт чанков, раз с таким не справился. Поэтому есть другая идея.
Вынеси источники света, а также те блоки которые уже были обновлены в коллекцию.
А именно их координаты, источник света уже будет задан всегда и его не нужно будет искать. Просто будет сверка. Блоки которые были обновлены, тоже самое. Буквально. Прошла итерация - добавляем этот блок, и он не трогается никогда, пока это ты не изменишь в игре. Существенно и память сэкономит и цпу, что важно в 2д
Привет! Я учёл твои три совета, с ними я согласен, эти дни я потратил на исправление проблемы и создания гладкого освещения. Рендер всего я вынес в отдельный класс как и чанки освещения, так как я обдумал создание еще одного класса чанка где уже находится сжатые мыши блоков, в чем еще раз я убеждаюсь в твоем мнении . Также потратил дни на базовые паки для добавления блоков, а то в последствии добавлять различные блоки через код, ну такоооое.
Я б не советовал чушь, если б не знал как правильно это делается. Все таки опыт у меня большой, в разработке как и веб, так и высоконагруженных приложений и игр)
Ну и это правильно решение, иначе бы нарушение DRY, а в случае игр и их граф. составляющей была бы и одна из крит. ошибок.
В целом, тебе всю карту нужно вынести в такую архитектуру, Поэтому советую почитать про паттерн Tile based design и ECS. Даст большой буст и в изучении, да и ты наверное сразу поймешь больше, чем за год простого поэтапного улучшения.