Как я решил делать рогалик на Unity. Часть 4
Продолжаю рассказывать о том, как я делаю рогалик на Unity.
В этот раз речь пойдет о погоде в игре. Она условно разделена на глобальную и локальную.
Глобальная погода обновляется 24 раза за игровой день, который длиться соответственно 24 минуты. Примерно вот так выглядит глобальная карта с погодой:
Каждый квадратик это отдельная локация. У каждой локации есть свои параметры вроде давления, температуры и облачности. Также, есть и побочные вроде силы ветра (красные стрелочки), которая определяется от разности давлений, особенностей ландшафта и т.д.
Чтобы погода менялась с течением времени есть фронты (зелёные стрелочки) и циклоны. Фронты меняют температуру и образуют дожди. А циклоны создают зоны с повышенным/пониженным давлением.
Вот как это работает в динамике:
Под локальной погодой я понимаю такие вещи как смену дня и ночи, различные погодные эффекты.
Одной из самых сложных вещей было написание шейдера для неба. В него входят такие штуки как мерцающее звёздное небо меняющееся в течение ночи и игрового года, перемещающаяся луна, плавно затягивающие небо "статические" облака. Статические - потому что у них одна единственная кубамапа.
Вот так проходит в игре ночь:
Помимо "статических" облаков есть и динамические через систему частиц:
И как следствие облаков, эффект дождя:
На этом пока что всё. В дальнейшем буду работать над улучшением внешнего вида поверхности. Если что, то в группе вк выкладываю новости гораздо чаще и более детально. А также, там можно скачать технодемку и в живую глянуть на погоду.
https://vk.com/voidside_game
И бонус в комментариях