В колонке для AIN.UA Александр Сурнин, сооснователь студии AREYES, рассказывает, как ей удалось поместить в 4 МБ полноценную гонку для компании Ford Europe.

Для сравнения другие рекламные форматы весом 4 МБ содержат:

  • Две картинки для соцсетей в высоком разрешении;
  • двухсекундный рекламный видеоролик HD 60 Fps;
  • две фотки с моря.
Изображение в тексте — автора

Предыстория

Наша команда одна из первых в мире реализовали гоночную игру для инстаграм-фильтра под названием Follow The Dream. До этого считалось, что социальная сеть вмещает только простые дизайн-эффекты, вроде одного слоя с нехитрой механикой, но наша работа открыла более широкие возможности. Кейс привлек внимание сообщества-разработчиков, среди которых много ребят из диджитал-маркетинга, к тому моменту уже рассматривающих возможности AR, — и среди них оказался Ford. 

Это общий тренд: последние два года большие бренды и компании всё чаще обращаются к геймингу как к инструменту коммуникации с молодой аудиторией. Маркетинговая команда Ford тоже рассматривала различные форматы взаимодействия для новой рекламной кампании, и заметив наш AR-проект, обратилась напрямую к нам. 

Идея

В 2020 году Ford выпустил новую модель городского внедорожника Ford Puma ST — автомобиль, характеристики которого могут поспорить с гоночным авто: быстро реагирует на импульсы, быстро входит в повороты, по-настоящему build to thrill, как утверждает слоган. Чтобы продвигать машину, помимо традиционных рекламных каналов, было решено использовать возможности геймификации AR-игры и создать свою гонку на базе Spark AR Studio для инстаграма. 

Гонка будет симулировать заезд на гоночном треке Brands Hatch, расположенном на востоке от Лондона. Именно использование реальной карты и стало главным вызовом проекта. Нам предстояло воссоздать реалистичное вхождение в повороты на реальной трассе, и это не могло выглядеть как в 2D-симуляциях, иначе не донесло бы всех преимуществ модели.

Концепт

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

  • Интерфейс;
  • положение камеры;
  • позицию головы игрока (это все ещё инстаграм-фильтр, где пользователь управляет своей головой);
  • спецэффекты поворотов и разгона машины;
  • композицию кадра;
  • ориентир по колористике.

Команда

В проекте принимало участие 9 специалистов:

  1. Проектный-менеджер;
  2. креативный продюсер;
  3. арт-директор;
  4. 2D- и 3D-художник;
  5. технический директор;
  6. технический художник;
  7. лид-артист;
  8. QA инженер.

Креативный продюсер не только отвечал за идею, но мог и критически посмотреть на готовую игру глазами клиента и игрока, в то время как во многих AR-играх таким человеком пренебрегают.

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

Разработка

Элемент номер один — карта

Для этого проекта нельзя было сгенерировать случайное фантазийное окружение вокруг трека. Нам предстояло смоделировать настоящую трассу Brands Hatch, на которой проводится множество британских и международных соревнований. По задумке это дало бы полное погружение в атмосферу гонки с первой секунды, а раз так — никакого копирования и перерисовки себе не позволяем — используем только оригинал трека.

  1. Находим трек в Google Maps.

Узнаём, что он плоский и не повторяет всех перепадов высоты, неровностей. Ищем пути, чтобы извлечь нужный фрагмент ландшафта в 3D.

  1. Используем:

В итоге: получаем что-то вроде 3D-скриншота местности с нужными перепадами высот. Сопоставив эту модель с обзорами трассы с YouTube, видим, что затея с рельефом удалась.

Технический чек-лист, как вытянуть из карты ландшафт

  1. Запускаем браузер Google Chrome в специальном режиме, который дает нам pid процесса.
  1. Запускаем Render Doc, Inject into process, находим по pid наш процесс.
  2. Открываем интересующую нас область в Google Maps в уже открытом Google Chrome.
  1. Ищем кнопку Capture Frame.
  2. Софт сделал некий 3D-скан местности.
  3. Переходим в Blender 3D, подключаем add-on Maps Models Importer, загружаем экспортированный файл с картой.
  1. Дальше причесываем топологию ландшафта.
  1. Добавляем дорогу.
  1. Текущий результат успешно можно брать в работу и отправлять художникам.

Кстати, на всю карту у нас меньше 2 Мб места, поэтому используем атлас-текстуру и уже на ней размещаем все нужные для покраски трассы паттерны.

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

Элемент номер два — машина

Конечно, мы не могли использовать случайную модель автомобиля: игрок должен ездить исключительно на Ford Puma ST. И, конечно, клиент предоставил нам 3D-модель автомобиля, которая занимала более 100 Мбайтов вместо нужных нам 1,5 Мбайта и состояла из 1,5 миллиона треугольников вместо хотя бы 10 тысяч.

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

Элемент номер три — спецэффекты

Все проекты дополненной реальности в инстаграме разработчики создают на платформе Spark AR Studio — программном обеспечении, выпущенном фейсбуком в 2017 году. Однако в нём до сих пор не предусмотрено множества технологий, привычных для других движков. И что было важно для нас — нет встроенной механики для создания хотя бы иллюзии динамики объектов. А для эффекта вхождения в крутые повороты нам это было необходимо.

Решили следующее: если нельзя заставить двигаться машину, заставим двигаться всё вокруг — с помощью люфтов, допусков и поворотов камеры создадим видимость корректного движения.

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

Также в игру было интегрировано ускорение, которое искажает картинку с камеры, добавляя игре динамики.

Элемент номер четыре — мини-карта

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

Технические решения

Для построения траектории и сохранения формы ландшафта мы использовали obj-файл с информацией о крайних точках, высчитали положение автомобиля по пяти осям, XYZ, rotationX и rotationZ. Ось rotationY получили из разницы между текущим положением автомобиля и положением на 50 мс раньше. Машину удалось разворачивать вдоль изгибов дороги по всему ходу движения.

И это ещё не все. Если присмотреться во время игры к машине, видно, что она не только поворачивает колеса и оставляет следы на поворотах, но и кренится. Чтобы получить такой эффект, мы сделали несложный риг машины — каждое колесо имеет ось вращения и положение — и вывели параметр кривизны поворота. Точно так же с креном корпуса: когда машина поворачивает влево, корпус наклоняется вправо. Кажется, что машину заносит, но это лишь обман зрения.

Эти два эффекта усилили движением картинки вокруг машины. В движке Spark AR Studio камера зафиксирована в одной точке и её перемещение невозможно. Мы же пошли от обратного: пока машина стоит на месте, мы вращаем весь мир вокруг машины. Это вроде иллюзии движения, когда нам кажется, что наш поезд тронулся, хотя на самом деле отправился поезд на соседнем пути. 

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

На этом же скриншоте можно частично увидеть иерархию проекта и место, которое занимает финальный исходник.

В работе над проектом мы также использовали собственный набор инструментов (AREYES SDK), чтобы ускорить разработку игровой механики. AREYES SDK – это наш внутренний продукт, на его основе мы разработали множество готовых шаблонов самых популярных игровых механик для Instagram.

По итогу игра заняла 5800 строк кода.

Результат

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

Всего за 2 недели после релиза, игру получила 770 000 просмотров в Великобритании, Германии, Польше, больше 75 000 игровых сессий и 2500 людей поделились своим игровым результатом на своей инстаграм-странице.

Автор: Александр Сурнин, сооснователь студии AREYES