Створюємо найпростішу VR-демку з Unreal Engine



По мірі того, як віртуальна реальність стає мейнстрімом, все більше розробників ігор виявляють бажання створювати новий контент для пристроїв на зразок HTC Vive і Oculus Rift. З доступних движків особливо виділяються два: Unreal Engine and Unity3D. У цій статті ми розглянемо процес розробки маленької демки на основі Unreal Engine. Ми робимо рівень, за яким можна буде вільно переміщатися, а також брати або знищувати об'єкти.

Що таке Unreal Engine?
Це ігровий двигун, створений у компанії Epic Games 1998. Спочатку він використовувався для створення шутера Unreal, і з тих пір на базі движка був створений цілий ряд великих і складних ігор (у тому числі Unreal Tournament, Bioshock, Mortal Kombat X і багато інших). Unreal Engine надає програмістам два набори інструментів: традиційний C++ і систему візуального скриптинга Blueprints, що дозволяє швидко розробити ігрову логіку.

Підтримка VR з'явилася з четвертої версії, в 2012 році. Перше підтримуване пристрій — Oculus Rift DK1. Сьогодні движок працює з усіма основними пристроями.

До березня 2015 року розробникам потрібно було купувати ліцензію, але потім движок став безкоштовним. Єдина умова — якщо прибуток від гри, створеної на Unreal Engine, перевищить $3000, потрібно відраховувати 5% роялті.

Альтернатива
В якості альтернативи, для створення VR-ігор можна використовувати движок Unity3D. Він більш молодий і спочатку загострювався під мобільні ігри, хоча і 2D-функціональність в ньому дуже розвинена. А завдяки своїй популярності та гнучкості, движок активно використовується для створення десктопних ігри і VR-контенту. Створювати ігри в Unity3D можна за допомогою C#, JavaScript або Boo. Як у випадку з Unreal, движок безкоштовний.

Для цієї статті я вибрав Unreal Engine, щоб показати процес створення десктопної гри, яка буде працювати на найбільш просунутих VR-пристроях. Також цей движок дозволяє дуже швидко робити прототипи.

Чому варто розробляти VR-продукти?
В останні роки VR-технології досягли нових рівнів занурення. Так що користувачі будуть проявляти більший інтерес до VR-ігор, ніж до 3D і 2D. І раз у нас з'явилася можливість створювати новий вражаючий контент, то треба зробити логічний крок і зайнятися цим.

З точки зору розробника, VR ставить ряд нових завдань, пов'язаних із взаємодією і управлінням різними елементами гри. Сюди входить оповідання, звукове оформлення, пересування і багато іншого. Враховуючи, що майбутні ігри будуть створюватися з розрахунком на VR, у нас вже є шанс змінити світ ігор і розваг.

Вибір пристрою
Я вибрав HTC Vive, тому що:

  • Ми створюємо демку для десктопів (це автоматично виключає з розгляду мобільні пристрої на кшталт Samsung Gear VR, Google Daydream і так далі).
  • HTC Vive дозволяє використовувати roomscale (Oculus Rift теж скоро обзаведеться такою можливістю).
  • HTC Vive вже має два контролера переміщення (Oculus Rift Touch потрібно купувати окремо)
Оскільки ми хочемо використовувати контролери для взаємодії з об'єктами, вибір HTC Vive очевидний.

Налаштування VR
Беремо очки HTC Vive, потужний комп'ютер і проходимо з чек-листом:

  1. Перевірити, що все правильно підключено. Інструкція.
  2. Встановити Steam і SteamVR.
  3. Перевірити, щоб були оновлені прошивки на окулярах і всіх контролерах домену.
  4. Запустити «Room setup» і «Tutorial» для налаштування roomscale. Перевірити, що все працює коректно.
  5. Завантажити та встановити Unreal Engine (версія 4.13.2).
Тепер можна приступати до дем'янкові.

Реалізація демки
Перед початком розробки потрібно озброїтися знаннями про те, як працювати з Blueprint'ами. Ми по кроках розберемо процес створення нового проекту, налаштування рівня і створення простий ігровий логіки, щоб можна було вказати на об'єкт, натиснути на спуск і знищити його.

Запускаємо Unreal Engine і переходимо на закладку New project. У розділі Blueprint вибираємо Virtual Reality. У настроюваннях проекту (Project setup) вибираємо Desktop/console, Maximum Quality (максимальна якість) and No starter content (без початкових даних), а в Location (розташування) прописуємо шлях до файлів проекту.



Переходимо в меню плагінів, і підтверджуємо Virtual Reality, що у нас включений плагін «SteamVR».





У браузері даних (content browser) переходимо в папку VirtualRealityBP/maps і відкриваємо «MotionControllerMap».



Перед нами з'явиться заздалегідь згенерований рівень, який можна використовувати. Тут ми можемо застосовувати різні дії. Наприклад, хапати об'єкти та переміщувати гравця за рівнем. Поекспериментуйте, щоб переконатися, що все працює правильно. Тепер давайте запровадимо логіку знищення об'єкта, коли ми наводить на нього і натискаємо на спуск.

Для цього в VirtualRealityBP/Blueprints відкриємо Blueprint «MotionControllerPawn».



Викличемо подія «MotionController ® Trigger» для правої руки і задамо логічне значення (true/false) для натискання і відпускання кнопки спуску:



Для події Tick створимо лінію прицілювання (linetrace), щоб знати, на який об'єкт ми наводить. Для цього потрібно задати початкову і кінцеву точки. Для початкової точки ми пов'язуємо Right Controller, Motion Controller і отримуємо GetWorldLocation.

Також з Motion Controller пов'язуємо Get Forward Vector. Таким чином ми будемо отримувати напрямок прицілювання контролером. Множимо цей вектор на необхідну дистанцію (скажімо, на 1000 = 10 метрів) і додаємо до початкового розташування, тим самим отримавши кінцеву точку.

Додаємо модуль LineTraceByChannel, з'єднуємо початкову та кінцеву точки, у вкладці Draw Debug Type вибираємо One Frame. Цей параметр означає малювання лінії між початковою і кінцевою точками.



Далі переходимо до вихідним даним Break Hit Result, Hit Actor робимо перехід to Cast BP_PickupCube. Це означає, що на рівні ми можемо вибирати тільки сині куби.

Тепер кидаємо гілку і перевіряємо логічне значення для раніше створеного Can Destroy. Якщо воно дорівнює false, то ми нічого не робимо. Якщо true, то викликаємо модуль DestroyActor для знищення вибраного об'єкта.



Готове. Можна натиснути кнопку Play, вибрати VRpreview і випробувати своє творіння.

Заключне слово
Як бачите, все просто. Движок пропонує нам заготовки контенту, які сильно полегшують новачкам перші кроки. Більш того, Unreal дозволяє нам дистанціюватися від устаткування (наприклад, нам не потрібно думати про відстеження пристроїв або про те, як рендери зображення в окулярах). Це дозволяє зосередитися на самому контенті.

З мого досвіду, Blueprint'и — прекрасний спосіб створення ігрової механіки в кілька кліків. На основі створеної нами демки ви можете легко розібратися в процесі VR-розробки на движку Unreal, освоюючи все більш складні схеми та ігрові активності. Прийшов час створювати майбутнє віртуальної реальності.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.