Что делает разработчик VR-тренажера?
Давайте представим ситуацию, что коммерция заключила договор с заказчиком, project уже провел все брифинги, составил ТЗ и roadmap проекта и вот пора звать разработчика.
Обычно, именно техническая часть реализации продукта вызывает у заказчиков самый большой интерес: как именно проходит разработка, какие этапы и т.д., поэтому попробую немного приоткрыть процесс.
Если говорить коротко, программисты разрабатывают сам тренажер: пишут механики, программируют сценарии, которые проходит обучающийся, создают пользовательский интерфейс (UI/UX) – разрабатываются окна интерфейса, панели управления, меню, а также ведут разработку систем взаимодействия: например, захват объектов, выбор инструментов, манипуляции руками и т.д.
Но давайте обо всем по порядку:
1) На первом этапе происходит сбор требований и проектирование (Pre-production).
Определяю основные архитектурные паттерны (MVC, ECS и др.), далее подготавливаю техдок: описываю, какие системы и классы нужно будет реализовать. На этом же этапе формирую бэклог задач в трекере.
2) Вторым этапом идет процесс прототипирования (Prototype phase).
В рамках этого процесса "пилится" прототип продукта: собираются сцены, пишутся скрипты на C#, тестируются основные алгоритмы и логика. Далее подключается SDK для VR (например, OpenXR или SteamVR). На этом же этапе делается базовый UI.
3) На третьем этапе происходит разработка основных систем (Core development), а также создание пользовательского интерфейса (UI/UX):
разрабатываются окна интерфейса, панели управления и меню. Много времени занимает разработка систем взаимодействия: например, захват объектов, выбор инструментов, манипуляции руками, настройка физики: проверка работы коллизий, обработка взаимодействий с объектами, синхронизация движений и взаимодействий с объектами, оптимизация производительности: использование пулов объектов (object pools), динамическая загрузка контента.
4) Четвертым этапом происходит интеграция контента (Art and assets integration).
Здесь к работам также подключаются аниматоры (Animator Controller) для проработки персонажей и объектов. На этом этапе у тренажера появляется звуковое сопровождение, которое синхронизируется с действиями игрока.
5) На пятом этапе происходит программирование логики обучения и сценариев (Scenario scripting).
Здесь прописываются алгоритмы сценариев, а именно последовательность задач, которые должен выполнять пользователь. Реализуется система подсказок и обратной связи: например, сообщения о правильности действий. Также подключают аналитику и системы отслеживания прогресса, чтобы можно было отслеживать действия пользователя и строить отчеты.
6) Перед заключительным этапом идет тестирование и отладка (QA and Debugging).
Здесь мы с командой проводим юнит-тестирование и интеграционное тестирование. Используются профайлеры для поиска узких мест в производительности. Идут работы с логированием и дебагом для поиска и исправления ошибок.
7) И наконец финальная сборка и релиз (Release).
Создаются финальные сборки под целевые платформы (например, VR-шлемы типа Oculus или HTC Vive). Программисты проверяют совместимость с различными устройствами и конфигурациями. Финально проводится тестирование производительности.
После прохождения всех этапов продукт готов для демонстрации его заказчику!
Если вас заинтересовал какой-то конкретный их этапов работы над VR-тренажером подробнее, можете написать в комментариях и я расскажу о нем отдельно.