Розробка мобільного VR з Oculus і Gear VR


Цей дуже довгий пост присвячено розробці мобільної VR (untethered VR), а також деяких питань дизайну і проблем, яких потрібно побоюватися в процесі розробки, а також оптимізації продуктивності, тестування та публікації в магазині Oculus. Але перш ніж почати, давайте подумаємо, навіщо взагалі потрібна така розробка.

В даний час існують два основних напрямки VR-розробки — tethered і untethered, тобто на основі комп'ютерів і на основі мобільних пристроїв. Прив'язаний до комп'ютера tethered VR використовує потужні графічні карти настільних комп'ютерів для створення картинки в таких висококласних VR-пристроях, як Oculus Rift і HTC Vive. Для мобільного untethered VR використовують мобільний пристрій користувача, вставлене в VR-пристрій з пластмаси, картону або піноматеріалу; при цьому використовуються обчислювальні ресурси тільки користувача пристрою, характеристики якого можуть змінюватися у широкому діапазоні.

Роздуми про мобільного VR
На сьогоднішній день мобільний VR — це найдешевший для споживачів спосіб поринути у віртуальну реальність; для неї існує безліч підтримуваних мобільних пристроїв і очок з низькою ціною. Незважаючи на деякі проблеми (їх ми розглянемо нижче) сучасні та майбутні моделі мобільних пристроїв досить потужні, щоб забезпечувати переконливі відчуття від VR, комфортні для більшості користувачів (до пристойних 60 Гц на Samsung Gear VR). Продано понад 5 мільйонів очок Google Cardboard, а Samsung заявляє про мільйон користувачів в екосистемі Gear VR.

Асортимент очок дуже широкий від дешевих Google Cardboard v2 (часто безкоштовно роздають на різних заходах) і більш міцних пластмасових варіацій, а також версій з піноматеріалу, таких як Merge VR, до Samsung Gear VR і цілого моря інших варіантів підключаються до мобільних пристроїв очок, які будуть випущені в найближчим часом. Великий вибір пристроїв і варіацій — це добре, але для розробки VR в ідеалі потрібен точний набір вивчених апаратних обмежень і можливостей, щоб забезпечити кінцевому користувачеві надійний, плавний і зручний ігровий процес. Тому ми сконцентруємося на кращих на сьогоднішній день в своєму класі пристроях: Samsung Gear VR і Google Daydream VR (буде випущено ближче до кінця 2016 року, але розробку можна починати вже зараз, вивчіть попередній пост от тут).

Завдяки низькій вартості входу для кінцевих користувачів і споживачів ринок мобільного VR стрімко зростає, щомісяця з'являються сотні нових додатків. У 2016 році завдяки випуску Oculus Rift і HTC Viveо, а також швидкого початку продажів Sony PlayStation VR про доступність віртуальної реальності нарешті стало відомо широкому споживачеві; VR з'являється на багатьох публічних заходах і шоу.

Незважаючи на те, що Cardboard підтримується тільки на Android (iOS з ним взаємно несумісна), розробники можуть зручно публікувати свої програми в Play Store; там ми вже бачимо купу дешевих, неякісних VR-додатків, які не забезпечують ніякого задоволення від ігрового процесу. Тому Інтернет-магазини додатків Gear VR і Daydream (після його випуску) будуть здійснювати контроль якості.

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

Обмеження
У мобільного VR є свої обмеження, які необхідно врахувати, перш ніж вибирати підтримувану платформу. По-перше, як зрозуміло з назви, контент мобільного VR надається мобільними пристроями, а не потужними комп'ютерами. Хоча нові пристрої і володіють набагато більшими обчислювальними ресурсами, однак все одно існують обмеження глибини і складності сцени, рендерящейся в 3D (якщо ви виберете йти цим шляхом). Звичайно ж, це не означає, що пристрої абсолютно неефективні: щоб згенерована в 3D сцена була переконливою для користувачів, від неї не вимагається фотореалістичності. Генеруються на мобільних пристроях низкополигональные світи досить цікаві і ефективні в VR, при цьому вони забезпечують високу продуктивність.

Ще один аспект полягає в тому, що незважаючи на незалежність від комп'ютера і надання користувачеві свободи пересування без кабелів, поки неможливо відстежувати переміщення очок у просторі: неважливо, як рухається користувач, положення камери оновлюється тільки у трьох напрямах. Це означає, що безліч відчуттів повного VR, одержуваних при tethered VR (присідання, наближення до персонажів з будь-якого кута, вільне переміщення в межах кімнати), недоступні для мобільного VR. Однак ведуться розробки обладнання, яке повинно рано чи пізно вирішити цю проблему.

Отже, у мобільного VR менша обчислювальна потужність і там неможливо відстежувати положення голови; зрозуміло, чому в ньому переважають і добре підтримуються додатки панорамного перегляду фотографій і відео. Однак у них відсутні які-небудь способи реальної взаємодії, користувач може тільки дивитися на що-то, тому деякі не вважають це правильним VR. Інші вважають, що завдяки удосконаленням мобільного VR і зростання обчислювальної потужності розробникам слід націлюватися на повну, високоякісну VR, тому що розрив буде тільки звужуватися, і якщо сьогодні ви розробляєте програми для мобільного VR, вони скоро застаріють протягом декількох місяців або років у зв'язку з швидким розвитком обладнання.

Підготовка до розробки
Публікувати програми в Google Play Store простіше, і це відмінне місце для початку освоєння, якщо вас влаштовує випуск безкоштовного контенту, але я в основному зосереджуся на розробці для магазину з контролем якості контенту, пропонованого Oculus для Samsung Gear VR; всі рекомендації будуть також справедливі для екосистеми очок Google Daydream VR, випуск яких відбудеться в цьому році.

Середовище розробки, SDK, і як стати Oculus-розробником
Для створення тривимірного VR-додатка вам потрібна 3D-середовище розробки, що підтримує необхідні Software Development Kits (SDKs) для VR. У нашому випадку це Oculus Mobile SDK. Кращий 3D-движок для цього — це Unity, який має безкоштовну і платну версію. Безкоштовна версія має певні обмеження і вимоги до використання, а платна вже містить все необхідне для публікації мобільного VR для пристроїв Android (наприклад, для Samsung Gear VR і Google Daydream VR) і iOS (яка насправді поки не має сильної підтримки VR, хоча VR-додатки для iPhone і підтримуються Google Cardboard); вам не доведеться платити за ці функції окремо, як в старих версіях.

Після установки Unity необхідно завантажити Oculus Mobile SDK for Unity і стати Oculus-розробником. Для цього потрібно пройти просту реєстрацію, щоб створити Oculus ID для входу на веб-сайт і виділити область, яку ви потім будете записувати свої додатки для перевірки перед публікацією. Mobile SDK пройшов безліч ітерацій, завдяки чому готовий до роботи і має дуже детальну документацію. Разом з Mobile SDK можна також завантажити Audio SDK для оптимального використання функцій позиціонування звуку Oculus, які додають відчуттів занурення для користувачів VR-додатків. Він також тепер зручний і добре задокументований.

Після налаштування Oculus ID можна також зареєструватися на форумах по Oculus (а також по Unity) для пошуку відповідей на будь-які питання і рішення виникаючих проблем, а також щоб стати частиною зростаючого співтовариства VR-розробників.

Обладнання
Ми розглянули те, що стосується програмного забезпечення, однак для професійної розробки і створення якісних додатків вам знадобиться також обладнання, щоб ви могли збирати, тестувати і запускати свої програми локально перед надсиланням в магазин. Якщо гроші не проблема, постарайтеся знайти як можна більше підтримуваних мобільних пристроїв Samsung для тестування програми і перевірки продуктивності. Якщо ж грошей не вистачає, придбайте «найменший спільний знаменник» — Samsung S6, щоб переконатися, що додаток працює хоча б при мінімальних підтримуваних вимогах. Наявність обладнання для тестування також означає, що ви можете дати користувачам протестувати додаток до релізу і отримати зворотній зв'язок. Usability та зручність користувача — ключові елементи VR-розробки, дуже важливо, щоб у ваших VR-додатках користувача не «заколисували»! Але це вже тема для іншого посту…

Переконайтеся, що мобільний пристрій переключено в режим розробника і воно дозволяє установку додатків з невідомих джерел. Для включення режиму розробника Android зайдіть в Налаштування > Про пристрої > Номер складання (Settings > About device > Build number), і сім раз торкніться пункту Номер складання (Build number). Потім зайдіть в Налаштування > Диспетчер Додатків (Settings > Application Manager), виберіть Gear VR Service, потім Manage Storage. Кілька разів торкніться VR Service Version, поки не з'явиться перемикач Developer Mode. Переключіть його для включення Oculus Gear VR Developer Mode. І, нарешті, нам потрібно дозволити пристрою встановлювати і запускати програми з невідомих джерел, тому що при тестуванні програми воно не скачується з магазину Oculus або Google Play Stores. Для цього зайдіть в Налаштування > Безпека (Settings > Security) і увімкніть опцію Невідомі джерела (Unknown sources), а потім у діалоговому вікні виберіть OK. Після цього мобільний пристрій зможе запускати розробляються програми для тестування і перевірок демо. Примітка Якщо опція Gear VR Service відсутня, вам потрібно вставити пристрій в окуляри Gear VR, а потім виконати установку і процес налаштування ЗА Oculus Gear VR, драйверів і додатки — так, це означає, що вам доведеться купити окуляри!

Останній елемент для створення зв'язку між обладнанням і програмним забезпеченням — отримання OSIG мобільного пристрою для вставки його в тестові збірки Samsung, щоб вони працювали в системі Oculus Gear VR, не будучи перевіреним додатком. Для цього потрібно спочатку завантажити додаток Device ID з Google Play Store, а потім запустити його для отримання Device ID ваших пристроїв. Отримавши їх, перейдіть на веб-сайт генератора OSIG Oculus і введіть Device ID для отримання унікального файлу OSIG. Після завантаження вставте його в пакет програми в Unity, щоб забезпечити запуск збірок програми в мобільному пристрої.

З залізом і зрозуміло, а як щодо дизайну і розробки?
Зрозуміло, не кожен додаток, розроблене вами, повинно бути випущено і доступно для широкого користування, тому хорошим підходом (особливо у разі VR) буде створення першої серії прототипів і реалізації простих ідей перед переходом до повного циклу розробки відполірованого до блиску програми. Google створив величезну кількість інтерактивних прототипів для Daydream VR, простих і ефективно дозволяють розробникам зрозуміти можливості, які стануть доступні з новим обладнанням і контролером введення. Якщо ви новачок в VR-розробці, вам теж потрібно буде вивчити їх, щоб зрозуміти, що працює і — найголовніше — не працює в VR, а також для усвідомлення сучасних обмежень мобільного VR. Якщо ваш додаток гальмує або їм незручно користуватися, воно не буде опубліковано.

Не ускладнюйте
З-за обмежених можливостей введення в мобільній VR добре спрацьовують прості ідеї та взаємодії. Звичайно ж, існують bluetooth-контролери для Android, і вони підтримуються Samsung Gear VR, а також заявляється, що Google Daydream VR буде поставлятися з сумісним контролером, але у більшості користувачів поки що немає bluetooth-геймпадів. Тому якщо ви розробляєте додаток (зазвичай це гра), який працює тільки з bluetooth-геймпадом, і не підтримує тачпад з боків очок, то ви значно знижуєте розмір потенційного ринку аудиторії покупців.

Тачпад збоку на Gear VR (v1) рельєфний і нагадує D-pad ігрового контролера, тому з ним складніше виконувати діагональні гортання (swipes) і взаємодії, але для нових користувачів VR так простіше освоїти гортання вперед, назад, вгору і вниз за допомогою виступу, що відзначає центр області дотику кнопки. Доступна для попереднього замовлення нова версія Gear VR 2, яка буде випущена пізніше в цьому році, повернулася до конструкції плоского тачпада, як і в попередніх версіях Innovator Editions. Це хороше рішення з точки зору дизайну, тому що так можна відстежувати більш складні рухи пальців користувача.

Основний недолік тачпада на бічній стороні пристрою в тому, що нові користувачі VR зазвичай хапають окуляри, тримаючи їх обома руками і звикаючи до відчуттів від VR. Це часто призводить випадкового виходу або включення паузи у додатку, в залежності від дизайну, що збиває з пантелику і ускладнює показ демо-версій, тому що на відміну від tethered VR, ви не можете бачити те, що бачать користувачі, якщо те, що відбувається в телефоні не відображається на який-небудь дисплей.

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

Стабільна продуктивність
Щоб програму було схвалено і стало зручним для користувачів, воно повинне стабільно видавати на Samsung Gear VR 60 кадрів в секунду (FPS). Це необхідно, тому що така планка визнана мінімальною комфортної частотою кадрів VR для більшості користувачів. Будь-яке зниження частоти кадрів, навіть на короткий час, може призвести до «заколисування» користувачів, тому що віртуальний світ почне рухатися ривками і смикатися, намагаючись відповідати рухам голови.

Це може стати складним завданням, якщо ви не звикли до оптимізації використання 3D-движка або до спрощення геометрії. В будь-якому кадрі вашої VR-сцени повинно відображатися 50 000 полігонів (максимум 100 000), так що потрібно все обдумати, розрахувати заздалегідь і використовувати хитрощі Unity, щоб забезпечити гарну картинку, не забуваючи про стабільності.

На щастя, остання версія Unity 5.4 підтримує рендеринг за один прохід, так що ви можете отримати той же результат, витрачаючи менше ресурсів обладнання; про елементи VR подбає движок — він не малює все двічі, а рендерить кадр з трохи відрізняються кутів, щоб створити область видимості кожного ока і необхідний ефект 3D-глибини.

Джон Кармак, один з авторів DOOM, тепер працює в Oculus і проводить багато часу над інструментами і розробкою для мобільного VR. Завдяки цьому Gear VR має вже давно підтримуваний asynchronous timewarp, техніку, використовувану SDK для згладжування випадають кадрів і дозволяє розробникам позбавитися від ривків зображення на мобільному обладнанні. Але це не означає, що можна використовувати її як «милиця» і не займатися оптимізацією свого коду! Вона має свої обмеження і не завжди зможе врятувати вас і користувачів.

Oculus заявляє, що при розробці мобільної VR для окулярів Gear VR слід враховувати наступні обмеження:

  • 50-100 викликів візуалізацію кадр
  • 50 000-100 000 полігонів на кадр
  • Як можна менша кількість текстур (але їх розмір може бути величезним)
  • 1-3 мс на виконання скриптів
  • Ефективний тротлінг центрального і графічного процесорів для контролю нагрівання, витрати батареї і швидкості сцени
Примітка Всі інші API і Android SDK (такі як Google Cardboard) зазвичай не надають доступу до безпосереднього управління центральним і графічним процесорами мобільного пристрою, цю можливість надає тільки Oculus для окремих моделей пристроїв Samsung завдяки партнерській допомоги у створенні Gear VR і мобільних SDK.

Загальні рекомендації і поради по дизайну
Настав час розглянути різні корисні поради та хитрощі, пов'язані з загальними рекомендаціями і дизайном VR, щоб надати початківцям і досвідченим користувачам відмінні відчуття від VR.

Загальні поради
  • Ринок VR поки ще досить малий, хоча вже можливо продати 100 000 копій популярної VR-ігри в VR-магазині Oculus Gear. Не чекайте, що станете мільйонером за одну ніч, поки це ще не рівень популярності Angry Birds.

  • Співтовариство VR-розробників відкрито, гостинно, дружньо і корисно. Якщо ви заплутаєтеся, до ваших послуг безліч форумів з Unity, Oculus, Gear VR і Android, а також каналів VR-спільноти в Slack. Знайдіть і відвідайте місцеву зустріч VR-розробників, щоб познайомитися та обговорити свої знахідки і проблеми.

  • Не бійтеся VR-туториалов Unity 5, там є якісні, прості і зрозумілі приклади дизайну VR, починаючи від об'єктів, пояснення масштабів, продуктивності, типів взаємодії і практично все, що потрібно для розуміння основ VR-розробки.

  • Керівництва Oculus по дизайну VR і використання мобільних і звукових SDK також є безцінними джерелами інформації, порад та детальних прикладів коду для високої продуктивності і оптимізації VR.

  • Для розробки і тестування перед публікацією додатку вам знадобиться все цільове обладнання, або принаймні, модель з мінімально підтримуваними характеристиками, наприклад Samsung Galaxy S6. (Строго кажучи, деякі моделі Gear VR підтримують Samsung Note 4, однак займатися збиранням і підтримкою додатків під цю модель слід тільки досвідченим розробникам, тому що для забезпечення стабільних 60 FPS в VR для чіпсетів цього пристрою потрібно дуже серйозна оптимізація.)
Дизайн VR
  • Зробіть тривалість гри зручною для новачків у VR; забезпечте короткі (близько 15 хвилин) і комфортні ігрові сесії.

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

  • Якщо ви робите гру в жанрі «хорор», чітко позначте це, особливо при тестуванні, щоб користувачі могли вирішити, чи продовжувати їм грати, чи ні. Занурення в VR здається дуже реальним, несподіванки і раптові потрясіння набагато сильніше впливають на користувачів.

  • Рівень взаємодії: спочатку надайте користувачам просте керування, щоб новачки могли отримати задоволення від процесу; не перевантажуйте їх, змушуючи розбиратися в управлінні, вони і так вже сильно приголомшені першим досвідом у VR. Складне або розширене управління можна ввести пізніше, підстроївши під це дизайн гри; ускладнення з поступовим підвищенням навичок дозволяє пользоватею відчути себе досвідченим і вмілим при освоєнні більш складного управління.

  • Для комфорту користувача сцена завжди повинна реагувати на рухи голови, навіть в меню і кат-сценах.

  • Крім того, не треба самостійно керувати областю видимості користувача та «рухати» його головою, це надзвичайно неприємно для відчуттів.

  • Уникайте переміщення користувача по сцені, а в разі переміщення він повинен рухатися з постійною швидкістю без прискорення і гальмування. Якщо потрібно перемістити, помістити його, наприклад, в кабіну транспорту, якщо це можливо, і дайте йому зосередити на чому-небудь погляд на передньому плані.

  • Уникайте зміни точки зору користувача. Не перемикайтеся між камери від першого і від третьої особи: користувачу буде здаватися, що світ «спливає» з-під нього.
  • При можливості дозвольте користувачеві налаштовувати рівень комфорту, щоб піддані «заколисування» гравці могли включати функції, зменшують дискомфорт, а більш досвідчені користувачі могли їх відключити. Для зниження дискомфорту можуть використовуватися наступні функції:

    • Дискретний поворот персонажа користувача;
    • Затемнення області видимості при переміщенні і телепортації в нове місце;

    • Затемнення і зникнення даних, видимих периферійним зором, при повороті.
Інтерфейс користувача
  • Не забувайте, що ви розробляєте стереоскопічне додаток! Всі елементи повинні рендеритись двічі і для занурення повинні бути вбудовані в світ, а не перебувати поверх нього, як у традиційному UI.

  • Якщо вам потрібно використовувати традиційний UI, то проецируйте його на поверхню, а не відразу на екран, щоб зберігати відчуття глибини в світі. Зазвичай вважається, що найбільш комфортно розташовувати його на відстані 1-3 метри від користувача.

  • При можливості «вбудовуйте» UI в логічний, відповідний 3D-об'єкт світу, наприклад, у книгу, сувій, мобільний телефон або наручний дисплей, щоб користувач міг взаємодіяти з ним природним чином.

  • Створіть таку схему UI, щоб вона природно розташовувалася в комфортній зоні видимості користувача і йому не доводилося сильно рухати головою для перегляду усіх опцій меню навігації; він може рухати головою для вибору елементів, але переміщення елементів далеко ліворуч або праворуч призводить до перенапруження шиї.

  • Як говорилося раніше, введення зазвичай обмежений взаємодією з тачпадом, тому що у більшості власників не буде bluetooth-геймпада з кнопками для вибору елементів меню. Тому вам потрібно подумати над альтернативними механізмами введення, що використовують властивості VR.

  • мобільних VR-додатках часто використовується взаємодія поглядом, коли відображається віртуальний курсор, наступний за рухами голови користувача. Якщо він включений, користувачеві досить подивитися на елемент меню для взаємодії з ним. Зазвичай присутній кругова шкала, яка поступово заповнюється, якщо користувач дивиться на певний елемент меню; після заповнення шкали елемент вибирається.

  • Хоча взаємодія поглядом і просто у використанні, предосмотрите можливість вибору дотиком для досвідчених або нетерплячих користувачів: багаторівневі меню UI можуть бути нудними і повільними при навігації за допомогою погляду.

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

  • Статичний значок в одному кутку екрану, наступний за рухами голови користувача, постійно нагадує, що той знаходиться в меню, навіть якщо він глянув занадто вліво, вправо або тому і втратив панель з виду. Ще краще, якщо меню цілком буде слідувати за рухами голови, щоб користувач завжди бачив його.

  • Використовуйте фізичну кнопку [BACK] очок Gear VR, щоб дозволити користувачам повертатися назад в багаторівневих меню, або навіть увімкніть гортання спереду назад, хоча це може збивати з пантелику, якщо меню має вигляд бібліотеки, в якій користувач може прокручувати безліч осередків з контентом, наприклад, в каталозі фотографій або відео.
Оптимізація продуктивності і тестування
Якщо ви дочитали до цього моменту, коли ми вже розглянули, чому варто створювати мобільні VR-додатки для Samsung Gear VR (і трохи підготуватися до Google Daydream VR), як налаштувати середовище розробки і загальні рекомендації по дизайну VR, і все ще з нами, то вам повинно бути цікаво! Тому тепер ми будемо вважати, що у вас є хоча б базові знання і розуміння створення 3D-ассетов і розробки додатків, тому що я перейду до більш специфічної термінології, щоб детально розглянути ключові аспекти дизайну і розробки. Так що врахуйте, я вас попередив…

Оптимізація продуктивності
Оптимізація продуктивності мобільного VR-програми — це ключовий фактор, що гарантує комфорт користувача (забудемо про хоррор-ігри) та проходження перевірки як процесу публікації в магазині.

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

  • Оптимізуйте гру, щоб вона видавала 60 кадрів в секунду. Пропуск кадрів неприпустимий: хоча Asynchronous TimeWarp і дозволяє приховати і згладити деякі складні сцени, але не сподівайтеся на неї повністю.

  • Не покладайтеся на лічильник кадрів в редакторі Unity, тому що він виконує подвійну роботу при запуску сцени на комп'ютері. Хоч він і дає гарне уявлення про рівень продуктивності, створіть збірку і протестуйте програму на цільовому обладнанні, щоб забезпечити плавний ігровий процес.

  • Користувачі часто не можуть розпізнати, чи є зображення або сцена на віртуальному відстані більше 20 метрів від них стереоскопічною або моноскопической. Скористайтеся цим для вивантаження скайбоксів далеких областей, щоб знизити навантаження рендеринга на мобільний пристрій.

  • Використовуйте вбудовані в Unity інструменти: профайлер (Profiler) і Frame Debugger. Вони покажуть, чи є в додатку лаги чи занадто «важкі» сцени, дозволяючи вам покадрово вивчити конструкцію сцени, крок за кроком пройшовши по викликах відтворення. Дуже ймовірно, що ви знайдете об'єкти, які не потрібно рендери, що знизить загальна кількість викликів відтворення.

  • Крім того, при будь-якій можливості виконуйте батчинг викликів відтворення за допомогою вбудованих в редактор Unity інструментів Static Batching і Dynamic Batching.

  • Отсекайте поверхні геометрії 3D-моделей, які ніколи не будуть видні, щоб позбавитися від зайвих полігонів.

  • Використовуйте також occlusion culling (відсікання невидимою геометрії), щоб не рендери сітки, які невидимі, наприклад, геометрію кімнати за дверима, яка поки що не відкрито.

  • Як можна сильніше спрощуйте 3D-сітки, щоб мати найнижчий рівень деталізації об'єктів, але не втрачаючи потрібної інформації.

  • Зробіть кількість операцій повторного відтворення (overdraw) якомога менше, щоб менша кількість об'єктів перетворювати один поверх іншого. Панель керування вікна Scene View Unity (Scene View Control Bar) дасть вам розуміння того, що можна оптимізувати.

  • Крім того, використовуйте карти освітлення (lightmapping) для запікання тіней на об'єктах замість застосування ресурсоємних динамічних тіней.

  • Якщо потрібно отрендерить 3D-об'єкт, що знаходиться на великій відстані, використовуйте модель з низьким рівнем деталізації (LOD) і меншою кількістю трикутників, і замінюйте її на модель з високим LOD при наближенні до користувача.

  • Переконайтеся, що включений тротлінг (throttling) CPU і GPU, тому що неможливість ініціалізації цих значень призведе до виконання програми за замовчуванням в середовищі зі зниженою тактовою частотою. Додатки Gear VR зазвичай обмежені швидкістю ЦП, тому орієнтуйтеся на нього, а не на графічний процесор, це часто може поліпшити продуктивність. Однак якщо добре додаток оптимізований, можливе зниження частоти та центрального і графічного процесора, що призведе до збільшення часу роботи батареї, а значить, і часу сеансу гри.
Тестування
Ключ до створення якісного програми — регулярне тестування з ітераціями між кожною сесією, що включають пропозиції та поліпшення по ігровому процесу, інтерфейсу, розробки та дизайну замість відкладання всіх змін на останню хвилину, коли ви думаєте, що все готове на 100%. Таким чином ви зможете постійно вносити невеликі удосконалення, які в цілому вимагають менше зусиль, ніж раптове виявлення великого недоліку в дизайні, знайденого занадто пізно і вимагає величезної кількості зусиль на переробку і виправлення.

Як розробник ви занадто занурені в процес і можете не помічати проблеми і баги програми, тому користувальницьке тестування, що починається на ранніх етапах і на всьому протязі процесу розробки, критично важливо для того, щоб ви не пропустили щось очевидне, що відразу помітить користувач. Однак існують тести, які ви можете і повинні виконати, перш ніж показувати додаток іншим.

Основні типи тестування, які ви будете проводити, пов'язані з функціональністю і продуктивністю, щоб гарантувати базовий рівень правильної роботи програми, достатній для комфортного використання гравцями. Ви можете писати юніт-тести для перевірки різних аспектів функціональності, однак вам все-таки доведеться виконувати ручне тестування і знаходити проблеми самостійно.

Якщо ви вирішили управляти процесом розробки з допомогою методології Agile, то можна створити набори тестових даних на підставі власних відчуттів і оповідань користувачів, щоб додаток працювало і містило в собі всі потрібні функції. Інакше вам потрібно буде подумати про набори тестових даних, які зможуть ефективно протестувати і охопити всі можливі умови і дії: не тільки очікувану поведінку і дії користувача, але і те, що користувач може зробити для руйнування процесу і потенційного «застрягання» в грі (не поставити потрібний прапорець або не набрати достатньо очок для переходу на наступний рівень без опції повторної спроби).

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

Але поки ви дістанетеся до цього етапу, ви можете запускати програму безпосередньо в редакторі Unity для перевірки функціональності і продуктивності без складання та встановлення програми на мобільний пристрій. Як написано в розділі про оптимізацію продуктивності, профайлер, Frame Debugger і Scene View у Unity дозволяють виконати початкове тестування продуктивності, а сам редактор інформує розробника щодо граничних винятках і помилки в коді.

Користувальницьке тестування
Користувальницьке тестування вимагає більше підготовки і часу, щоб гарантувати якісні відгуки саме про додатку, а не про технології. Як я згадував у своєму пості раніше, приблизно 9 з 10 людей все ще не пробували VR, тому використання їх в якості тестувальників-новачків вимагає управління для попередньої підготовки.

В процесі огранізації сеансу тестування кожен тестер повинен мати час на ознайомлення з VR і «акліматизацію», після чого можна почати пробувати тестування програми. Якщо тестери новачки в VR, то це дасть їм шанс не просто бути приголомшеними технологією і відчуттями занурення в інший світ, але і бути корисними, надаючи зворотний зв'язок безпосередньо про вашому VR-додатку. Коли вони будуть знати, що вміє робити VR і як вона працює на базовому рівні, вони будуть готові до тестування вашої програми, більш чітко розуміючи, як воно має працювати і які почуття і відчуття повинно викликати. Хорошими прикладами знайомства з додатками для Gear VR можна назвати Samsung Introduction to Virtual Reality (безкоштовне) і Welcome to Virtual Reality by SliceVR (платне).

Підготуйте набір питань, щоб розпитати користувачів про сеанс тестування вашої програми, для отримання корисних відгуків та інформації про те, що вони відчували, наскільки легко зрозуміли, що потрібно робити, де у них виникли проблеми або труднощі, а також про аспекти, які були для них некомфортними (з точки зору продуктивності, а не контенту, особливо у випадку з фільмами жахів).

Пам'ятайте, що контент, що відображається в мобільному VR-пристрої, складніше відобразити на окремий монітор, і тому ви не зможете в реальному часі бачити, на що вони дивляться (і на що вказують в повітрі). Зробіть набір роздруківок важливих екранів і меню додатка, щоб після сеансу тестування користувачі могли дивитися на їх та описувати різні екрани, панелі, які вони бачили (але вони не обов'язково будуть називати їх тими ж назвами, які ви дали цим елементам).

Якщо ваш бюджет досить великий, можна скористатися послугами компаній, що пропонують послуги тестування VR, щоб знизити власні витрати праці і часу. Testronic Labs пропонує послугу парного тестування VR на функціональність і сумісність, а Player Research — лідери в дослідженні користувачів і додатковому тестуванні, ця компанія створює і надає розробникам після тестів докладні звіти, які можна використовувати як частина послуги.

Отже, ваш додаток вже стабільно працює на 60 FPS і не містить помилок (наскільки це можливо для ПО), воно було перевірено і визнано комфортним і простим у використанні для цільової аудиторії кінцевих користувачів. Настав час відправити додаток в Oculus Store і підготуватися до випуску!

Відправка в магазин
Процес відправки в магазин
Щоб отримати можливість продажу додатки для Gear VR в магазині Oculus Store, потрібна перевірка додатки колективом Oculus Store на комфортність, продуктивність і загальну відповідність, після чого дається «зелене світло» для випуску програми.

Це досить прямолінійний процес, але він вимагає з вашої сторони трохи зусиль для внутрішньої установки. Обсяг праці, необхідний для налаштування, залежить від використовуваних в додатку функцій (наприклад, від наявності внутрішньоігрових покупок (IAP), організації матчів для декількох користувачів, досягнень, списки лідерів і т. д.). Для багатьох елементів потрібна внутрішня налаштування API і ID, тому потрібно повернутися у проект програми в Unity, щоб переконатися, що використовуються правильні значення для розблокування кожного досягнення, внутрішньоігровий покупки і т.д.

Ви повинні вже були налаштувати Oculus ID, але якщо ви ще цього не зробили, зайдіть на oculus.com. У розділі Developers > Dashboard потрібно вибрати Create new organisation, щоб отримати можливість створення профілю додатки. Переконайтеся, що важлива інформація щодо вашої організації введена вірно (адреси, фінансова інформація і т. д.), щоб ви могли отримати обладнання, і, що більш важливо, щомісячні платежі за покупки вашого додатка.

Основи
Після налаштування організації можна приступити до налаштування програми: зайдіть в розділ My Apps > Create New App і введіть потрібну інформацію.

ВАЖЛИВО! В даний час можливість повного видалення програми після його створення відсутній, так що в процесі створення переконайтеся в правильності всіх відомостей — ви можете повернутися і змінити інформацію про програму в будь-який момент, але якщо вам, як і мені, подобається чиста панель, зробіть все вірно відразу!

Перший етап — це вибір платформи: ми отпавляем мобільний VR-додаток, так що виберіть Gear VR і введіть повне ім'я програми для створення першого запису.

Після створення першого профілю програми з ім'ям і платформою Oculus генерує унікальний ID додатка, який потрібно використовувати в проекті Unity для ініціалізації різних Oculus API, особливо що відносяться до внутриигровым покупок і перевірок наявності ліцензії для фінальної версії.

Також після введення фінансової інформації ви можете створювати будь-які IAP-токени і ID, які можна потім викликати у проекті Unity для відповідних дій через Edit Details > Platform > IAP.

Інформація магазину додатків
Основна інформація вашої програми в Oculus Store знаходиться в Edit Details > Submission Info. Тут вводиться повне та короткий опис, вибирається жанр, можливості, підтримувані периферійні пристрої, вікові обмеження та вартість.

Деякі з цих елементів ви обираєте самі, деякі вимагають укладення сторонніх організацій (наприклад, вікові обмеження); щодо вартості співробітники Oculus Store зв'яжуться з вами та домовляться про відповідною сумою. Не забувайте, що за замовчуванням усі додатки вважаються безкоштовними, і якщо ви хочете продавати їх, потрібно змінити вартість перед відправкою!

Ще один витратний за часом елемент, як і при відправленні в будь-який магазин — це художні ассеты, які необхідно створити, щоб програма мала свій запис. Потрібні зображення різної форми і розмірів в залежності від того, як і де запис буде відображатися в магазині, проте інструкції зрозумілі і прості в застосуванні (наприклад, про необхідність і розташування логотипу, щоб включені динамічні банери продажу його не закривали).

Існує один цікавий ассет, яким можна доповнити додатки для Gear VR (і який поки не підтримується додатками для Rift): це зображення кубічної текстури, щоб потенційні покупці при відвідуванні магазину могли бачити в Gear VR панорамний скріншот вашого додатка.

Складання
Звичайно ж, інформація дуже важлива, але вам також потрібно завантажити складання програми на перевірку і для скачування після покупки. Перед відправкою потрібно запустити інструмент Oculus Submission Validator для вашого файлу АПК і переконатися, що є наступне:

  • Правильно вказані XML файл маніфесту і місце установки — додатки Gear VR повинні встановлюватися пристрій, а не на зовнішній накопичувач.

  • Вказано код версії — зазвичай 1.0, якщо це ваша перша версія програми, або більшого значення у разі завантаження нової збірки після перевірки попередньої версії.

  • Підписаний АПК, щоб після перевірки і підтвердження готовності до релізу він міг існувати без необхідності подальших завантажень.
Розділ керування збірками дозволяє завантажувати збірки для різних каналів: Alpha, Beta Release Candidate і Live. Слід врахувати, що багато журналісти мають доступ до каналу Release Candidate, тому якщо ви не працювали над PR або маркетингом додатки до випуску, то будьте готові до того, що вони можуть випадково натрапити на нього і випустити статтю-огляд без попередження. Так що перш ніж завантажувати складання цей канал, краще встановити з ними контакт, щоб вирішити всі проблеми, якщо додаток не готове для випуску на 100%!

Додаток готове до відправки
Якщо ви вирішили, що всі дані введені, можна надіслати інформацію в розділі Submission Info > Submit, в якому є зручний список з поточним статусом кожного потрібного розділу. Коли нарешті з'явиться гарний ряд зелених прапорців, у вас буде остання можливість перевірити весь список і всі відомості, перш ніж натискати на кнопку [SUBMIT FOR REVIEW] (НАДІСЛАТИ ДЛЯ ПЕРЕВІРКИ). Після відправки додатки співробітники Oculus Store Gear VR перевірять інформацію додатки, протестують його і зв'яжуться з вами, щоб повідомити про запропоновані зміни, після внесення яких додаток буде вважатися готовим до випуску.

ОТ І ВСЕ! Ви пройшли весь шлях — відмінна робота, успіхів вам у мобільного VR-розробці, діліться посиланнями на створені вами програми в коментарях.

Ще раз всі етапи в форматі tl;dr
  1. Купіть мобільний пристрій Samsung S6 або S7: http://www.samsung.com/uk/consumer/mobile-devices/smartphones/

  2. Купуйте Samsung Gear VR HMD: http://www.samsung.com/uk/consumer/mobile-devices/wearables/gear/SM-R322NZWABTU?catnm=Gears+%26+Watches&catid=4340
  3. Скачайте Unity: https://store.unity.com/
  4. Зареєструйтесь Oculus Developer Centre, щоб отримати Oculus ID: https://developer.oculus.com/
  5. Скачайте мобільний SDK Oculus: https://developer.oculus.com/downloads/mobile/1.0.3/Oculus_Mobile_SDK/
  6. Скачайте звуковий SDK Oculus: https://developer.oculus.com/downloads/audio/1.0.4/Oculus_Audio_SDK_Plugins/
  7. Виберіть додаток Android Device ID з магазину Google Play: https://play.google.com/store/apps/details?id=com.redphx.deviceid&hl=en_GB
  8. Введіть Device ID генератор OSIG Oculus: https://developer.oculus.com/osig/
  9. Скачайте файл OSIG і вбудуйте його в проект Unity
  10. Створюйте свої прототипи та розважайтеся з мобільного VR!
Корисні посилання по дизайну
» Туторіали по VR у Unity
» Вступ Oculus у VR
» Документація Oculus Mobile SDK
» Форуми по Unity
» Форуми по Oculus
Корисні посилання по оптимізації і тестування
» Oculus Blog — Squeezing Performance Out Your Gear VR Title pt.1
» Oculus Blog — Squeezing Performance Out Your Gear VR Title pt.2
» Oculus Mobile SDK — Testing & Troubleshooting
» Unity — Optimisation for VR
» Пост Джона Кармака про згладжування (anti-aliasing) у Фейсбуці
Корисні посилання по відправці додатків
» Oculus Developer Dashboard
» Oculus Store — Інструкції з художнім ассетам для Gear VR
» Oculus Submission Validator
» Огляд публікації додатків в Oculus
Джерело: Хабрахабр

0 коментарів

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