Сегодня мы немного расскажем о технических решениях в City Car Driving 2.0: про используемый движок при создании игры, поговорим о графике, покажем несколько рабочих материалов.
Когда для нас стало понятно, что изначальный движок City Car Driving сильно устарел, мы стали искать новое решение, которое было бы:
- Актуально развивающимся и интересным для специалистов.
- Масштабируемым, которое подошло бы не только для новой игры, но и в дальнейшем можно было использовать для наших тренажёров.
- Оптимизированным под современные компьютеры.
Было проведено сравнительное тестирование четырёх игровых движков. В итоге, наши поиски остановились на Unreal Engine, прежде всего, из-за его гибкости при работе и вариативности инструментария, позволяющего художникам и дизайнерам выполнять многие задачи самостоятельно. Кроме этих причин, несомненным преимуществом UE является его совместимость с нашими внутренними редакторами: ландшафта, трафика, и так далее.
Примерно год назад мы создали пилотный проект на UE4, используемый внутри компании, после чего было принято решение о плавном начале работ над CCD 2.0, в дальнейшем, мы перенесли все свои наработки в UE5.
Начинается все с создания ландшафта. Основная часть ландшафта и дорог создаются специально разработанным нами генератором, не являющимся частью UE. В этом же генераторе задаются основные параметры ИИ городского автомобильного и пешеходного трафика, а также логика их работы. В обязательном порядке к этому прилагается контроль ПДД. Вторичные части ландшафта, не попавшие в генерируемую область, достраиваются художниками как 3D модели. С помощью такого подхода мы можем обеспечить для себя довольно высокую скорость создания реалистичного базового ландшафта локаций с разветвлённой сетью дорог.
На скриншоте показано, как происходит наполнение локации: объекты без текстур и детализации - это blockout (заготовка под объект). Левел-дизайнеры при наполнении локации используют также режим отображения физики локации, отслеживая «дыры» или невидимые стены. После наполнения локации, объекты проверяются на возможность коллизии с машиной игрока.
При наполнении локации используем инструменты собственной разработки, позволяющие автоматизировать расстановку и генерацию некоторых типов объектов. В процессе разработки дизайнеры и художники используют стандартные для индустрии способы оптимизации:
- Levels of Detail (как созданные вручную, так и автоматически сгенерированные)
- Geometry Instancing
- Material instancing
- Комбинирование текстур в атласы, (как ручное комбинирование так и автоматическое при создании групп HLODов)
На всех объектах используются PBR (Physically Based Rendering) материалы с возможностью их гибкой настройки левел-дизайнерами.
Отражения в игре работают на основе свойств PBR материалов (Roughness-metalness). Материалы без шероховатостей (Roughness) имеют ярко выраженную отражательную способность. Сами отражения генерируются по технологии SSR (screenspace reflections).
Для придания большей реалистичности к указанным выше отражениям мы добавили отражения на основе HDR (High Dynamic Range) на автомобиле. В правой части скриншота - изображение, полученное в режиме отображения Reflection Capture. Этот режим демонстрирует просчёт отражений в реальном времени, это основная технология, которая и рисует на текстурах отражения.
В самом начале разработки и на каждом ее этапе, от первого полигона до последнего пикселя, мы были нацелены на максимальную оптимизацию игры. При этом мы стараемся добиться качества графики, соответствующего стандартам индустрии с поправкой на выбранный стиль.
UE позволял для нас выбрать один из двух методов шейдинга - Forward Rendering либо Deferred Rendering. Forward Rendering в некоторых условиях "быстрее", но лишает возможности использования многих эффектов, усложняет просчет и снижает общее качество динамического освещения. Для соблюдения баланса наличия современных графических технологий, скорости работы и возможностей оптимизации финальной картинки при учете использования динамического освещения остановились на Deferred Rendering.
Определившись с типом шейдинга, перешли к базовым настройкам освещения.
Смену времени суток было решено сделать динамической, таким образом будет меняться интенсивность цвета солнца и заполняющего света. Далее при определении наличия динамических источников света (фонарные столбы, светящиеся вывески, интерьеры) были проведены тесты и замеры производительности. Результаты замеров показали, что необходимо комбинировать различные способы освещения - динамическое (от определенных источников света в реальном времени) и статическое (имитация освещенности в рамках текстуры).
Тени в игре реализованы с помощью различных функций UE и запекания теней на уровне моделей. Например вблизи игрока работают "каскадные тени". На правой стороне скриншота - режим обработки теней.
В отдалении каскадные тени исчезают и включаются DistanceField Shadows, гораздо более легкие для компьютера.
В CCD 2.0. будут разные регионы, страны и т.д.?
В раннем доступе, мы планируем выпустить только один регион: южный город около моря, в дальнейшем мы планируем расширять и добавлять игровые локации.
В CCD 2.0. будет имитация повреждений автомобиля, после которого он теряет свой функционал?
Будет, в будущих дневниках мы обязательно расскажем, как мы хотим реализовать этот функционал.
Будут машины из оригинального CCD в 2.0.?
Нет, мы хотим сохранить уникальность продуктов и не будем смешивать транспорт. В CCD 2.0 будут только новые автомобили.
Будет поддержка TrackIR?
Когда проект выйдет в раннем доступе поддержки не будет.
Будет поддержка VR?
Когда проект выйдет в раннем доступе поддержки не будет.
Будет ли расширение социального взаимодействия с аудиторией? Например, дискорд-сервер, для возможности обсуждать игру, или напрямую общаться с разработчиками?
Да, будет. На данный момент, мы подготавливаем дискорд, и как только будем готовы запустить сервер - сразу всем сообщим.
Мы коснулись лишь части используемых технологий. В последующих дневниках мы ещё Вам расскажем о графике.
В следующем выпуске мы расскажем о методической составляющей в игре и покажем упражнения на автодроме. Дневники разработки выходят раз в две недели, где мы детально рассказываем про разработку игры. Не пропускайте!