04/12/2018

Особенности тестирования VR продуктов

Меня зовут Егор Богомяков, я — VR/AR разработчик в студии Borisoft. С недавних пор, помимо разработки VR продуктов, я занимаюсь их тестированием. В этой небольшой статье я хочу, опираясь на свой опыт, обратить внимание разработчиков, опытных тестеров и тех, кто только начинает работать с виртуальной реальностью, на нюансы, которые стоит учитывать при разработке и тестировании VR контента.

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

Подготовка

Как делать скриншоты?

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

В Steam предусмотрена возможность делать скриншоты с помощью комбинации кнопок на VR контроллере (на Oculus комбинация та же: кнопка меню + триггер), но данное сочетание срабатывает не всегда..

Оптимальный вариант — попросить разработчиков привязать захват скриншотов к одной из кнопок контроллера: это сэкономит вам кучу времени, которое вы потратите, если будете бегать каждый раз до компьютера, увидев новый баг. А ведь может случиться так, что вы не успеете добежать, и тогда придётся заново проходить фрагмент уровня для фиксации важного недочёта.

Если же разработчики не привязали логику к кнопке, или Steam’овское сочетание не работает, придется пользоваться сторонним софтом. Мой выбор — NVIDIA GeForce Experience, т.к. с его помощью можно не только делать скриншоты, но и записывать видео с наименьшей нагрузкой на систему.

На что еще обратить внимание?

Осторожнее с едой перед тестами: вам, скорее всего, придётся активно двигаться или постоянно падать куда-то в виртуальном пространстве. А если и не придётся, то любая просадка FPS, вызывающая эффект Motion Sickness (об этом чуть позже), может серьёзно подпортить день. Лучше выпейте мятного или имбирного чаю: это натуральный способ, помогающий справляться с укачиванием.

Отдыхайте: все мы разные и по-разному переносим нагрузки, но лично мне жизненно необходим небольшой перерыв после каждых 25-30 минут в VR. Важно давать глазам и вестибулярному аппарату восстановиться после всего пережитого в виртуальных мирах.

Свежий воздух: обеспечьте приток свежего воздуха, открыв окно или хотя бы направив на себя вентилятор. Это поможет избежать укачивания.

Насколько комфортно играть?

Motion Sickness (укачивание)

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

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

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

FPS: попросите разработчиков добавить виджет (в версии 4.20.2 значения, выводимые командой stat FPS —  нечитабельны в шлеме), показывающий частоту кадров в секунду, чтобы оперативно замечать проблемные участки локаций, эффекты, события и фиксировать частоту кадров на скриншотах.

Перемещение игрока: главная причина укачивания в VR проектах. Прислушайтесь к своим ощущениям во время перемещения по уровню. Если вам становится плохо, обязательно указывайте это в отчёте. Возможно, разработчикам следует предусмотреть альтернативные способы передвижения или добавить эффекты, уменьшающие укачивание (например, небольшое затемнение экрана при телепортации).

Воздействия на игрока: крайне нежелательно воздействие на игрока сторонних сил, затрагивающее камеру. Например, отбрасывающие монстры, трясущаяся перед обрушением пещера и.т.п. В одном из проектов, в разработке которого я принимал участие, нужно было "вытягивать" игрока со дна моря после 5 минут нахождения под водой, что непременно привело бы к укачиванию, т.к вытянуть кого-то с глубины ~140 метров — задача долгая. Поломав немного голову над тем, как угодить клиенту, которому обязательно нужен был подъём вверх, и игрокам, которые были бы от этого не в восторге, мы приняли решение показывать процесс подъёма в течение нескольких секунд, а потом включать затемнение экрана.

Камера начнёт затемняться через несколько секунд после начала подъёма (Subsea VR Experience)

Высота камеры

Различные VR гарнитуры могут по-разному определять рост игрока, из-за этого высота "глаз", которыми игрок смотрит на виртуальный мир, может значительно отличаться. Проблемы возникают, когда разработчики, делая проект, например, на HTC Vive, до последнего не тестируют билд на Oculus, думая, что они верно прикинули рост персонажа для всех платформ. Однако зачастую решает каждый лишний или недостающий сантиметр роста игрока. Именно поэтому стоит обращать внимание, на какой высоте находится ваша камера при использовании различных девайсов. Это позволит избежать не только неловких моментов с заглядыванием игрока за потолок в небольших помещениях, но и сохранит задуманный разработчиками комфорт от игры. Согласитесь, лучше, когда интерактивный объект находится, как предполагалось, на уровне пояса, а не на уровне колен. Во втором случае игроку будет не до интерактива: всё внимание будет приковано к ноющей пояснице.

Помните, что продуктом, который вы тестируете, будут пользоваться разные люди. Для имитации небольшого роста я обычно играю сидя, а вот для проверки ситуации с высоким игроком придётся обратиться за помощью к самому большому другу или изобрести какое-нибудь нехитрое приспособление типа подставки :) Убедитесь, что рост игрока не ломает существующие механики и не даёт ему преимущества.


Слева — ожидаемый рост игрока, справа — то, что мы увидели, запустив игру на Окулусе. Во втором случае игрок просто не сможет дотянуться до мячика, летящего у потолка (VRetired)

Погружение

Виртуальная реальность способна обеспечить потенциально более глубокий уровень погружения игрока в происходящие в шлеме события за счёт отслеживания положения головы и рук (контроллеров). Однако погружение — понятие очень хрупкое и легко может быть разрушено неопытностью разработчиков. Как этого избежать?

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

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

Положение виртуальных рук игрока должно соответствовать положению рук пользователя и иметь правильный угол наклона.

Эффект от правильных габаритов качественных моделек и настроенного освещения уничтожается одним висящим в воздухе цветком (Kyro)

Визуальная часть

Значение, отвечающее за то, сколько каждый объект занимает на экране места, в виртуальной реальности отличается от того же значения при обычном запуске игры. Это может привести к тому, что переключение LOD’ов объекта, которое как раз опирается на размер объекта на экране, может работать не так, как в редакторе и тестах не в VR.

Для проверки LOD’ов я пользуюсь консольной командой show LODColoration, окрашивающей объекты в цвета, соответствующие текущим уровням детализации. Подробнее — в документации.

Результат вызова команды show LODColoration (Subsea VR Experience)

Помимо детализации объектов следует обратить внимание на читабельность текста. Часто бывает, что отлично выглядящий в редакторе текст невозможно читать в VR.

Проходимость

Некоторые разработчики считают, что обычные коллизии и невидимые стены могут остановить игроков в VR от попадания в запрещённые места и срезания пути. К сожалению, с виртуальной реальностью, в отличие от обычных игр, этот приём не работает.

Как пользователи могут сломать систему перемещения и как это предотвратить?

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

Таким же образом падайте во все пропасти: даже если разработчики запретили телепортироваться в яму, поставив невидимую стену, следует быть уверенным, что случайно зашедшие туда игроки не останутся сидеть на дне, а умрут от падения (а ещё лучше, вообще не будут долго падать: см пункт motion sickness).

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

Ещё одна хитрость, к которой игроки могут прибегнуть для преодоления тех самых ворот, проверяется так: подойдите вплотную к воротам и просуньте за них руку, которой можно телепортироваться. Сможете переместиться за препятствие?

Обходим запрещающие телепортацию коллизии, переместив руку за объект (Kyro)

Интерактив

Свобода действий, которую игроки имеют в VR, может легко сломать любую запланированную разработчиками последовательность. Чтобы этого не произошло, во время тестов вы должны основательно покидаться вещами: выкидывайте необходимые для прохождения объекты, бейте их другими предметами, чтобы они улетали в пропасть или залетали в недоступные места. Качественный продукт сможет пройти до конца даже самый буйный игрок.

Обязательно попробуйте хватать зафиксированные интерактивные объекты (рычаги, штурвалы и.т.п) с разных сторон: они не должны дёргаться в момент, когда вы захватываете их. Рывок в начале взаимодействия связан, как правило, с тем, что разработчики забывают учитывать при вычислении нового положения объекта точку, в которой игрок взял объект, компенсируя тем самым рывок объекта в сторону руки.

Заключение

Итак, теперь при тестировании VR контента мы:

Перед тестированием решим вопросы с софтом для захвата изображений и видео, не будем объедаться и приоткроем окно в помещении.

Во время тестирования будем делать перерывы и обращать внимание на следующее:

  • Motion sickness и то, что может его вызывать: FPS, перемещение по сцене, воздействие на игрока
  • Высота камеры
  • Сохранение эффекта погружения
  • Корректное переключение LOD’ов и читабельность текста
  • Проходимость уровней, невозможность срезать путь
  • Интерактивные объекты: выкидывайте ключевые предметы и хватайте всё, что можно

 

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

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

Если у вас возникли вопросы, смело задавайте их!

Recent Posts

Как в НИУ ВШЭ воспитывают новых Кодзим

11/07/2019
Реально ли попасть в геймдев, отучившись 4 года и получив диплом? Чему предстоит обучаться? Какие подводные камни? Что говорят студенты и преподаватели?

От юриста до разработчика игр при финансовой поддержке Unreal Engine

08/07/2019
Ник Пирс поделился замечательной историей о том, как сменить скучную профессию и стать разработчиком игр. 

Создание ИИ сверхскоростных автомобилей с помощью Unreal Engine

04/07/2019
Ведущий программист Dark Future: Blood Red States рассказывает об изящном решении для создания ИИ правдоподобных противников.