Продолжаем серию публикаций о лучших мобильных приложениях выпускников «IT ШКОЛЫ SAMSUNG».

Сегодня – слово молодым разработчикам из Новосибирска, победителям конкурса VR-приложений «ШКОЛА VR 360» в 2018 году, когда они были студентами-первокурсниками. Этим конкурсом завершался спецпроект для выпускников «IT ШКОЛЫ SAMSUNG», где обучали разработке в Unity3d для очков виртуальной реальности Samsung Gear VR. Всем геймерам знаком жанр Tower Defense – нужно оборонять территорию от наступающих врагов с помощью строительства башен. Ребята решили взять эту механику и на её основе сделать свою VR-игру, но с другой стороны баррикад: здесь вы пилот, и ваша цель — помочь наземному отряду пройти до конца, ведя перестрелку с башнями, преграждающими путь. Игра сделана в ретро-стилистике LowPoly — трехмерные модели с небольшим числом полигонов, как в старых компьютерных играх. Под катом описание процесса разработки, видео и скриншоты игры, ссылка на исходники.

Скриншот игры
Что в итоге получилось

Далее


Кратко об условиях проекта Samsung «ШКОЛА VR 360», в рамках которого велась разработка игры AirAttack. Итак, выпускникам IT ШКОЛЫ SAMSUNG предлагалось:

  1. За 4 месяца пройти самостоятельно обучающую программу, для чего в ноябре были выданы лицензии на обучение по специализации из 5 онлайн курсов по VR-разработке
  2. Сформировать команду и за 3 месяца разработать собственный проект. В помощь были индивидуальные консультации от профи в VR разработке – компании «Увлекательная реальность»
  3. В мае представить проект специалистам Samsung, «Увлекательной реальности» и другим членам жюри.

Об идее


Кирилл Прокофьев, капитан команды:
Мы решили взять формат аркады, который был бы всем знаком, но при этом интересно смотрелся в VR и раскрылся бы под совершенно другим углом. Аркадных стрелялок в магазинах VR-приложений хоть отбавляй. Мы решили скрестить авиа-аркаду с Tower Defense: в игры, где защищаешь башни от самолетов-захватчиков, не играл только тот, кто не коротает время в метро.

Вы когда-нибудь задумывались, кто играет против вас, когда вы улучшаете башни?

Владимир Шперлинг, разработчик:
Нашей идеей было создать игровое LowPoly-приложение, поскольку это единственно возможный стиль для мобильного VR-приложения такого масштаба. С точки зрения геймплея мы решили не развивать уже существующие избитые темы, как скитание в космосе и прохождение VR-лабиринтов. Мы хотели чего-то большего.

О предыдущем опыте и ошибках


Владимир Шперлинг, разработчик:
Скриншот игрыКогда я впервые познакомился с VR годом ранее в 2016-м, в год окончания «IT ШКОЛЫ SAMSUNG», моя первая команда состояла всего из двух человек. Мы решили создать гоночную аркаду, назвали ее Speed Riders. Обязанности разделили следующим образом:: один должен был отвечать за программный код, архитектуру и адаптацию приложения под VR, а второй — за концепцию, дизайн и целостность идеи. Возможно, такой подход был бы успешен для реализации приложения в малые сроки и командой с более высокой квалификацией, но на тот момент мы не знали особенностей проектирования VR-приложений и допустили множество ошибок.

Например, мы пытались реализовать слишком сложное взаимодействие игрока с объектами мира, при этом акцент был сделан на то, что любое движение игрока могло привести к эффекту укачивания или уменьшению качества передвижения. Это привело к невероятно нагруженному интерфейсу и сложным манипуляциям, в результате после первой минуты игры пользователю хотелось снять очки и не возвращаться. Стало понятно, что для исправления необходимо пересмотреть концепцию всего проекта. И это обнаружилось за 2 недели до защиты!

Демонстрация игры всем желающим на ежегодном конкурсе проектов Samsung
Демонстрация игры всем желающим на ежегодном конкурсе проектов Samsung

Кроме того, проблемы создавало отсутствие дополнительной визуализации и автоматизации для создания уровней: двум начинающим программистам приходилось делать уровни в 3-4 этапа. Совместная работа в git у нас не сложилась — Unity3D хранит сцены целиком, и их невозможно совместить впоследствии: приходилось ждать, пока кто-то из нас закончит работу, потом другой подключал свои детали… и так по кругу. Позже, при разработке AirAttack!, когда у нас было множество сцен, эта проблема частично разрешилась тем, что каждый из нас работал с разными сценами.

Работа над игрой


Владимир Шперлинг, разработчик:
Спустя год я снова решил принять участие в Школе VR 360 и мы с Кириллом объединились в команду. Проведя несколько часов с листом бумаги и чашками чая, мы разбили весь проект на этапы и расставили дедлайны:

  1. Создание главного меню
  2. Реализация 1-го уровня
  3. Тестирование и первичная отладка критических недочетов
  4. VR-оптимизация, устранение ошибок, наращивание функционала (очень важную роль мы уделяли деталям, ведь наша цель – сделать и оптимизировать, а не «налепить» много и плохо) и возможно архитектурные доработки
  5. Добавление новых уровней
  6. Публикация приложения в Oculus Store
  7. Добавление мультиплеера
  8. Добавление загружаемых материалов (в виде уровней, улучшений, новых кораблей и пр.)

В ходе разработки, несмотря на такие короткие сроки, мы старались обсудить каждый момент согласно диаграмме.

Диаграмма хода разработки

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

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

Скриншот из редактораУчитывая предыдущий опыт с Unity3D, и знание о том, как его можно модифицировать для упрощения разработки и создания уровней, мы уделили немного времени созданию “скриптов-помощников”. Например, отображение радиуса поражения турелей – теперь мы могли контролировать, какие участки дороги охвачены турелями, какие участки будут наиболее сложные, а какие позволят игроку сделать передышку и перезарядиться или перевести дух. Или другой скрипт: отображение траектории движения для юнитов и игрока, чтобы мы могли наглядно увидеть, верно ли составлена траектория, и при необходимости исправить это. На изображении линия ломаная, но при движении было сделано сглаживание траектории.

На финал конкурса мы планировали реализовать лишь часть намеченных планов, остановиться на создании 4 уровней и в дальнейшем начать реализовывать дополнительный функционал. И всё бы было хорошо, если бы не…

Надежда на то, что все подключаемые библиотеки работают идеально, была одной из главных ошибок в ходе разработки игры. Нам пришлось модифицировать основную библиотеку от Oculus, которая позволяла задействовать возможности GearVR в полной мере, плюс все усложнилось из-за неполной документации. Каждая библиотека, подключённая к проекту, анализировалась на предмет производительности: часть кода была удалена, а непроизводительные конструкции исправлялись на более простые. В некоторых местах использовались ‘Unsafe’ переменные-указатели, для предельной производительности, и данный код тщательно тестировался на отсутствие утечек памяти. Был использован модульный подход, при котором все объекты являются независимыми и могут быть удалены из сцены без повреждения кода. Каждый уровень был протестирован, и в «повышенной нагрузке» количество кадров в секунду не было ниже 50fps.

Кирилл Прокофьев, капитан команды:
Наша команда полностью уложилась в заявленные сроки — было написано около двух десятков скриптов, создан UI-интерфейс корабля, UI двух меню и инструкций.

Финальный вариант UI меню




Приложение полностью работоспособно. Все модели были тщательно подобраны и оптимизированы для уменьшения общего числа полигонов на сцене. За основу брались готовые модели в свободном доступе с разрешением для изменения.

В ходе работы над проектом AirAttack! мы уделили немалое время UED (User Experience Design, или UX). Помимо UI-элементов — главного меню, меню выхода из уровня, UI корабля и даже UI башен (Строки жизни) — различные процессы сопровождаются звуковыми и визуальными эффектами (например, частицы огня или тень от стекла самолета). Вся игра состоит из моделей «Low-Poly», что не только увеличивает производительность, но и создает атмосферу.

Итог


Игра удостоилась звания «Лучшее игровое приложение» на конкурсе «Школа VR 360» в 2018 году. Результат наших усилий – на видео ниже.



Исходники игры: bitbucket.org/Vova_SH/air-attack

Авторы:

Кирилл Прокофьев
Кирилл Прокофьев
Геймдизайнер
Капитан команды
prokyhouse@yandex.ru
Swift, Java, C#-разработчик, дизайнер
Призер чемпионата кибербезопасности
Победитель регионального тура конкурса проектов «IT ШКОЛА SAMSUNG» в 2017 году
Победитель конкурса «Школа VR 360» 2018

Владимир Шперлинг
Владимир Шперлинг
Unity-разработчик
vladimir-shperling@yandex.ru
Kotlin, Java, C#-разработчик
1 место финала конкурса проектов «IT ШКОЛА SAMSUNG» в 2016 году
Победитель конкурса «Школа VR 360» 2018

Комментарии (0)