Как мы используем интерфейсы в Verse?
Привет, DTF! o7
С вами рубрика "графомания программиста".
Сегодня говорим о пользовательских интерфейсах в нашем космосиме. Я попытаюсь очень кратко рассказать как команда реализует интерактивность и взаимодействие с различными панелями и затрону некоторые технические сложности на этом пути.
Предыдущие статьи смотрите у меня в блоге.
Интерфейсы в Verse.
Главной особенностью нашего подхода является принцип максимально возможного отказа от screen space UI. Это когда он рисуется поверх рендера камеры и всегда находится в плоскости экрана, независимо от игрового окружения. Вместо этого мы стараемся применять только world space UI, физически вписывая интерфейсы в пространство вокруг игрока. Любая панель, окошечко инвентаря, карта, информация о персонаже, корабле и т.п., обладают своей 3D-моделью, а не просто состоят из набора спрайтов на камере.
Причина такого подхода заключается в нашем желании создать более иммерсивный игровой опыт. Игрок напрямую визуально ощущает предметы с которыми взаимодействует, их объём и масштаб. Мы считаем, что это придаёт больше значимости игровому окружению и усиливает эффект погружения. Особенно, если речь заходит о VR.
Для большей убедительности, команда наших художников основывалась на объектах реального мира, которые возможно встретить в нашей повседневной жизни. Чаще всего мы отказывались от традиционных для sci-fi голограмм или других вариаций висящих в воздухе элементов интерфейсов. Вместо них, предпочтение отдаётся LED-панелям, такие, как сейчас принято устанавливать в крупных торговых центрах и выставочных залах.
Взаимодействие
Читатели предыдущих моих постов возможно уже поняли, что речь идёт в основном о First Person геймплее. Большую часть времени игрок взаимодействие с окружением от первого лица. Здесь мы сохранили привычную и понятную схему - навёл прицельчик, нажал клавишу клавиатуры/геймпада, получил некий эффект от взаимодействия. С объектами типа "кнопка" всё просто, они запускают некий сценарий. Сложные интерфейсы с множеством элементов, как например выбор корабля и варианты действий с ним, требуют другой подход.
Так как команда хотела организовать поддержку различных типов ввода (клава/мышь, геймпады, флайстики, HOTAS контроллеры и даже VR), от нас потребовалось создание удобной и универсальной модели навигации в интерфейсах. Поэтому мы остановились на кнопочном переключении элементов в UI, как вы это делаете держа в руках геймпад и нажимая стрелочки, чтобы выбрать нужный раздел. Навигация мышью остаётся опциональной вещью, но не приоритетной.
Проблемы разработки.
Главное отличие из-за которого разработчики всё ещё выбирают screen space при создании интерфейсов в подобных проектах, это простота. Вам не нужно тратить время и думать о том как разместить его в окружении. Не нужно создавать дополнительные модели. Не нужно разрабатывать новые способы и скрипты взаимодействия. Не придётся бороться с особенностями рендеринга и пост-эффектами. Это ускоряет разработку и делает UI более понятным/предсказуемым. Нужно просто включить отображение элемента поверх камеры и дать в него тыкать.
Создание world space UI несёт в себе все вышеперечисленные сложности. Поэтому для дизайнеров и техартистов это гораздо более ресурсоёмкая задача. Кроме того, все эти элементы будут постоянно находиться в мире, а не появляться в нём только по требованию. Нам потребовалось довольно много времени, чтобы уместить в бесшовный мир планируемые элементы так, чтобы они не создавали лишних вызовов без необходимости.
Единственные элементы в Verse, которые мы всё-таки решили оставить на камере, это основной HUD игрока, где отображается ХП персонажа и навигационные элементы для объектов с которыми возможно взаимодействовать, а так же меню настроек игры. В первом случае, потому что эти элементы не являются объектами физического мира, а скорее транслируют в зрительное поле ощущения персонажа. Во-втором, если что-то сломается в 3D-пространстве, screen space UI в любом случае будет работать правильно.
Вот такими невероятными манёврами мы в Synthes Games сами себе создаём проблемы. Как всегда - вопросы, пожелания, предложения можно оставлять в комментариях. Или по ссылкам ниже. Fly Safe! o7
Discord: discord.gg/SdCPPkqRgM
Сайт: verseproject.online