Unreal Engine 5 и VR с нуля. Часть 5. Начинаем разработку игры Дартс. Получаем права на использование данных Meta. Решаем возникшие проблемы.
Введение
Сегодня расскажу про курс создания игры "Дартс", который начинал еще 2 недели назад, но пришлось откатиться на более базовые курсы. Курс называется "Oculus VR Production for Unreal Engine", он был разработан Oculus и Epic Games. По какой-то причине он был удален с обучающих материалов Unreal Engine.
Есть темы, что люди ищут этот курс, но получают только альтернативу, которая не даст возможность создать полноценную мини-игру:
Приложу обсуждения по проблемам по прохождению этого курса:
Курс рассчитан для Unreal Engine 4.24-4.25, по этому, мне пришлось сначала изучить различие систем управления персонажем между UE4 и UE5, чтобы адаптировать этот курс под Unreal Engine 5.3.2. Если вы будете учиться на Unreal Engine 4, то у вас проблем не возникнет.
Что лучше сделать заранее?
Для начала получите права разработчика, например, по инструкции в этом видео от автора ВИРТУАЛЬНЫЙ СЛОН:
Начинаем прохождение курса "Oculus VR Production for Unreal Engine" или создаем свой Дартс
Курс был перезалит автором RGB на youtube, надеюсь курс не удалят:
Update 02.08.2024 - курс был перезалит на Rutube
Исходные файлы ассетов для курса:
Готовая игра Дартс из курса:
В данный момент (29.06.2024), я прошел 15 видеоуроков из этого плейлиста. Ниже я опишу проблемы, с которыми я столкнулся, некоторые из них я смог решить. Мне пришлось так же мигрировать весь проект в Unreal Engine 5:
- Скачал Unreal Engine 4.25.4
- Запустил проект https://www.unrealengine.com/marketplace/en-US/product/oculus-vr-assets-only в UE4
- Выделил все файлы проекта
- Нажал мигрировать в папку Contents моего основного проекта Дартс Unreal Engine 5
- Открыл свой проект Дартс Unreal Engine 5
Во время открытия проекта UE4 выпадает несколько ошибок, но если на все нажать "ок" то проект всё равно запустится.
1 проблема. Oculus Entitlment Check возвращает failed. (5-е видео из плейлиста) (решено)
Для проверки прав на приложение мы прописываем в конфиге (\путь к вашему проекту\Config\DefaultEngile.ini) наш OculusAppId и RiftAppId
Берем AppId из дашборда разработчика>настройки приложения>API:
[OnlineSubsystem]
DefaultPlatformService=Oculus
[OnlineSubsystemOculus]
bEnabled=true
OculusAppId="12***********67"
RiftAppId="12************67"
Выдайте права вашим приложениям!
Когда вы создаете свои приложения для AppLab и OculusRift. Вам необходимо:
- Верифицировать себя как админа;
- Получить права на UserId и UserProfile в приложении.
Получаем права админа
Переходим в дашборд разработчика oculus. https://developer.oculus.com/manage/
Нажимаем "Начать подтверждение"
Я подтверждал с помощью загран. паспорта РФ и вводил свои настоящие данные. Страну указывал Россия
После заполнения анкеты админа, вы увидите подобное окно:
На следующее утро, я уже получил на почту письмо, что я успешно верифицирован как разработчик.
Получаем права на UserId и UserProfile в приложении.
Вы уже создали два приложения Дартс (AppLab и OculusRift).
В каждом, необходимо зайти в My Apps>Edit Details(приложения)>Requirements>проверка использования данных
В каждом приложении необходимо запросить UserId и UserProfile. Обоснование запроса для этой информации можете списать с моего скриншота. Далее вам необходимо заполнить анкету:
- резидент какой вы страны
- кто будет обрабатывать эти данные (я ввел свою ФИО)
- при каких условиях вы можете передать эти данные (вводим "только на законных основаниях")
Буквально за несколько часов вам одобрят ваш запрос.
Именно после этих шагов, я смог успешно пройти проверку приложения с помощью Verify Entitlement (5-е видео 4:10):
Документация, которая мне помогла решить проверку прав (документация oculus не открывается без VPN):
2 проблема. Max Draw Distance для PointLight не работает. (9-е видео из плейлиста 13:20) (решено)
Я выставляю Max Draw Distance в разные значения в Unreal Engine 5.3.2 делаю ребилд света и при отдалении от лампочки, она не отключается.
По факту, решилось переоткрытием проекта, не знаю что за чудеса случились.
3 проблема. Precomputed Visibility Volume не работает в UE5.3.2 (решено)
В 9-м видео, мы включаем Precomputed Visibility Volume, но в версии UE5.3.2 он не запускается.
Я добавил этот код в файл UE_5.3\Engine\Source\Runtime\Renderer\Private\SceneVisibility.cpp
```
if (ViewState){ SCOPE_CYCLE_COUNTER(STAT_DecompressPrecomputedOcclusion);View.PrecomputedVisibilityData = ViewState->GetPrecomputedVisibilityData(View, &Scene);}else{View.PrecomputedVisibilityData = nullptr;}
```
Источник решения проблемы на форуме unreal engine:
Далее мы вводим в cmd:
r.VisualizeOccludedPrimitives 1
И получаем Предварительно рассчитанный объем видимости:
4 проблема. Появление нескольких персонажей при запуске VR сцены + не работает ввод действий в меню (решено)
Как я описывал в прошлой части статьи, Система управления была изменена на Character, чтобы я использовал своё собственное управление в Unreal Engine 5.
В 8-м уроке видео, мы настраиваем BP_PlayerStart, а так же, настраиваем свой GameMode_Darts, где мы определяем какой игрок находится на карте и определяем ему порядковый номер.
У меня в настройках был указан персонаж VRPawnDarts, а должен быть указан родительский персонаж BPP_Pawn_Darts.
Так расположен мой BP_PlayerStart на карте
Из-за этого у меня появлялось два персонажа
И именно по этой причине у меня перестали работать нажатия на кнопки в меню. Потому что было два экземпляра персонажа.
После того как я прописал Default Pawn Class - "BPP_Pawn_Darts" в настройки Maps & Modes, проблемы решились.
5 проблема. No Guardian found. Check Oculus App (не решено)
В 15-м видео (4:17), мы подключаем функцию Is Guardian Configured.
Но после всех проверок, у меня функция возвращает false.
Я не использую MetaXR Simulator. Я использую Project Settings>MetaXR>XR API > Epic Native OpenXR with Oculus with Oculus vendor extension.
Описание функции:
Как оно должно работать описано тут:
Я пробовал:
- Проверял запускать VR Preview стоя через Oculus Link или через usb кабель.
Обращения других разработчиков об этой проблеме:
Заключение
Если у меня появятся дополнения по описанному в этой статье, то я допишу их с пометкой Update (date).
Следующая статья будет посвящена продолжению прохождения этого курса. До новых встреч!