Наш клиент – продюсер мобильных и браузерных игр, который занимается аналитикой и продвижением таких игр. Наш клиент помогает сотням независимых игровых студий делать их игры более популярными у пользователей, давая консультации и рекомендации по их улучшению.
Клиент захотел создать систему по анализу геймплея игр с той целью, чтобы давать более точные рекомендации и иметь возможность сразу определить, какой проект имеет шансы на успех, а какой нуждается в доработке.
У игр можно проанализировать целый ряд параметров геймплея: например, цветовую гамму, угол наклона камеры, как быстро движется камера и пр. Подобная система должна не только оценить потенциал контента, который уже стал популярным, например, какая цветовая гамма наиболее приятна глазу игроков, но и дать рекомендации по улучшению продукта, чтобы он с большей вероятностью стал популярным у игроков.
Наша система разделяет видео-файл с записью геймплея игры на фреймы и отбирает некоторую их часть для анализа. У каждого фрейма определяется доминантная цветовая гамма, угол наклона камеры, скорость движения камеры. В процессе разработки мы столкнулись с целым рядом сложностей, которые мы с успехом преодолели:
Для начала, мы определили частоту съемки кадров, которая бы поддерживала должную скорость анализа и оптимальное качество результата. Наша система снимает каждый 30 фрейм для анализа.
Каждый отобранный фрейм мы разбивали на 16 цветовых кластеров, что было оптимальным для скорости работы приложения и визуального восприятия. Мы воспользовались OpenCV для разбиения фреймов на цветовые подгруппы и выделения в них доминирующего цвета. После анализа каждого отдельного фрейма система совмещала их и получала основную цветовую гамму игры в виде 16 кластеров.
Смену сцен легко отследить через мониторинг гистограмм цвета и обнаружения случайных и явных изменений в основной цветовой гамме игры, либо при появлении новых ярких цветов в ней же.
Когда это происходит, приложение понимает, что сцена изменилась, и вновь запускается анализ основной цветовой гаммы.
Оценка движения скорости камеры – нетривиальная задача, поскльку большое количество объектов в играх движется с разной скоростью в различных направлениях.
Для решения задачи мы решили воспользоваться библиотекой на базе Python, которая может оценивать скорость движения камеры относительно статического объекта в кадре (например, оружия главного героя или его аватара). Оценка происходит на основе построения вектора движения. Библиотека прекрасно подходила под наши нужды, однако был ряд нестыковок с решением задачи, например, статичный главный объект в игре не всегда присутствует, либо в игре имеется множество объектов, которые движутся в хаотичном порядке.
Мы доработали решение дополнительным модулем, которые определяет скорость объектов для более точных результатов.
После выявления основной цветовой гаммы, приложение сопоставляет её с цветовыми гаммами популярных игр для дополнительных рекомендаций.
На данный момент приложение работает как часть общей рекомендательной системы клиента. Приложение помогает проанализировать уже популярные игры, а затем интересующий проект, сопоставить их и выдвинуть рекомендации по улучшению продукта. Для нашей компании данный проект был очень интересным в плане применения инструментов CV.