Статья удалена
Основной фишкой версии 0.3 стала система освещения, также были переработаны текстуры нескольких блоков, добавленые новые, повышена производительность, существенно уменьшено время генерации мира и конечно исправлены баги.
1 Освещение
Как это реализовано?
В движке игры спрайты отрисовываются по слоям, от меньшего к большему. Соответсвено все блоки составляющие рельеф находятся на 0 слое. Мой подход состоит в отрисовке всех спрайтов на 3 текстурах: фон(блоки 0 слоя), передний край(все остальные слои) и интерфейс. После чего рисуется карта освещения. Текстуры фона, карты освещения и переднего края складываются в одну текстуру(это нужно для будущего премение к этой текстуре постобработки), затем она отрисовывается а уже поверх неё рисуется интерфейс.
Как рисуется карта освещения?
Почти всё происходит в шейдере. В него подаётся 2 массива:
- Источники света(позиция, цвет, раидус, сила)
- Источники теней(позиция, размер)
Расчитывается растояние от пикселя до источника света, делится на его радиус и вычитается из еденицы. Полученная яркость пикселя умножается на цвет источника. Затем отбрасывается луч в сторону источника, если он достигает его не встретив источник тени то яркость пикселя умножается на еденицу, если нет то на ноль.
2 Нововведения
Огонь теперь испускает свет, в папке с миром сохраняется его карта, а из скелетов выпадают кости
Пул блоков пополнися:
- Пнём
- Розой
- Синим факелом
- Желтый факелом
Так же были изменены текстуры одуванчика, камня, огнива
3 Оптимизация
Теперь блоки отрисовываются только в радиусе 17м от игрока. Это повысило производительность в 3.5 раза. Почему этого не было раньше? Было в первых двух вервсиях, но с переходом на чанки в 0.2 поломалось. Так же была полностью переработана система управления, благодоря чему она стала отзывчивей и более логичной
4 Исправленые баги
Исправлен баг приводящий к дублированию предметов при выбрасывании, исправлена генерация графа путей, исправлена генерация мира, исправлено слишком большое время ломания цветов, исправлено зависание анимаций.