Как я делаю эффекты для зимы в Norland

Этого даже в бете нет, так что вид не финальный

С момента довольно успешного релиза Norland прошло уже почти полтора года и все это время мы не сидели сложа руки. Мы выпустили 45 обновлений - в среднем каждые 2 недели выходит патч с довольно большим количеством изменений.

Помимо изменения механик и добавления новых геймплейных фич случались и довольно радикальные изменения в графическом плане, например в 31 патче мы перешли от двухмерного ландшафта к трехмерному. Также мы перерисовали часть зданий и активно рисуем новые. Однако сегодня речь будет не об этом. Всякие подробности подобного рода я оставлю на постмортем к версии 1.0, которая когда-нибудь да выйдет.

* * *

В бескрайних лесах, долинах и болотах Норланда с момента релиза царит вечное лето и это проблема, которую когда-нибудь нужно было решить. Понятно, что смена сезонов - это более комплексная фича, нежели просто визуальный эффект, но начнем мы именно с эффекта.

Покрытие ландшафта снегом осуществляется процедурным текстурированием через шейдер. Сейчас, для простоты, сначала рисуется обычный летний ландшафт, а поверх него рисуется его копия с зимним шейдером. Там, где в зимнем шейдере прозрачно, игрок видит зеленую траву, где непрозрачно - снег.

В шейдере с помощью текстуры шума Перлина сделано постепенное покрытие карты снегом, причем чем выше находится вершина ландшафта в мировом пространстве, тем раньше начнет появляться в этой точке снег (чтобы сымитировать распространение снега, начинающееся с гор).

В остальном этот шейдер мало отличается от шейдера нашей травы - просто для материалов используются другие цвета - белые и серые оттенки для основной текстуры поверхности, более бледные цвета у скал и песка и т.п.

Вторая важная часть зимы - это различные снегопады или метели. Технически это реализуется с помощью нескольких полигонов, растянутых на всю карту, каждый из которых отображает зацикленную текстуру с летящим снегом в нужном направлении. Также сделан параллакс эффект - каждый слой летящего снега рисуется в разном масштабе и с разной скоростью движения

Меняя текстуру и параметры шейдера (скорость и направление движения, количество слоев, сила параллакса), можно добиться разнообразных погодных эффектов - как легкий снегопад, предвещающий начало зимы, так и злую январскую вьюгу.

Забавно, но изначально этот эффект был построен на основе тумана - я просто заменил в нем текстуру шума на текстуру снежинок, прибавил скорость и поместил полигоны выше всей поверхности карты, чтобы они не пересекали ландшафт. Потом, как понял, что идея перспективная, добавил параллакс и другие настройки.

Вот так выглядел туман, который я сделал в апреле 2025 года. Реализацию подсмотрел у Graveyard Keeper

У меня уже есть идеи сделать на основе этого же эффекта так называемые God rays - солнечные лучи, пробивающиеся сквозь облака. Я уже прикинул, сделал черновой вариант, получается прикольно.

Таким же образом можно делать дождь, пылевые бури. Я думаю, что в некоторых биомах у нас будут уникальные погодные явления, так что будет где применить фантазию.

Мои предыдущие статьи на DTF о особенностях технической реализации эффектов в Norland

22
1
14 комментариев