Блог

Спокойное путешествие на лодке сквозь «облачную реку» в Unity — как это сделано



В survival-adventure Freud’s Nightmare вы блуждаете по царству снов и, например, ведёте лодку по реке из облаков, встречая на пути цветы-лотосы. Опыт намеренно медитативный и умиротворяющий, но под капотом — серьёзная техничка.

Инди-разработчик MagicReality собрал сцену в Unity и визуализировал облака методом ray marching. Взаимодействие лодки с «облачной водой» реализовано через interaction map: сверху сцену снимает топ-даун-камера, по этому рендеру формируется карта влияния, которая подаётся в Compute Shader для обновления маски облаков. Во время ray marching плотность облаков локально повышается или понижается в соответствии с маской — так «река» реагирует на движение корпуса и расходящиеся «волны».

Лотосы — не просто декор, а вторая система интерактивности. Для каждого растения заданы две виртуальные точки — у основания и на верхушке. Когда игрок входит в новый сектор, все такие точки в нём собираются в Compute Buffer и отправляются в Compute Shader. Там положение верхней точки корректируется по карте взаимодействия, а при финальном рендере сами растения получают vertex displacement на основе смещения этих точек относительно стартовых позиций. Подход сложнее классического, но даёт более детальные эффекты касаний и отлично масштабируется по производительности.

По сути, Freud’s Nightmare — история заблудшей души, которой нужно вернуться домой. Вы собираете ресурсы, укрепляете персонажа, чтобы противостоять кошмарам, и по крупицам складываете правду, пока шкала рассудка не опустела. Релиз намечен на декабрь или январь — можно добавить проект в вишлист Steam, чтобы одним из первых увидеть точную дату.

Комментарии (2)

Интересно реализована физика растений. Видно, что это не просто шейдер покачивания — лотосы реально “уступают” лодке, и сцена не разваливается по кадрам.
Люблю, когда Unity используют по-умному: Compute шейдеры, маски, чанки — и при этом FPS стабильный. Хочется полноценной версии с такими же аккуратными находками.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.