8bitsage

8bitsage

QA Engineer Unity в gamedev студии. Осваиваю Unreal Engine 5 и делюсь опытом с другими. @this8bitsage
На Пикабу
140 рейтинг 16 подписчиков 1 подписка 17 постов 0 в горячем
4

Unreal Engine 5 и VR с нуля. Часть 12. Передвижение персонажа в VR (locomotion system)

Введение

Видя как передвигается персонаж в таких играх как Blade And Sorcery, BoneWorks, Battle Talent, Contractors, хотелось разобраться, как и какие варианты реализации locomotion system можно реализовать в VR? Видеоуроки направленные конкретно для VR, не раскрывают как подробно реализовать продвинутое передвижение персонажа, какие сложности есть в этом.

Однажды, один пользователь на форуме unreal engine сказал примерно такие слова: "нет разницы VR это или игра от третьего лица или от первого лица, большинство механик реализуются одинаково. Разница лишь в восприятии функционала и небольших особенностях реализации." В целом, я согласен. что так оно и есть, абсолютно все механики можно адаптировать под VR, поэтому я решил адаптировать Locomotion System из проекта Lyra Unreal Engine.

Вероятно, можно просто взять и перенести логику нижней части тела персонажа из проекта Lyra и заставить это работать в VR. Но я не знал как работают анимационные слои, как разделять игровой и анимационный поток в анимационном инстансе. Поэтому я нашел вполне годные уроки.

Так же никто не запрещает взять проект ALS или GameAnimationSample от Unreal Engine (но с нуля там сложно разобраться будет).

Небольшая предыстория в коротком видео: https://www.youtube.com/shorts/phE0y7TSpLE

Уроки по воссозданию Locomotion system из проекта Lyra

Из того что я нашел полезным, могу выделить два плейлиста на ютубе. Всю логику расчетов я переносил в С++.

1. Канал Outcast DevSchool имеет плейлист как с нуля воссоздать передвижение персонажа из Lyra, но он использует свой пак анимаций, который расширяет вариативность движения бедер в разных направлениях.

https://www.youtube.com/playlist?list=PL8-kndpxmv9gBoGznFqJo...

2. Канал Unreal Shinobi имеет похожий плейлист, использует бесплатные анимации из проекта Lyra. Но в нем было излишество для меня, автор тутора использует GamePlayTag для обозначения состояний передвижения игрока, вещь полезная но в моем случае была излишняя.

https://www.youtube.com/playlist?list=PL25BRJmUKoa-UKrMACwoG...

Я смотрел оба плейлиста и взял все подходящее для моего проекта.

Стоит обратить внимание на эти каналы:

LocoDev - имеет интересные туториалы по передвижению https://www.youtube.com/@LocoDev

Quinn Kuslich - Advanced Thumbstick Locomotion Tutorial конкретно на VR примере (хочется перенести отсюда VFX для телепорта) https://www.youtube.com/watch?v=KTPx8PeKyQM&t=2030s&ab_channel=QuinnKuslich

Отличия реализации системы передвижения от туторов для VR

На каждое отличие я записал короткий ролик, перезаписывать видеоуроки и делать копию системы передвижения, когда там не такие большие отличия - смысла нет.

1. Используем направление камеры, а не Actor Location/Rotation. В VR в основном используют направление камеры для движения персонажа вперед. Это значит, что если ты нажал стик бежать вперед, то куда смотрит камера, туда и будем бежать. В VR камера HMD и капсула должны быть синхронизированы 1 к 1 (об этом вы должны позаботиться чтобы не было рассинхронизации). https://www.youtube.com/shorts/l9l_Nl8uBB4

2. При использовании Orientation Warping (коротко о Orientation Warping), учитываем оба случая - Движение на стик и движение физически от камеры. https://www.youtube.com/shorts/tX__fngNLZA

3. При использовании Stride Warping учитываем скорость при движении от стика и скорость получаемую от физического движения HMD (когда ходим по комнате). https://www.youtube.com/shorts/CxPJ3lQ03-w

Stride Warping позволяет динамически изменять длину шага, потому что анимации бега обычно рассчитаны на скорость 400 см/с, а для анимаций шага 200 см/с. Физический же шаг может быть индивидуальным 40-160 см/с. Демонстрация работы Stride Warping при физическом передвижении по комнате: https://www.youtube.com/shorts/Pxmgqdd03No

4. Используем Dead Blending Node, вместо INERTIALIZATION Node. Я столкнулся с проблемой, что при резкой смене анимации, происходил прыжок ошибочной позы в 1 кадр и это отстреливало в IK верхней части тела. Подробнее о проблеме в видео - https://www.youtube.com/shorts/QGK9naoeV0A

Заключение

Надеюсь эта информация тебе поможет построить свою систему передвижения, под потребности проекта.

Телеграм канал Unreal Engine VR
Поддержать канал

Показать полностью
3

Как конвертировать Blueprint в С++ с помощью Node to Code в Unreal Engine

Введение

Изучая VR Expansion Plugin, я столкнулся с тем, что реализация самой Grab System написана в блюпринте персонажа в отдельных функциях, а так как у меня проект на С++ я решил просто переписать этот код на С++. Так как функций около 35 и они довольно объемные по коду, я решил поискать способ как ускорить конвертацию блюпринт кода на С++, поэтому расскажу сегодня про плагин Node to Code.

Где скачать Node to Code?

Сам репозиторий плагина находится здесь https://github.com/protospatial/NodeToCode?tab=readme-ov-file

Плагин поддерживает версии UE 5.3-5.5 скачиваем бинарник для своей версии UE - https://github.com/protospatial/NodeToCode/releases/tag/v1.2.3

Как работает плагин?

Анализ Blueprint: фиксирует всю структуру графа Blueprint, включая потоки выполнения, соединения данных, ссылки на переменные и комментарии.

  • Несколько вариантов LLM: используйте облачные провайдеры (OpenAI, Anthropic Claude, Google Gemini, DeepSeek) или запускайте полностью локально через Ollama для полной конфиденциальности.

  • Эффективная сериализация: преобразует блюпринт чертежи в специальную схему JSON, которая сокращает использование токенов на 60–90 % по сравнению с подробным текстовым форматом чертежей UE.

  • Интегрированный редактор: просматривайте переводы в закрепляемом окне редактора Unreal с подсветкой синтаксиса, примечаниями по реализации и темами

Как пользоваться плагином?

1. Качаем плагин 2. Добываем Api ключ LLM OpenAI, Anthropic Claude, Google Gemini, DeepSeek) 3. Заходим в Project Settings>Plugins>NodeToCode> вставляем Api ключ 4. Настраиваем глубину конвертации блюпринта в С++.

Я использую глубину =1 (это значит переписать то что видно в графе блюпринта и описать функции с параметрами которые вызываются, но без их внутренней реализации).

Плагин ускорил перенос BP в С++, код требует правок, но 80% работы он выполняет отлично.

Краткий обзор от меня в коротком shorts - https://youtube.com/shorts/QJTYkJHtg74?si=5inyYPte2GyveR_Y

Телеграм канал Unreal Engine VR
🤝 Поддержать канал

Показать полностью
5

Unreal Engine 5 и VR с нуля. Часть 11. Естественный спринт в VR: Управление скоростью с помощью махов рук. Arm Swinging спринт

Введение

В феврале, я проходил курс по С++ для Unreal Engine в контексте VR. В это же время я начал параллельно писать основу для VR проекта с нуля, но в какой то момент, понял насколько много вещей нужно учесть и протестировать, прежде чем двигаться дальше.

Я закомментировал весь написанный код и перешел на VR Expansion Plugin. В этом плагине уже решено множество проблем, как синхронизация камеры HMD и капсулы персонажа, поведение капсулы когда ты движешься физически упираешься в стену и так далее. Я до сих пор разбираю код этого плагина. Плагин поддерживает разные версии Unreal Engine. Всё доступно в репозитории бесплатно: https://github.com/mordentral/VRExpansionPlugin

Я полностью перенес код VR Expansion Plugin в свой проект, чтобы в последующем модифицировать его. Так как я базируюсь на коде этого плагина, я не буду описывать туториалы "как с нуля построить VR проект", вроде бы звучит логичным "покажи как перенести код из VR Expansion Plugin и модифицировать его", но у меня столько времени нет.

Статьи будут выходить, в статьях я буду стараться передавать модульный функционал. Показывая пример как его можно применить на простом примере. Так как контекст всех проектов разный, основываясь на моем примере вы можете применить его у себя (нейронки в помощь, грузите ей "свой контекст" и "мой пример", смотрите как можно интегрировать и надо ли оно вам вобще)

А сегодня поговорим про перевод персонажа в спринт с помощью махов рук. Такая механика применяется например в Blade and Sorcery или Battle Talent.

Функции вероятнее всего будут приложены скриншотами, а скопировать код можно будет из https://gist.github.com/8bitsage

Код этой статьи: https://gist.github.com/8bitsage/0e17f196d2114ec7d663e08a29204c5b

Концепция механики Arm Swinging

Идея проста: когда игрок двигается вперед и активно машет руками (как при беге), персонаж автоматически переходит в режим спринта. Это позволяет:

  • Освободить кнопки контроллера для других действий.

  • Сделать передвижение более иммерсивным.

  • Связать физическую активность игрока со скоростью персонажа в игре.

Архитектура решения

Шаг 1: Определение переменных

В заголовочном файле (h файл) класса персонажа (например, AVRPlayerCharacter.h) добавляем необходимые переменные:

// === Настраиваемые параметры ===
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement|ArmSwing",
meta = (ClampMin = "3.0", ClampMax = "15.0"))
float ArmSwingThreshold = 7.0f;
// Порог активации спринта в сантиметрах
// Определяет минимальное суммарное расстояние, которое должны пройти
// оба контроллера за один цикл проверки для активации спринта
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement|ArmSwing",
meta = (ClampMin = "0.01", ClampMax = "0.2"))
float CheckFrequency = 0.02f;
// Частота проверки движения контроллеров в секундах
// Меньшее значение = более отзывчивая механика, но больше нагрузка
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement")
float SprintSpeed = 600.0f;
// Скорость персонажа при спринте (см/с)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement")
float RunSpeed = 400.0f;
// Скорость персонажа при беге (см/с)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement")
float WalkSpeed = 200.0f;
// Скорость персонажа при ходьбе (см/с)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement",
meta = (ClampMin = "0.1", ClampMax = "0.5"))
float MinStickMagnitudeForRun = 0.3f;
// Минимальное отклонение стика для перехода от ходьбы к бегу
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement",
meta = (ClampMin = "0.5", ClampMax = "0.9"))
float MinForwardRatioForSprint = 0.7f;
// Минимальная доля движения вперед для возможности спринта
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement",
meta = (ClampMin = "0.3", ClampMax = "0.7"))
float MaxLateralRatioForSprint = 0.5f;
// Максимальная доля бокового движения для возможности спринта
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement",
meta = (ClampMin = "0.1", ClampMax = "1.0"))
float BackwardSpeedMultiplier = 0.7f;
// Множитель скорости при движении назад
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement",
meta = (ClampMin = "0.1", ClampMax = "1.0"))
float SidewaysSpeedMultiplier = 0.8f;
// Множитель скорости при движении вбок
// === Внутренние переменные ===
FVector LastLeftControllerPos;
// Предыдущая позиция левого контроллера для расчета дельты
FVector LastRightControllerPos;
// Предыдущая позиция правого контроллера для расчета дельты
FTimerHandle ArmSwingTimerHandle;
// Хэндл таймера для периодической проверки движения
bool bIsArmSwinging = false;
// Флаг текущего состояния: true если игрок машет руками достаточно интенсивно
void CheckArmSwing();
void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent);
void MoveCharacter(const FInputActionValue& Value);
void HandleMovementInput(const FVector2D& InputValue);

Логика определения скорости:

  1. Слабое отклонение стика (< MinStickMagnitudeForRun) — всегда ходьба, независимо от махов руками

  2. Сильное отклонение стика (≥ MinStickMagnitudeForRun): Движение вперед (ForwardRatio > MinForwardRatioForSprint и боковое отклонение < MaxLateralRatioForSprint):С махами руками → Спринт Без махов руками → Бег Движение назад или вбок → Только бег (спринт невозможен)

Такой подход предотвращает нереалистичный спринт при движении назад или боком, делая механику более естественной. Все пороговые значения можно настроить в редакторе для точной подгонки под ваш проект.

Ссылки на документацию:

Шаг 2: Реализация детекции махов руками

В файле реализации (AVRPlayerCharacter.cpp) создаем функцию проверки:

Как это работает:

  1. Функция вызывается каждые CheckFrequency секунд (по умолчанию 0.02с = 50 раз в секунду) Настройте для оптимальной производительности.

  2. Измеряется расстояние, пройденное каждым контроллером с последнего вызова

  3. Если суммарное расстояние превышает ArmSwingThreshold, считается что игрок "бежит"

Шаг 3: Инициализация системы

В методе BeginPlay() запускаем периодическую проверку:

Ссылки на документацию:

Шаг 4: Интеграция с Enhanced Input System

Теперь нужно связать механику с системой ввода. Сначала настраиваем привязку action'а:

Затем реализуем функцию обработки ввода:

Шаг 5: Управление скоростью персонажа

Важно понимать! В моем примере применение скорости персонажа в зависимости от направления взгляда камеры. Например, стик отодвинут вперед (мы бежим вперед), повернули голову на 90 градусов, мы по прежнему бежим вперед, только уже в ту сторону, когда повернулась голова.

Иногда делают реализации, когда вектор движения применяется от направления капсулы. Направление "вперед" для ввода с джойстика определяется направлением "вперед" капсулы персонажа (или его тела), а не тем, куда смотрит HMD (голова). Игрок может свободно осматриваться головой, не меняя направления движения. При этом повороты самой капсулы (тела персонажа) обычно управляются отдельно, например, правым стиком (snap turn/smooth turn) или физическим поворотом игрока, если включено bUseControllerRotationYaw для персонажа и соответствующая логика в PlayerController.

Вернемся к моему примеру. Основная логика применения скорости находится в HandleMovementInput:

Ссылки на документацию:

Настройка в редакторе

1. Создание Input Action

  1. Создайте новый Input Action IA_MoveCharacter

  2. Установите Value Type: Axis2D

  3. В Input Mapping Context привяжите к левому стику VR контроллера

  4. Укажите персонажу Input Mapping Context

2. Настройка параметров движения

В Blueprint персонажа или в Details панели вы можете настроить все параметры:Параметры махов руками:

  • Arm Swing Threshold — чувствительность активации спринта (см)

  • Check Frequency — частота проверки движения контроллеров

Скорости движения:

  • Sprint Speed — скорость при спринте

  • Run Speed — скорость при беге

  • Walk Speed — скорость при ходьбе

Пороги направления:

  • Min Stick Magnitude For Run — минимальное отклонение стика для бега

  • Min Forward Ratio For Sprint — доля движения вперед для спринта

  • Max Lateral Ratio For Sprint — максимальная доля бокового движения для спринта

Множители скорости:

  • Backward Speed Multiplier — коэффициент замедления при движении назад (0.7 = 70% от обычной скорости)

  • Sideways Speed Multiplier — коэффициент замедления при движении вбок (0.8 = 80% от обычной скорости)

Демонстрация этой логики на моем проекте:

Rutube: https://rutube.ru/shorts/ced7d33345b2d47e399f9f5f171dcd2e/

Youtube: https://youtube.com/shorts/4NbbaeqUZ7k

Заключение

Эта механика делает передвижение в VR более естественным и погружающим. Игроку не нужно думать о кнопках — достаточно начать активнее двигать руками, как при реальном беге. Демонстрация примера показана упрощенно, модифицируйте код под конкретные нужды проекта, все ключевые параметры доступны для настройки прямо в редакторе.

Телеграм канал Unreal Engine VR

Поддержать канал

Показать полностью 5
1

Power IK Ground — Эффективное решение для реалистичного позиционирования ног

При создании игр и VR-приложений одна из главных задач — это добиться естественного и реалистичного поведения персонажей. Особенно это актуально для игр с полным погружением, где игроки могут свободно передвигаться и взаимодействовать с виртуальным миром. Одной из распространенных проблем при анимации VR-персонажей является корректное размещение стоп персонажа на неровных поверхностях.

Документация всего проекта описана здесь, но изначально плагин существует для Unreal Engine 4.26:

https://www.fab.com/listings/b9d29157-e20b-48f8-a188-37bfd0d...

https://poweranimated.github.io/

Именно здесь на помощь приходит Power IK Ground — простой, но мощный инструмент, созданный специально для решения этой задачи. Power IK Ground — это специализированная нода (Inverse Kinematics), которая автоматически адаптирует положение ног персонажа к любым поверхностям, будь то каменистые тропинки, лестницы, наклонные плоскости или другие неровности.

Преимущества использования Power IK Ground:

  • Реалистичность: Стопы персонажа всегда выглядят естественно, независимо от формы поверхности.

  • Производительность: Power IK оптимизирован и идеально подходит даже для VR-устройств с ограниченными ресурсами, таких как Meta Quest.

  • Удобство: Минимальная настройка и интеграция с уже существующими анимационными системами.

Да, есть решения от Unreal Engine(Control Rig), где ты сам настраиваешь трассировку для правильной работы стопы. Меня зацепило, что автор обещает высокую производительность, а именно это мне нужно для VR проекта, поэтому я решил его использовать.

Недавно я адаптировал плагин Power IK под Unreal Engine 5.5 (за основу взял версию для UE5.2 от другого разработчика https://github.com/tornellihenrique/PowerIK-UE5.2), устранив проблемы компиляции и добавив поддержку сборки проектов под Android (Meta Quest). Также были решены проблемы полями в редакторе для указания костей где настраивается сгибание коленей персонажа.

Power IK теперь доступен в моем репозитории на GitHub, который можно свободно использовать и улучшать:
https://github.com/8bitsage/PowerIK_UE5.5

Как добавить плагин в проект?

1. Скачиваем плагин с бинарниками для Unreal Engine 5.5

2. качаем zip из релизов

3. Вставляем разархивированный плагин в проект, внутри должны быть сразу файлы плагина

4. Запускаете проект и включаете плагин в Plugins. Нода Power IK Ground появится в анимационном блюпринте.

Полезные уроки, которые помогут настроить Power IK Ground:

1. Урок от автора плагина - https://www.youtube.com/watch?v=g1FgBDIA2zA&amp;t=3s&amp;ab_...

2. Настройка Power IK Ground от стороннего разработчика с 3:46 - https://youtu.be/PMSxTCp0kuQ?si=A5EuogPb4dmTZPeh&t=226

Вы можете посмотреть мою короткую демонстрацию работы Power IK Ground по ссылке ниже (да, у меня RU и EN каналы):
https://www.youtube.com/shorts/vWHbCahyuKw
https://www.youtube.com/shorts/6ic3Tr9NI1I

Используйте Power IK Ground, чтобы вывести свой проект на новый уровень реалистичности!

Телеграм канал Unreal Engine VR
Поддержать канал

Показать полностью 4
4

Unreal Engine 5 и VR с нуля. Часть 10. Unreal Engine 5.5.3. Настройка VR проекта на С++ для Meta Quest 2, 3, 3s, PRO

Введение

Давно ничего не писал, изучал базу С++ (до сих пор изучаю), знакомился с апи Unreal Engine, читаю книги и смотрю на реализации других авторов.
В общем всё по плану прошлой статьи. Думаю пора начать Pet-проект, а может и что-то интересное из этого выйдет.

В качестве IDE использую Rider, по-моему на нём куда стабильнее работать чем Visual Studio.

Общими вещами, механиками, я буду делиться в статьях. Чем то уникальным для проекта делиться смысла нет, иначе вроде и смысла тогда в проекте не будет..

Настройка Unreal Engine 5.5

https://dev.epicgames.com/community/learning/tutorials/PYP7/...

Есть видео основанное на документе по настройке UE 5.5
https://www.youtube.com/watch?v=EClbEbNcl4k&list=LL&index=6&ab_channel=MamadouBabaei

Не забываем установить пакеты под целевую платформу Android

Создание проекта

Доля рынка VR всё равно вышел на мобильных проектах, поэтому создавать проект буду на Meta Quest 2, 3, 3s, PRO.

Если что-то получится, можно расшириться на PICO. А еще в след году обещают выпустить мобильную гарнитуру Samsung и Steam.

Поэтому запускаю Unreal Engine 5.5.3 и выбираю:

проект Blank,
C++,
Target Platform: Mobile,
Quality Preset: Maximum

Добавляем плагины MetaXR, MetaXRAudio с сайта:

https://developers.meta.com/horizon/downloads/package/unreal-engine-5-integration/

https://developers.meta.com/horizon/downloads/package/meta-x...

Листай ниже если не хочешь компилировать под UE 5.5MetaXRAudio компилируем под версию Unreal Engine 5.5 (если используете 5.4, то ничего делать не надо) Инструкция по компиляции плагина под движок - https://developers.meta.com/horizon/documentation/unreal/meta-xr-audio-sdk-unreal-req-setup/#repackaing-for-a-different-version-of-unreal-engine

Помещаем их в папку

Добавил папку Android из плагина версии 5.4, без него билд не собирался

Скомпилированные плагины для Unreal Engine 5.5

Можно скачать MetaXR audio скомпилированный мной - https://drive.google.com/drive/folders/1CqixHao8yEvJhiO8BVgK8VKhBeg6Zj4m?usp=sharing

и сразу активируем его.

В папке проекта создаем папку Build (для билдов).

Создаем .gitignore для системы контроля версий (если у вас установлен Git), внутри может быть минимальный набор ограничений для Git:
.idea
.vs
*.sln
DerivedDataCache/
Intermediate/
Saved/
Binaries/
Build/

Настроим Meta XR Audio:

Справочные материалы для Meta Quest и Настройки Rendering для Mobile графики выбранные мной (не тестировал на сложных сценах).

Хочется еще подобрать настройки для ПК версии, но пока нет времени.

Описание всех настроек Rendering в Unreal Engine:

Rendering Settings in the Unreal Engine Project Settings | Unreal Engine 5.5 Documentation | Epic Developer Community

Graphics Optimization for VR Architectural Visualization -

VR Performance Features | Unreal Engine 4.27 Documentation | Epic Developer Community

Developer Insights: How to Develop with Vulkan for Mobile VR Rendering | Meta Horizon OS Developers

PC Rendering Techniques to Avoid when Developing for Mobile VR | Meta Horizon OS Developers

Using the Android Vulkan Mobile Renderer in Unreal Engine | Unreal Engine 5.4 Documentation | Epic Developer Community

[По желанию при отладке уровня] можно добавить в [/Script/Engine.RendererSettings] r.Streaming.PoolSize = 500

такое значение описано как рекомендуемое для Meta Quest (300-500 mb) О пуле потоковой передачи текстур: https://dev.epicgames.com/community/learning/knowledge-base/a3vO/unreal-engine-why-is-my-texture-streaming-pool-giving-me-a-warning

НЕ ИСПОЛЬЗУЙТЕ MOBILE HDR и MOBILE MULTI VIEW вместе! При движении камеры это вызывает ошибки рендеринга. В итоге я отказался от MOBILE HDR. Пример ошибки рендеринга в видео:

рутуб:

Ошибка рендеринга

ютуб:

Дополнительно составил список с описаниями моих настроек на которых успешно собирается билд для apk, возможно будет редактироваться в будущем:

https://8bitsage.gitbook.io/8bitsage-wiki/rendering_for_meta...

Путь - [YourProject]/Config/DefaultEngine.ini

[/Script/Engine.RendererSettings] r.Mobile.ShadingPath = 0 r.Mobile.AllowDeferredShadingOpenGL = False r.Mobile.SupportGPUScene = True r.Mobile.AntiAliasing = 3 r.Mobile.FloatPrecisionMode = 0 r.Mobile.AllowDitheredLODTransition = False r.Mobile.VirtualTextures = False r.DiscardUnusedQuality = True r.AllowOcclusionQueries = False r.MinScreenRadiusForLights = 0.050000 r.MinScreenRadiusForDepthPrepass = 0.050000 r.PrecomputedVisibilityWarning = False r.TextureStreaming = True Compat.UseDXT5NormalMaps = False r.VirtualTextures = False r.VT.EnableAutoImport = False r.VirtualTexturedLightmaps = False r.VT.AnisotropicFiltering = False bEnableVirtualTextureOpacityMask = False bEnableVirtualTexturePostProcessing = False r.VT.TileSize = 128 r.VT.TileBorderSize = 4 r.vt.FeedbackFactor = 16 r.MeshPaintVirtualTexture.TileSize = 32 r.MeshPaintVirtualTexture.TileBorderSize = 2 r.MeshPaintVirtualTexture.UseCompression = False r.StaticMesh.DefaultMeshPaintTextureSupport = False r.MeshPaintVirtualTexture.DefaultTexelsPerVertex = 4 r.MeshPaintVirtualTexture.MaxTextureSize = 4096 r.vt.rvt.EnableBaseColor = True r.vt.rvt.EnableBaseColorRoughness = True r.vt.rvt.EnableBaseColorSpecular = True r.vt.rvt.EnableMask4 = True r.vt.rvt.EnableWorldHeight = True r.vt.rvt.EnableDisplacement = True r.vt.rvt.HighQualityPerPixelHeight = True WorkingColorSpaceChoice = sRGB RedChromaticityCoordinate = (X=0.640000,Y=0.330000) GreenChromaticityCoordinate = (X=0.300000,Y=0.600000) BlueChromaticityCoordinate = (X=0.150000,Y=0.060000) WhiteChromaticityCoordinate = (X=0.312700,Y=0.329000) r.LegacyLuminanceFactors = False r.ClearCoatNormal = False r.DynamicGlobalIlluminationMethod = 0 r.ReflectionMethod = 0 r.ReflectionCaptureResolution = 128 r.ReflectionEnvironmentLightmapMixBasedOnRoughness = True r.Lumen.HardwareRayTracing = False r.Lumen.HardwareRayTracing.LightingMode = 0 r.Lumen.TranslucencyReflections.FrontLayer.EnableForProject = False r.Lumen.TraceMeshSDFs = 1 r.Lumen.ScreenTracingSource = 0 r.Lumen.Reflections.HardwareRayTracing.Translucent.Refraction.EnableForProject = False r.MegaLights.EnableForProject = False r.RayTracing.Shadows = False r.Shadow\.Virtual.Enable = 0 r.RayTracing = False r.RayTracing.UseTextureLod = False r.PathTracing = False r.GenerateMeshDistanceFields = False r.DistanceFields.DefaultVoxelDensity = 0.200000 r.Nanite.ProjectEnabled = False r.AllowStaticLighting = True r.NormalMapsForStaticLighting = True r.ForwardShading = True r.VertexFoggingForOpaque = False r.SeparateTranslucency = False r.TranslucentSortPolicy = 0 TranslucentSortAxis = (X=0.000000,Y=-1.000000,Z=0.000000) r.LocalFogVolume.ApplyOnTranslucent = False xr.VRS.FoveationLevel = 3 xr.VRS.DynamicFoveation = False r.CustomDepth = 1 r.CustomDepthTemporalAAJitter = False r.PostProcessing.PropagateAlpha = False r.Deferred.SupportPrimitiveAlphaHoldout = False r.DefaultFeature.Bloom = True r.DefaultFeature.AmbientOcclusion = False r.DefaultFeature.AmbientOcclusionStaticFraction = False r.DefaultFeature.AutoExposure = False r.DefaultFeature.AutoExposure.Method = 2 r.DefaultFeature.AutoExposure.Bias = 1.000000 r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange = True r.DefaultFeature.LocalExposure.HighlightContrastScale = 0.800000 r.DefaultFeature.LocalExposure.ShadowContrastScale = 0.800000 r.DefaultFeature.MotionBlur = False r.DefaultFeature.LensFlare = False r.AntiAliasingMethod = 0 r.TemporalAA.Upsampling = False r.MSAACount = 4 r.DefaultFeature.LightUnits = 1 r.DefaultBackBufferPixelFormat = 4 r.ScreenPercentage.Default = 100.000000 r.ScreenPercentage.Default.Desktop.Mode = 1 r.ScreenPercentage.Default.Mobile.Mode = 0 r.ScreenPercentage.Default.VR.Mode = 0 r.ScreenPercentage.Default.PathTracer.Mode = 0 r.Shadow\.UnbuiltPreviewInGame = False r.StencilForLODDither = False r.EarlyZPass = 3 r.EarlyZPassOnlyMaterialMasking = False r.Shadow\.CSMCaching = True r.DBuffer = False r.ClearSceneMethod = 1 r.VelocityOutputPass = 0 r.Velocity.EnableVertexDeformation = 2 r.SelectiveBasePassOutputs = False bDefaultParticleCutouts = False fx.GPUSimulationTextureSizeX = 1024 fx.GPUSimulationTextureSizeY = 1024 r.AllowGlobalClipPlane = False r.GBufferFormat = 1 r.MorphTarget.Mode = True r.MorphTarget.MaxBlendWeight = 5.000000 r.SupportSkyAtmosphere = True r.SupportSkyAtmosphereAffectsHeightFog = True r.SupportExpFogMatchesVolumetricFog = False r.SupportLocalFogVolumes = True r.SupportCloudShadowOnForwardLitTranslucent = False r.LightFunctionAtlas.Format = 0 r.VolumetricFog.LightFunction = False r.Deferred.UsesLightFunctionAtlas = False r.SingleLayerWater.UsesLightFunctionAtlas = False r.Translucent.UsesLightFunctionAtlas = False r.Translucent.UsesIESProfiles = False r.Translucent.UsesRectLights = False r.GPUCrashDebugging = False vr.InstancedStereo = True r.MobileHDR = False vr.MobileMultiView = True r.Mobile.UseHWsRGBEncoding = True vr.RoundRobinOcclusion = False r.MeshStreaming = False r.HeterogeneousVolumes = False r.HeterogeneousVolumes.Shadows = False r.Translucency.HeterogeneousVolumes = False r.WireframeCullThreshold = 5.000000 r.SupportStationarySkylight = True r.SupportLowQualityLightmaps = True r.SupportPointLightWholeSceneShadows = True r.Shadow\.TranslucentPerObject.ProjectEnabled = False r.Water.SingleLayerWater.SupportCloudShadow = False r.Substrate = False r.Substrate.OpaqueMaterialRoughRefraction = True r.Refraction.Blur = True r.Substrate.Debug.AdvancedVisualizationShaders = False r.Material.RoughDiffuse = False r.Material.EnergyConservation = False r.Material.DefaultAutoMaterialUsage = True r.OIT.SortedPixels = False r.HairStrands.LODMode = False r.SkinCache.CompileShaders = True r.VRS.Support = True r.SkinCache.SkipCompilingGPUSkinVF = False r.SkinCache.DefaultBehavior = 1 r.SkinCache.SceneMemoryLimitInMB = 128.000000 r.Mobile.EnableStaticAndCSMShadowReceivers = False r.Mobile.EnableMovableLightCSMShaderCulling = True r.Mobile.Forward.EnableLocalLights = 1 r.Mobile.Forward.EnableClusteredReflections = False r.Mobile.AllowDistanceFieldShadows = False r.Mobile.EnableMovableSpotlightsShadow = False r.GPUSkin.Support16BitBoneIndex = False r.GPUSkin.Limit2BoneInfluences = False r.SupportDepthOnlyIndexBuffers = False r.SupportReversedIndexBuffers = False r.Mobile.AmbientOcclusion = False r.Mobile.DBuffer = False r.GPUSkin.UnlimitedBoneInfluences = False r.GPUSkin.AlwaysUseDeformerForUnlimitedBoneInfluences = False r.GPUSkin.UnlimitedBoneInfluencesThreshold = 8 DefaultBoneInfluenceLimit = (Default=0,PerPlatform=()) MaxSkinBones = (Default=65536,PerPlatform=(("Mobile", 256))) r.Mobile.PlanarReflectionMode = 0 r.Mobile.ScreenSpaceReflections = False r.Mobile.SupportsGen4TAA = False bStreamSkeletalMeshLODs = (Default=False,PerPlatform=()) bDiscardSkeletalMeshOptionalLODs = (Default=False,PerPlatform=()) VisualizeCalibrationColorMaterialPath = /Engine/EngineMaterials/PPM\_DefaultCalibrationColor.PPM\_DefaultCalibrationColor VisualizeCalibrationCustomMaterialPath = None VisualizeCalibrationGrayscaleMaterialPath = /Engine/EngineMaterials/PPM\_DefaultCalibrationGrayscale.PPM\_DefaultCalibrationGrayscale r.AllowGlobalClipPlane = False

Прописываем Описание проекта в настройках, чтобы эта запись была внутри каждого .h файла. Она будет уникальна для Вашего проекта.

С такими настройками мне успешно удалось собрать apk для Meta Quest и запустить его на шлеме.

Телеграм канал Unreal Engine VR

Поддержать канал

Показать полностью 8 2
2

Как получить зарубежную карту VISA в Кыргызстане в 2025 году?

Введение

Ранее было популярно открывать дебетовые карты в Казахстане, но с января 2025 года банки урезают такую возможность без наличия прописки, а то и вовсе открывают счета всего на 1 год.Пока гайки закручиваются, решил я открыть карту в Кыргызстане.Без регистрационного талона, возможно открыть только в двух банках:- Бакай Банк- Банк «Бай-Tушум»В принципе открыть можно за 3 дня, но пишут что у кого-то на 5 дней растягивалось. Я приезжал на 6 дней.

Бюджет на поездку:

1. самолет из МСК > Кыргызстан(Бишкек) > МСК - 30000 руб

2. Жилье 6 ночей в отеле - 25000 руб (бронируй и оплачивай через OZON путешествия)

3. Еда в день на человека 1500 руб.

4. Такси, примерно 4000 руб на всё время пребывания.Итого: 66000 руб

Алгоритм получения:

СИМКА:

1. Оформляешь симку оператора MEGA в аэропорту у выхода на РФ паспорт.2. Для того чтобы симка не отлетела через месяц. Регаешь IMEI телефона в которой будешь использовать симку на сайте https://www.imei.kg

Оплатить регистрацию IMEI можно через кого то у кого есть MEGAPay, Balance или деньги О! ЛИБО в офлайн точке imei.kg (я так делал по адресу: проспект Чуй, 204, Бишкек Берекет-Гранд, точка регистрации IMEI находится на лестнице в проходе на втором этаже)

Всё, оплатили, зарегали, симка останется на всегда, если будешь отправлять смс раз в 90-180 дней (точно мне никто не сказал)

КАРТЫ VISA GOLD:

БАКАЙ БАНК

Головной офис: Кыргызская Республика г. Бишкек, ул. Тыныстанова 166

Документы:

- Паспорт РФ

- Паспорт Загран

- Посадочный талон самолета

Открываешь счет на РФ номер.+ просишь открыть счет в сомах прикрепленный к долларовому счету.

Обслуживание и срочный выпуск карты обошелся в $32 (рубли сразу поменяют на баксы в счет оплаты комиссий и обслуживания)Получишь карту в течении 2х дней.

Пополняешь через сбер или Т-банк переводом по номеру телефона в Кыргызстан(либо по номеру карты).

2. Банк «Бай-Tушум»

Адрес: Уметалиева, 76

Документы:

- Паспорт РФ

- Паспорт Загран

- Посадочный талон самолета

-Российский ИНН

Открываешь сразу VISA GOLD и Карту Элкарт (для пополнения из РФ) ТУТ ОТКРЫВАЮТ ТОЛЬКО НА КЫРГЫЗСКИЙ НОМЕР ТЕЛЕФОНА

Открытие Visa обошлось в $10

Открытие Элкарт обошлось в 200 сом

Просите открывать мобильный банк чтобы управлять счетами дистанционно.

Получишь карты через 2 дня.

О! Деньги:

Любой отдел на яндекс картах. Тут можно верифицировать себя как нерезидента без наличия регистрационного талона. Они позволяют открывать ВИРТУАЛЬНЫЕ карты VISA (KZT, USD, EUR, KGS)

Но тут уже не знаю, пройдет она где то или нет в зарубежных сервисах.

По поводу регистрационного талона (он нужен для других банков, я себе не делал). Я пытался его сделать через отель, но у отеля не было ЕНИ-кода (код на имущество недвижимости).

В целом суть такая:

- Просишь ходатайство на то что ты проживаешь по адресу с ДАТЫ по ДАТУ. Там пишут твой паспорт и печать организации где живешь. Обязательно ЕНИ-код должен быть.

- Если получилось это оформить, едешь в ЦОН района, где тебя временно указали в ходатайстве. Встаешь в очередь и там тебе дают регистрационный талон. С регистрационным талоном можно открывать счета в других банках типа: Finca bank, Demir и другие. Но мне этого не надо.

Получив карты, регаешь эти иностранные счета в личном кабинете налоговой.

❗️Если соберетесь что-то делать по моему опыту, переспросите в чатах банков, не изменились ли условия выдачи карт.

https://t.me/unrealengine_vr

Показать полностью
4

Unreal Engine 5 и VR с нуля. Часть 9. Основы С++. С++ vs Blueprint. Курс по Level Design

Что нового за последнее время и что делать дальше?

После успешного завершения мини игры Darts VR, нужно разобраться, что делать дальше и в каком порядке. Но в целом, у меня сформировался план развития, чтобы в итоге приблизиться к VR демо.

Ссылки пришлось вставить в текст, потому что ссылки на плейлисты ютуба не дает вставить.

  • Мне нужен С++ чтобы в будущем работать в команде. Изменения в блюпринтах не показываются в коммитах git.

  • Мне нужно научиться применять С++ в Unreal Engine , особенно для проектов VR.

  • Мне нужно больше знаний о Level Design, а еще лучше, для игр от первого лица.

План дальнейшего обучения.

Основы C++

Для изучения синтаксиса я выбрал эти плейлисты. Где-то информация одинаковая, но где то свои особенные задания или лайфхаки применения языка.

Курс - 1

Курс - 2

Курс - 3

Базовое программирование на примере создания игры для Windows по референсу DOS игры.

Курс

Level Design Master Class: All in One Complete Course

https://rutube.ru/plst/502826/

С++ и блюпринты в Unreal Engine 5

Курс

Создание проекта на С++ для Unreal Engine 5

Курс

Создание VR проекта в Unreal Engine C++ и Blueprint

(Курс я еще не выложил но обязательно вставлю сюда ссылку)

Пет проект С++

Для практики С++ я уже придумал себе задачу написать скрипт, который будет сравнивать данные из csv и json. Это мне нужно для работы.

Если всё получится, прикреплю сюда ссылку на проект в github (Вставлю ссылку сюда).

Заключение

Надеюсь после прохождения этих курсов, я смогу двинуться по VR дальше и это уже будет более понятной мне областью. Информацию по VR, я так же коплю и выкладываю в телеграм канале.

Телеграм канал Unreal Engine VR

Показать полностью
2

Unreal Engine 5 и VR с нуля. Часть 8. PreAlpha Darts. Assets Redirectors. Выбор Preview Platform. Oculus MRC. PSO Caching

Введение

Эта статья будет посвящена завершению прохождения курса "Oculus VR Production for Unreal Engine". В этой статье я расскажу, какие проблемы я встретил при прохождении курса, и как я решал эти проблемы.

Так же я завершил проходить курс по блюпринтам, благодаря ему, я стал лучше понимать как работать с блюпринтами.

Выбор Preview Platform. Android Vulkan Mobile

Из-за ограничений платформ на которые мы разрабатываем продукт, визуальное отображение будет меняться.

Для того чтобы видеть, как игра будет выглядеть в шлеме Meta Quest, необходимо включить превью Android Vulkan Mobile:

Settings>Preview Platform>Android Vulkan Mobile

После компиляции шейдеров, появится иконка Андроид слева от запуска сцены. Таким образом, можно будет переключать Preview Platform.

Проблема 1. Не собирался билд Android (Решено)

В уроке 38 мы делаем пробный билд игры. У меня билд не собирался, из-за ошибок редиректа.

Изучив проблему, я понял, что копируя и перенося некоторые блюпринты и объекты, создавались файлы ссылок на старое местонахождение этих объектов. Избавляться от них, надо с помощью Fix Up Redirectors.

Документация о Redirectors:

https://dev.epicgames.com/documentation/en-us/unreal-engine/...

Гайд по применению Fix Up Redirectors:

После фикса редиректов, сборка проекта успешно была завершена.

Проблема 2. Не запускается игра с плагином Online Subsystem Oculus (Решено)

Необходимо отключить Online Subsystem Oculus, так как вместо него используются плагин Meta XR.

После смены плагина на Meta XR, необходимо заменить функцию проверки собственности на игру.

Проблема 3. Крашится игра в Android Vulkan Mobile (Решено)

При запуске игры на Meta Quest 3, падает такой лог:

Так же падает Unreal Engine при запуске игры в режиме Android Vulkan Mobile (получается, предтестовый запуск Vulkan Mobile можно делать локально, Он будет соответствовать запуску на VR шлеме)

LoginId:615e6279457b63b6d363f1b7360a3162 EpicAccountId:680cd586d6834a7ab5167e3ae83ba308 Assertion failed: !ScreenTexture.Texture->Desc.IsTextureArray() [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Renderer\Private\ScreenPass.cpp] [Line: 83] UnrealEditor_Renderer!AddMobilePostProcessingPasses()

Я создал новый шаблон VR в UE5.3.2, настроил его так же как мой проект и тестовый шаблон запускается исправно. Вероятно, что-то присутствует в проекте, что его ломает.

Решение проблемы: я удалил все строчки настроек под [/Script/Engine.RendererSettings]

Редактор открыл проект со стандартными настройками и игра успешно запустилась в режиме Android Vulkan Mobile:

Было замечено, что включение "Game Discards Unused Material Quality Levels" вызывает краш Vulkan Mobile:

Прикрепляю, что удалил из настроек, я не знаю какая настройка крашила мобильный запуск.

[/Script/Engine.RendererSettings]
r.Mobile.DisableVertexFog=True
r.Mobile.AllowDitheredLODTransition=False
r.Mobile.AllowSoftwareOcclusion=False
r.Mobile.VirtualTextures=False
r.DiscardUnusedQuality=True
r.AllowOcclusionQueries=False
r.MinScreenRadiusForLights=0.030000
r.MinScreenRadiusForDepthPrepass=0.030000
r.MinScreenRadiusForCSMDepth=0.010000
r.PrecomputedVisibilityWarning=False
r.TextureStreaming=True
Compat.UseDXT5NormalMaps=False
r.VirtualTextures=False
r.VirtualTexturedLightmaps=True
r.VT.TileSize=128
r.VT.TileBorderSize=4
r.vt.FeedbackFactor=16
r.VT.EnableCompressZlib=True
r.VT.EnableCompressCrunch=False
r.ClearCoatNormal=False
r.ReflectionCaptureResolution=64
r.ReflectionEnvironmentLightmapMixBasedOnRoughness=True
r.ForwardShading=True
r.VertexFoggingForOpaque=True
r.AllowStaticLighting=True
r.NormalMapsForStaticLighting=False
r.GenerateMeshDistanceFields=False
r.DistanceFieldBuild.EightBit=False
r.GenerateLandscapeGIData=False
r.DistanceFieldBuild.Compress=False
r.TessellationAdaptivePixelsPerTriangle=48.000000
r.SeparateTranslucency=False
r.TranslucentSortPolicy=0
TranslucentSortAxis=(X=0.000000,Y=-1.000000,Z=0.000000)
r.CustomDepth=1
r.CustomDepthTemporalAAJitter=True
r.PostProcessing.PropagateAlpha=0
r.DefaultFeature.Bloom=False
r.DefaultFeature.AmbientOcclusion=False
r.DefaultFeature.AmbientOcclusionStaticFraction=False
r.DefaultFeature.AutoExposure=False
r.DefaultFeature.AutoExposure.Method=0
r.DefaultFeature.AutoExposure.Bias=1.000000
r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=True
r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=True
r.EyeAdaptation.EditorOnly=False
r.DefaultFeature.LocalExposure.HighlightContrastScale=0.8
r.DefaultFeature.LocalExposure.HighlightContrastScale=1.0
r.DefaultFeature.LocalExposure.ShadowContrastScale=0.8
r.DefaultFeature.LocalExposure.ShadowContrastScale=1.0
r.DefaultFeature.MotionBlur=False
r.DefaultFeature.LensFlare=False
r.TemporalAA.Upsampling=False
r.SSGI.Enable=False
r.AntiAliasingMethod=3
r.DefaultFeature.LightUnits=1
r.DefaultBackBufferPixelFormat=4
r.Shadow.UnbuiltPreviewInGame=True
r.StencilForLODDither=False
r.EarlyZPass=3
r.EarlyZPassOnlyMaterialMasking=False
r.DBuffer=True
r.ClearSceneMethod=1
r.VelocityOutputPass=0
r.Velocity.EnableVertexDeformation=0
r.SelectiveBasePassOutputs=False
bDefaultParticleCutouts=False
fx.GPUSimulationTextureSizeX=1024
fx.GPUSimulationTextureSizeY=1024
r.AllowGlobalClipPlane=False
r.GBufferFormat=1
r.MorphTarget.Mode=True
r.GPUCrashDebugging=False
vr.InstancedStereo=True
r.MobileHDR=False
vr.MobileMultiView=True
r.Mobile.UseHWsRGBEncoding=True
vr.RoundRobinOcclusion=True
vr.ODSCapture=False
r.MeshStreaming=False
r.WireframeCullThreshold=5.000000
r.RayTracing=False
r.RayTracing.UseTextureLod=False
r.SupportStationarySkylight=False
r.SupportLowQualityLightmaps=True
r.SupportPointLightWholeSceneShadows=False
r.SupportAtmosphericFog=True
r.SupportSkyAtmosphere=False
r.SupportSkyAtmosphereAffectsHeightFog=False
r.SkinCache.CompileShaders=False
r.SkinCache.DefaultBehavior=1
r.SkinCache.SceneMemoryLimitInMB=128.000000
r.Mobile.EnableStaticAndCSMShadowReceivers=True
r.Mobile.EnableMovableLightCSMShaderCulling=True
r.Mobile.AllowDistanceFieldShadows=False
r.Mobile.AllowMovableDirectionalLights=True
r.MobileNumDynamicPointLights=4
r.MobileDynamicPointLightsUseStaticBranch=True
r.Mobile.EnableMovableSpotlights=False
r.Mobile.EnableMovableSpotlightsShadow=True
r.GPUSkin.Support16BitBoneIndex=False
r.GPUSkin.Limit2BoneInfluences=False
r.SupportDepthOnlyIndexBuffers=True
r.SupportReversedIndexBuffers=True
r.LightPropagationVolume=False
r.Mobile.AmbientOcclusion=False
r.GPUSkin.UnyINLm2fBWMABoneInfluences=False
r.GPUSkin.UnyINLm2fBWMABoneInfluencesThreshold=8
r.Mobile.PlanarReflectionMode=0
bStreamSkeletalMeshLODs=(Default=False,PerPlatform=())
bDiscardSkeletalMeshOptionalLODs=(Default=False,PerPlatform=())
VisualizeCalibrationColorMaterialPath=None
VisualizeCalibrationCustomMaterialPath=None
VisualizeCalibrationGrayscaleMaterialPath=None
r.Mobile.AntiAliasing=3
r.Mobile.FloatPrecisionMode=0
r.OpenGL.ForceDXC=0
r.DynamicGlobalIlluminationMethod=1
r.ReflectionMethod=1
r.Shadow.Virtual.Enable=1
r.Nanite.ProjectEnabled=False
bEnableVirtualTextureOpacityMask=True
r.VT.AnisotropicFiltering=True
r.Mobile.EnableNoPrecomputedLightingCSMShader=False
r.Mobile.SupportsGen4TAA=False
xr.VRS.FoveationLevel=0

Проблема 4. Плагин Oculus Spatializer (Oculus Audio) устарел, необходимо заменить на Meta XR Audio. (Решено)

В уроке 39, мы знакомимся с Пространственным звуком, тут тоже не обошлось без проблем.

Плагин Oculus Spatializer (Oculus Audio) Был заменен на Meta XR Audio. Об этом говорится в документации Meta: https://developer.oculus.com/documentation/unreal/audio-osp-ue/

Необходимо скачать плагин Meta XR Audio:

https://developer.oculus.com/downloads/package/meta-xr-audio...

Инструкция Перепаковки Плагина Meta XR Audio для другой версии Unreal Engine:

https://developer.oculus.com/documentation/unreal/meta-xr-au...

На момент написания статьи (05.08.2024), я скачивал 67 версию плагина. 67 версия предназначена для версии 5.4 (я использую 5.3.2)

В моем случае команда перепаковки в cmd выглядела так:

D:\Unreal_Engine\UE_5.3\Engine\Build\BatchFiles\RunUAT.bat BuildPlugin -plugin="C:\Users\userPC\Downloads\MetaXRAudio\MetaXRAudio.uplugin" -package="C:\temp\MetaXRAudio"

Далее необходимо скопировать metaxraudio64.dll из загруженного плагина v67 в скомпилированный плагин под нашу версию Unreal Engine. Иначе Unreal не сможет запуститься.

Устранение предупреждения:
LogAudio: Warning: Failed to load MetaXR Reverb Submix from object path '' in MetaXRSettings. Creating 'MetaXR Reverb Submix' as stub.

После установки плагина, это поле имеет пустое значение, задайте Submix из списка.

Доп. инфо: подробный материал о плагинах звука и документации я выложу отдельной статьей - Meta XR Audio и MetaSounds в Unreal Engine 5 & VR

Проблема 5. Нет звука в импортированных ассетах звуков. (Решено)

В каждом импортированном звукоке, необходимо проставить Sound Class

Так же для эффекта Пространственного аудио, необходимо задать настройку, настройку мы создаем сами, после добавления плагина Meta XR audio.

Если эффект не указывать, то аудио будет проигрываться в стерео режиме.

Проблема 6. Ошибка MOBILE PROJECTS SUPPORTING STATIC LIGHT MUST HAVE LQ LIGHTMAPS ENABLED (Решено)

<!--noindex--><a href="https://pikabu.ru/story/unreal_engine_5_i_vr_s_nulya_chast_8_prealpha_darts_assets_redirectors_vyibor_preview_platform_oculus_mrc_pso_caching_11706635?u=https%3A%2F%2Fforums.unrealengine.com%2Ft%2Fmobile-projects-supporting-static-lighting-must-have-lq-lightmaps-enabled-ue4%2F251152&t=https%3A%2F%2Fforums.unrealengine.com%2Ft%2Fmobile-projects-supporting...&h=08859ba42cc24a491eb6af37cb3b1d9abe996bd2" title="https://forums.unrealengine.com/t/mobile-projects-supporting-static-lighting-must-have-lq-lightmaps-..." target="_blank" rel="nofollow noopener">https://forums.unrealengine.com/t/mobile-projects-supporting...</a><!--/noindex-->

https://forums.unrealengine.com/t/mobile-projects-supporting...

Для устранения этой ошибки, необходимо включить эту настройку в 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'

Из-за отсутствия знаний c++, я пропущу сетевую часть в курсе.

Проблема 9. Урок 48. Oculus MRC. Отличие настройки на Unreal Engine 5 (Решено)

В документации Meta сказано, что Mixed Reality Capture Overview Уже интегрирован в Unreal Engine 5.

Документация Mixed Reality Capture (MRC):

https://dev.epicgames.com/documentation/en-us/unreal-engine/...

https://dev.epicgames.com/documentation/en-us/unreal-engine/...

https://dev.epicgames.com/documentation/en-us/unreal-engine/...

Поддерживаемые видеоустройства для захвата смешанной реальности:

https://dev.epicgames.com/documentation/en-us/unreal-engine/...

Проблема 10. Урок 51. Стандартный профилировщик был переименован в Unreal Insights (Unreal Engine 5) (Решено)

В уроке 51 нам показывают стандартный профилировщик Unreal Engine 4, но в Unreal engine 5 он теперь называется Unreal Insights.

Документация:

https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-insights-in-unreal-engine?application_version=5.3

VR Profiling Tools:

https://dev.epicgames.com/documentation/en-us/unreal-engine/...

Презентация возможностей 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 отличается.

Документация:

https://dev.epicgames.com/documentation/en-us/unreal-engine/...

Пример команды 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 успешно добавлены в билд.

Проблема 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 (Не решено)

Документация:

https://developer.oculus.com/documentation/unreal/ps-entitlement-check/

https://developer.oculus.com/documentation/unreal/ps-setup/#...

https://developer.oculus.com/resources/publish-data-use/

https://developer.oculus.com/documentation/unity/ps-deep-lin...

Я сделал всё согласно документации, но что-то не заработало(награду мне не присвоили после прохождения игры).

Я оставлю эти ссылки здесь, чтобы однажды вернуться к этой проблеме. Но в данный момент это не самая большая проблема и моей первой платформой для 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.

Показать полностью 21 4
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества