Unreal Engine 5 и VR с нуля. Часть 8. PreAlpha Darts. Assets Redirectors. Выбор Preview Platform. Oculus MRC. PSO Caching.
Проблема 5. Нет звука в импортированных ассетах звуков. (Решено)
В каждом импортированном звукоке, необходимо проставить Sound Class
Так же для эффекта Пространственного аудио, необходимо задать настройку, настройку мы создаем сами, после добавления плагина Meta XR audio.
Если эффект не указывать, то аудио будет проигрываться в стерео режиме.
Проблема 6. Ошибка MOBILE PROJECTS SUPPORTING STATIC LIGHT MUST HAVE LQ LIGHTMAPS ENABLED (Решено)
Для устранения этой ошибки, необходимо включить эту настройку в Project Settings>Engine>Rendering>Support low quality lightmap shader permutatuins
Проблема 7. Устранение Warning о не поддерживании проектом XR функций. (Решено)
Warning появляются при открытии проекта и при сборке билда. Дартс является VR проектом и XR функции ему не нужны.
Для устранения этих предупреждений, необходимо отключить два плагина и убрать упоминания их в проекте по этому видео:
Проблема 8. Урок 46. Код С++ предоставленный в курсе не походит для Unreal Engine 5 из-за замены на Meta XR SDK (Не решено)
Пояснение: если вы проходите курс на Unreal Engine 4.25, у вас таких проблем не будет.
В уроке 46 нам предлагают добавить предоставленные курсом файлы в наш проект, но я получаю ошибки компиляции с++.
Я заметил в коде, что используется OVR_Platform.h, но по моему, я его не используют после перехода на Meta XR SDK.
Так же предоставленный код не компилируется в Visual Studio.
Получаю такие ошибки:
------ Building 5 action(s) started ------ 3>[1/5] Compile [x64] OculusOSS.gen.cpp 3>D:\UEProjects\OculusDarts\Source\OculusDarts\OculusOSS.h(15): error C2079: 'AOculusOSS' uses undefined class 'DARTS_API' 3>D:\UEProjects\OculusDarts\Source\OculusDarts\OculusOSS.h(15): error C2143: syntax error: missing ';' before ':' 3>D:\UEProjects\OculusDarts\Source\OculusDarts\OculusOSS.h(15): error C2059: syntax error: 'public' 3>D:\UEProjects\OculusDarts\Source\OculusDarts\OculusOSS.h(16): error C2143: syntax error: missing ';' before '{' 3>D:\UEProjects\OculusDarts\Source\OculusDarts\OculusOSS.h(16): error C2447: '{': missing function header (old-style formal list?) 3>D:\UEProjects\OculusDarts\Intermediate\Build\Win64\UnrealEditor\Inc\OculusDarts\UHT\OculusOSS.gen.cpp(17): error C2027: use of undefined type 'AOculusOSS' 3>D:\UEProjects\OculusDarts\Intermediate\Build\Win64\UnrealEditor\Inc\OculusDarts\UHT\OculusOSS.generated.h(82): note: see declaration of 'AOculusOSS' 3>D:\UEProjects\OculusDarts\Intermediate\Build\Win64\UnrealEditor\Inc\OculusDarts\UHT\OculusOSS.gen.cpp(22): error C2065: 'ThisClass': undeclared identifier 3>D:\UEProjects\OculusDarts\Intermediate\Build\Win64\UnrealEditor\Inc\OculusDarts\UHT\OculusOSS.gen.cpp(22): error C2059: syntax error: ')' 3>D:\UEProjects\OculusDarts\Intermediate\Build\Win64\UnrealEditor\Inc\OculusDarts\UHT\OculusOSS.gen.cpp(25): error C2027: use of undefined type 'AOculusOSS' 3>D:\UEProjects\OculusDarts\Intermediate\Build\Win64\UnrealEditor\Inc\OculusDarts\UHT\OculusOSS.generated.h(82): note: see declaration of 'AOculusOSS' 3>D:\UEProjects\OculusDarts\Intermediate\Build\Win64\UnrealEditor\Inc\OculusDarts\UHT\OculusOSS.gen.cpp(30): error C2065: 'ThisClass': undeclared identifier 3>D:\UEProjects\OculusDarts\Intermediate\Build\Win64\UnrealEditor\Inc\OculusDarts\UHT\OculusOSS.gen.cpp(30): error C2059: syntax error: ')' 3>D:\UEProjects\OculusDarts\Intermediate\Build\Win64\UnrealEditor\Inc\OculusDarts\UHT\OculusOSS.gen.cpp(33): error C2027: use of undefined type 'AOculusOSS' 3>D:\UEProjects\OculusDarts\Intermediate\Build\Win64\UnrealEditor\Inc\OculusDarts\UHT\OculusOSS.generated.h(82): note: see declaration of 'AOculusOSS'
chatGPT объясняет ошибки так:
Из-за отсутствия знаний c++, я пропущу сетевую часть в курсе.
Проблема 9. Урок 48. Oculus MRC. Отличие настройки на Unreal Engine 5 (Решено)
В документации Meta сказано, что Mixed Reality Capture Overview Уже интегрирован в Unreal Engine 5.
Документация Mixed Reality Capture (MRC):
Поддерживаемые видеоустройства для захвата смешанной реальности:
Проблема 10. Урок 51. Стандартный профилировщик был переименован в Unreal Insights (Unreal Engine 5) (Решено)
В уроке 51 нам показывают стандартный профилировщик Unreal Engine 4, но в Unreal engine 5 он теперь называется Unreal Insights.
Документация:
VR Profiling Tools:
Презентация возможностей Unreal Insights от Unreal Engine:
Проблема 11. Урок 51. Renderdoc 1.34-1.33 крашится, если Unreal Engine использует D3D12 (на dx11, vulkan всё нормально работает) (Решено)
В уроке мы пробуем обсчитать время вызовов Draw Call в сцене. На dx12 приложение крашится.
Решение: установить renderdoc 1.32 - https://renderdoc.org/builds
Со мной связалась поддержка Renderdoc, не знаю что он имел ввиду, но dx12 у меня установлен последней версии
Проблема 12. Warning: Asset has been saved with empty engine version (Решено)
Для устранения этих ворнингов:
1. найдите эти ассеты в проекте
2. Что-то поменяйте в нем (двинуть ноду в блюпринте)
3. Пересохраните ассет
Итог: Ворнинг пропадет.
Проблема 13. Урок 38. Создание объединенного кэша PSO немного отличается от Unreal Engine 4. (Решено)
В уроке 38, мы знакомимся с Системой кэширования PSO, но в Unreal Engine 5 сбор кэша PSO отличается.
Документация:
Пример команды cmd для сбора кэша PSO:
"D:\Unreal_Engine\UE_5.3\Engine\Binaries\Win64\UnrealEditor-Cmd.exe" D:\UEProjects\OculusDarts\OculusDarts.uproject -run=ShaderPipelineCacheTools expand D:/PSOCaching/*.rec.upipelinecache D:/PSOCaching/*.shk D:/PSOCaching/CL11122333_OculusDarts_SF_VULKAN_ES31_ANDROID.spc
Далее создайте папку PipelineCaches по такому пути: D:\UEProjects\OculusDarts\Build\Android_ASTC\PipelineCaches
Собранные в ручную PSO успешно добавлены в билд.
Немного более подробной информации о PSO Cache:
https://dev.epicgames.com/community/learning/tutorials/Pdo7/unreal-engine-5-android-pso-caching
Проблема 14. Keystore file is missing. Check the DistributionSettings section in the Android tab of Project Settings (Решено)
Для публикации Shiping APK билда в Alpha канал, необходимо сгенерировать Keystore.
Сделать можно по этому гайду:
Но для сработало по другому:
1. Зашел от имени администратора в cmd
2. Вошел в папку java cd "C:\Program Files\Java\jdk-17\bin" (зависит от вашей версии)
3. Ввел команду: keytool -genkey -v -keystore TecDevStudio.keystore -alias TecDevStudio -keyalg RSA -keysize 2048 -validity 10000
4. Сгенерированный ключ создался в папке: "C:\Program Files\Java\jdk-17\bin", скопировал его и вставил в папку проекта: "D:\UEProjects\OculusDarts\Build\Android"
5. Добавил ключ в настройках проекта:
6. Собрать Shiping Build
Проблема 14. Entitlement Check и Ачивки не сработали после выкладывания Alpha Build (Не решено)
Документация:
Я сделал всё согласно документации, но что-то не заработало(награду мне не присвоили после прохождения игры).
Я оставлю эти ссылки здесь, чтобы однажды вернуться к этой проблеме. Но в данный момент это не самая большая проблема и моей первой платформой для PC VR приложения будет Steam VR.
Выкладываем билд в Alpha Channel
Документация публикации билдов: https://developer.oculus.com/resources/publish/ https://developer.oculus.com/resources/publish-upload-overview/
Для того чтобы выложить билд, необходимо использовать Meta Quest Developer Hub.
App Distibution> выбор вашего приложения>выбираем канал загрузки билда (я загружал альфа билд)
После успешной загрузки, откройте этот канал для других пользователей:
1. Выберите канал куда загрузили приложение
2. сформируйте URL для приглашения в канал других юзеров (ссылка живет 90 дней)
3. Примените автоматическое подтверждение доступа в канал
4. Сохраните настройки канала
5. Поделитесь ссылкой с друзьями и даже собой
6. После этого увидите приложение у себя в библиотеке
7. Скачиваем и играем
Заключение
Курс "Oculus VR Production for Unreal Engine" и курс по блюпринтам, это отличное введение в VR для новичка, которые определенно нужно проходить вместе.
Далее, я планирую начать курс по C++ и если получится, начать изучать создание окружения и локаций в Unreal Engine.