Опытом симуляции дождливой погоды в автосимуляторе с App2Top поделился Алексей Мисулев, ведущий программист по рендеру на проекте CarX Street (CarX Technologies).
Алексей Мисулев
Система динамической погоды была одной из тех идей, которые появились еще на этапе проектирования CarX Street. Однако ее реализация долгое время откладывалась: в приоритете находились базовые игровые механики и другие системы, без которых невозможно было построить фундамент игры.
Когда мы наконец приступили к работе, стало понятно, что речь идет не о добавлении дождя как отдельного эффекта. Мы создавали полноценную систему динамической погоды, способную менять восприятие игрового мира и делать знакомые маршруты совершенно разными в зависимости от условий и времени суток.
С самого начала мы поставили перед собой две задачи: создать качественные погодные эффекты без заметного влияния на производительность и заложить основу для дальнейшего развития системы, чтобы в будущем можно было добавлять новые погодные явления.
На ранних этапах мы изучали решения из других гоночных игр, однако довольно быстро поняли, что этого недостаточно. Чтобы добиться убедительного результата, мы начали внимательно наблюдать за тем, как дождь меняет окружающий мир в реальных условиях: днем и ночью, при разном освещении и интенсивности осадков.
Мы изучали поведение воды на различных поверхностях, особенности отражений и то, как меняется восприятие окружения во время движения автомобиля.
Эти наблюдения помогли нам определить общее направление развития системы и лучше понять, какие детали действительно влияют на ощущение дождливой погоды в игре.
Референсы
Первый рабочий прототип появился достаточно быстро, но почти сразу стало понятно, что результат нас не устраивает.
Отдельные элементы уже работали: дождь шел, лужи появлялись, отражения выглядели убедительно. Однако возникала другая проблема — город выглядел «мокрым», но не дождливым.
Именно поиск правильной атмосферы стал главным вызовом всей разработки.
Ощущение погоды создается не каким-то одним эффектом. На восприятие сцены одновременно влияют освещение, облачность, отражения, звук, состояние поверхностей и десятки других деталей. Пока хотя бы один из этих элементов выбивался из общей картины, результат казался искусственным.
Дополнительную сложность создавало время суток. Один и тот же дождь днем и ночью воспринимается совершенно по-разному. Днем внимание сосредоточено на самих осадках и изменении освещения, а ночью на первый план выходят отражения от фар, неона, витрин и уличных фонарей. Поэтому погодную систему приходилось постоянно оценивать в разных условиях.
Ранний прототип
Одной из самых сложных частей разработки стали капли дождя на линзе камеры.
Мы не хотели ограничиваться простым анимированным эффектом. Было важно добиться естественного поведения капель с учетом их размера, скорости движения, растекания и влияния скорости автомобиля.
Эта система прошла более пяти крупных итераций. Сначала нас не устраивало само поведение капель, затем возникли проблемы с их движением на высокой скорости. Внутри команды постоянно возникали споры о том, каким должен быть итоговый результат.
Мы стремились найти баланс между зрелищностью эффекта и естественностью поведения капель. Для этого несколько раз выезжали на автомобиле под дождем, записывали видео и изучали, как вода ведет себя на стеклянных поверхностях на разных скоростях.
Эти наблюдения не давали готовых решений, но помогли лучше понять характер движения капель воды и стали основой для многих доработок системы.
В финальной версии капли не только стали выглядеть и двигаться естественнее, но и постепенно высыхают после окончания дождя и возвращения солнечной погоды.
Параллельно развивались и другие элементы погодной системы: облака, освещение, отражения, рябь на лужах, брызги из-под колес и звуковое сопровождение.
Одним из самых эффективных решений неожиданно оказались обычные лужи. Их реализация потребовала сравнительно небольших затрат, однако именно они заметно усилили ощущение влажности окружения и помогли сделать сцены более живыми и убедительными.
Система погоды построена вокруг плавных переходов между состояниями. Игрок не видит мгновенной смены условий. Погода постепенно проходит цикл от солнечной к пасмурной, а затем к дождливой.
Вместе с этим меняется и окружающий мир. По мере усиления дождя возрастает интенсивность брызг из-под колес, увеличивается количество ряби на воде, меняется освещение и общее настроение сцены. Когда дождь заканчивается, эти процессы постепенно идут в обратную сторону.
Во время разработки нам пришлось отказаться от нескольких запланированных решений. Например, в релизную версию не вошли капли на стеклах автомобилей. На тот момент качество реализации нас не устраивало, поэтому мы решили доработать этот элемент отдельно.
Также была отложена полноценная система анимации капель на автомобилях. Для ее реализации потребовалась бы дополнительная подготовка материалов и переработка части автопарка.
При этом именно автомобиль помог нам понять, чего не хватало всей системе.
В какой-то момент мы добавили капли на различные материалы кузова и практически сразу увидели разницу. До этого дождь существовал как будто отдельно от автомобиля. После появления взаимодействия с машиной вся сцена начала восприниматься значительно цельнее. Это был один из тех моментов, когда стало понятно, что мы движемся в правильном направлении.
Автомобиль до и после появления капель
Без учета этапа подготовки концептов и сбора референсов разработка системы заняла более трех месяцев.
Основным техническим вызовом стали отражения. Во время дождя количество мокрых поверхностей в мире резко увеличивается, а вместе с этим растет и нагрузка на систему рендеринга. Особенно важно было сохранить стабильную производительность на консолях.
Для этого пришлось пересматривать множество параметров рендеринга и искать компромиссы между качеством изображения и производительностью. В том числе оптимизировать работу отражений и дальность прорисовки отдельных элементов сцены.
После релиза одним из самых приятных сюрпризов для нас стала реакция игроков. Мы ожидали, что основное внимание будет приковано к самой погодной системе, однако многие отдельно отмечали атмосферу и звуковое сопровождение. Особенно часто положительные отзывы касались поездок по ночному городу во время дождя.
Для нас это стало подтверждением того, что основные усилия были направлены в правильную сторону.
Главный вывод, который мы сделали в ходе работы, довольно прост: игрок воспринимает не отдельные эффекты, а состояние мира в целом. Именно поэтому создание системы динамической погоды оказалось гораздо сложнее, чем простое добавление дождя в качестве визуального эффекта.
Разработчикам, которые планируют реализовать подобную систему в своем проекте, мы бы рекомендовали учитывать погодные особенности еще на этапе создания автомобилей, материалов и базовых технологий. Чем раньше такие системы закладываются в основу проекта, тем проще их развивать, оптимизировать и расширять в будущем.
А для нас эта работа стала очередным напоминанием о том, что самые запоминающиеся игровые моменты часто рождаются из множества мелких деталей. Именно из них складывается атмосфера, благодаря которой обычная поездка по городу может превратиться в отдельное воспоминание.
Трейлер, посвященный дождю в игре, можно посмотреть тут: https://www.youtube.com/watch?v=MApuCmrfYSs









Комментарии
Ответить