Это упрощенный вариант кода, нет проверок на границы чанков, только чистая логика света. И представим _blockIds заполнен данными 0 и 1 (0 - нету блока, 1 - есть блок), а _blockLights имеет значения от 0 до 15.
1. Блок света (Лампа) устанавливается в ячейку с координатами (x, y, z), а сила его света lightForce = 15. 2. Перебираю соседние ячейки: (x - 1, y, z), (x + 1, y, z), (x, y - 1, z), (x, y + 2, z), (x, y, z - 1), (x, y, z + 1). 2.1 Если в соседней ячейке есть блок, то он пропускается. И если lightForce внутри блока уже больше или равен присваиваемому lightForce, то блок пропускается. 2.2 Если блока нет, то ячейке присваивается lightForce= 14. Так же эта ячейка добавляется в очередь _lightsQueue. 3. Запускаю цикл While и также перебираю блоки внутри _lightsQueue.
Если вам интересно следить за разработкой игры и влиять на саму игру, у меня есть телеграмм канал.