Этот очень длинный пост посвящён разработке мобильной 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 и SDK Android (такие как 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 для вашего файла APK и убедиться, что имеется следующее:
- Правильно указаны файл XML манифеста и место установки — приложения Gear VR должны устанавливаться в устройство, а не на внешний накопитель.
- Указан код версии — обычно 1.0, если это ваша первая версия приложения, или большее значение в случае загрузки новой сборки после проверки предыдущей версии.
- Подписанный APK, чтобы после проверки и подтверждения готовности к релизу он мог существовать без необходимости дальнейших загрузок.
Раздел управления сборками позволяет загружать сборки для различных каналов: Alpha, Beta, Release Candidate и Live. Следует учесть, что многие журналисты имеют доступ к каналу Release Candidate, поэтому если вы не работали над PR или маркетингом приложения до выпуска, то будьте готовы к тому, что они могут случайно наткнуться на него и выпустить статью-обзор без предупреждения. Так что прежде чем загружать сборку в этот канал, лучше установить с ними контакт, чтобы устранить все проблемы, если приложение не готово для выпуска на 100%!
Приложение готово к отправке
Если вы решили, что все данные введены, можно отправить информацию в разделе Submission Info > Submit, в котором есть удобный список с текущим статусом каждого нужного раздела. Когда наконец появится красивый ряд зелёных флажков, у вас будет последняя возможность проверить весь список и все сведения, прежде чем нажимать на кнопку [SUBMIT FOR REVIEW] (ОТПРАВИТЬ ДЛЯ ПРОВЕРКИ). После отправки приложения сотрудники Oculus Store Gear VR проверят информацию приложения, протестируют его и свяжутся с вами, чтобы сообщить о предлагаемых изменениях, после внесения которых приложение будет считаться готовым к выпуску.
ВОТ И ВСЁ! Вы прошли весь путь — отличная работа, успехов вам в мобильной VR-разработке, делитесь ссылками на созданные вами приложения в комментариях.
Ещё раз все этапы в формате tl;dr
- Купите мобильное устройство Samsung S6 или S7: http://ift.tt/1LEGakz
- Купите Samsung Gear VR HMD: http://ift.tt/22IsQoQ
- Скачайте Unity: http://ift.tt/28ZY7k4
- Зарегистрируйтесь в Oculus Developer Centre, чтобы получить Oculus ID: http://ift.tt/1uoVZT3
- Скачайте мобильный SDK Oculus: http://ift.tt/2deI96R
- Скачайте звуковой SDK Oculus: http://ift.tt/2dEuAMd
- Установите приложение Android Device ID из магазина Google Play: http://ift.tt/2deIMgA
- Введите Device ID в генератор OSIG Oculus: http://ift.tt/1DG3zeT
- Скачайте файл OSIG и встройте его в проект Unity
- Создавайте свои прототипы и развлекайтесь с мобильной 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)