TerraPath #17
Кратко о содержании сегодняшнего поста:
Объекты больше одного тайла.
Глина и её генерация.
Анимация костра и kiln'а.
Улучшение описание предметов.
В игру были добавлены объекты которые могут занимать больше одной клетки.
Для этого потребовалось серьезно улучшить код самих объектов, а также код чанка.
Первым таким объектом стал Kiln - глиняная печь.
Основная сложность в том что объект можно выступать за пределы чанка и занимать клетки еще не загруженных чанков.
Данную проблему решил я очень просто, когда объект устанавливается идет проверка вышел ли объект за пределы чанка, если да, то мы записываем его в специальный массив.
И когда соседний чанк будет добавлен, он обновит всех своих соседей на выступающие объекты.
Изначально может показаться что нужно будет обновлять 8 соседей при каждом добавлении нового чанка, но их можно сократить до 4, т.к объкты начинаются с нижнего левого угла и тем самым никогда не могут выйти за левую, нижнею и лево-нижнею границу чанка:
Красный это печи, синий это точки привязки объектов.
Зелёный это текущий чанк.
Серый это другие чанки, которые могут занимать объекты из этого чанка, если они больше одной клетки.
Как можно догадаться в такой концепции есть ограничение, объект максимум может быть 16 клеток, но у меня такие не планируются, так что всё нормально.
Глина
В игру была добавлена глина, а также первый контент связанный с ней.
Её генерация происходит так:
Берем наши любимые горы:
Добавляем новый шум с значениями:
octaves = 4;
persistence = 0.95;
И если результат шума ниже < 0.45f и тайл был горой, то тайл становится глиной.
Применяем это к основной карте:
Как по мне получилось очень классно :з
Анимация костра и kiln'а:
В планах есть добавить чтобы огонь плавно менял свое состояние.
Кстати изначально костры и Kiln не горят, их нужно разжечь с помощью разжигателя.
Улучшение описание предметов
1) Вывод статов у инструментов и описание к кирке как ломать пол:
2) Вывод шанса поджога у поджигателя:
3) Является ли данный предмет материалом:
А на этом всё, спасибо, что дочитали.
Также не пропустите прошлые посты:
https://pikabu.ru/profile/GooDCrafter
Ссылка на группу в вк(есть играбельная демка):
А также:
1) Исправил баг с мерцанием глобального освещения, когда весь мир становился на секунду фиолетовым, ошибка была в погрешностях float'а в расчётах времени.
2) Комнады в чате.
Пока в виде возможности менять время в игре.
3) Исправил баг с крашем из-за получения здоровья у несуществующего блока при отрисовке повреждения.
4) Статистика уничтоженных блоков.
5) Инвентарь у объектов (ящики, сундуки и тд).
6) Передача инвентаря объектов по сети.
и многое других мелких исправлений и фиксов.
Я вот думаю стоит ли публиковать какой контент я добавил?
Или же лучше оставить его на исследование вам?
А писать только больше про технические стороны?
PS: Простой домик из первых строительных блоков (ветки + палочки) :з










Не логичнее было бы добавить глину возле воды?