Оживление My Talking Tom Friends 2 с помощью анимации и физики

В качестве продолжения Мои говорящие Том Друзья, одной из самых успешных игр Outfit7, Мои говорящие Том Друзья 2 кажется естественным следующим шагом, чтобы предоставить игрокам обновленный опыт. Мобильная игра объединяет популярных персонажей из первой версии для приключения с виртуальным питомцем на новом уровне в веселом новом городе.
Мы встретились с Михеком Пездирцем, инженером-программистом Outfit7, и Чртом Кристлом, главным инженером-программистом команды, чтобы обсудить, как они оптимизировали производительность на разных устройствах, создали масштабируемую анимационную систему и управляли сложностью контента.
Какие были самые большие технические проблемы при создании игры?
Михек Пездирц: Оптимизация игры для плавной работы на устройствах от iPhone 5S и недорогих Android телефонов до последних Android телефонов была большой проблемой. Мы сосредоточились на производительности, размере, эффективности батареи и визуальных эффектах.
С почти 1000 анимациями мы создали собственную систему, чтобы поддерживать размер приложения, используемого анимациями, низким, между 10 и 15 МБ. Переход от предварительно отрендеренных визуальных эффектов к динамическому миру потребовал отказа от старых стандартов, таких как OpenGL ES 3.0. Мы также включаем сжатие текстур ASTC и вычислительные шейдеры для высококлассных устройств. ASTC также уменьшает размер приложения, что помогает на рынках с ограничениями по хранению и загрузке.

Как работа в Unity помогла с основным игровым процессом и мини-играми?
МП: Гибкий редактор Unity позволяет эффективно сотрудничать разработчикам, художникам и командам VFX. Мы создали собственные инструменты и расширения Timeline для кинематографических моментов.
Чрт Кристл: С точки зрения разработчика, быстрая итерация Unity является большим преимуществом. Вы можете настраивать код, перекомпилировать его за секунды и мгновенно тестировать изменения. Мы также автоматизировали большую часть нашего конвейера с помощью пользовательских инструментов постобработки и рабочих процессов активов, что значительно экономит ручной труд.

Как пользовательский скриптовый рендер-пайплайн (SRP) формирует внешний вид и производительность игры?
МП: Наш пользовательскийSRP оптимизирует рендеринг для мобильных устройств, адаптируя эффекты под уровень устройства. Он по-прежнему сохраняет визуальную согласованность. Мы контролируем рендеринг теней и окклюзию в пространстве экрана (SSAO) напрямую, экономя время GPU с помощью однопроходного уменьшенного SSAO и статической камеры теневой карты. Это снижает нагрузку на ЦП и увеличивает и стабилизирует качество теней.

Как использование системы задач C# и компилятора Burst влияет на визуальные эффекты игры?
ČK: Система задач C# обрабатывает анимационные конвейеры – переназначение, IK и трансформации look-at – и эффективно выполняет задачи для персонажей. Она также поддерживает ресурсоемкие системы ЦП, такие как симуляции мини-игр, параллельно с GPU.
MP: Компилятор Burst и Unity.Mathematics для однократной инструкции, множественных данных (SIMD) улучшили производительность и помогли нам решить ранние проблемы с производительностью управляемого кода. Это позволяет игре работать плавно даже на устройствах низкого уровня.
Какую роль играет физика Unity?
ČK: Физика Unity ключевая в мини-игре по готовке, где все объекты, от еды до конвейерной ленты, полностью основаны на физике. Вместо того чтобы перемещать объекты вручную, все работает на Rigidbodies. После настройки таких параметров, как сопротивление и масса, система становится стабильной и позволяет надежные взаимодействия, такие как укладка еды.
MP: Не использовав Unity Physics в значительной степени с Unity 5, мы впечатлены его улучшениями. Вне мини-игр мы отключаем большинство физических эффектов на устройствах низкого уровня и включаем только легкие операции, такие как сфера или капсульные броски для взаимодействий с касанием и перетаскиванием.
ČK: Низкоуровневые физические управления Unity дают нам гибкость для тонкой настройки игрового процесса, что позволяет игнорировать определенные столкновения или обрабатывать разрешение контактов вручную без дополнительных затрат.

Как работает система разговоров/комментариев персонажей?
ČK: Мы ведем большую таблицу Excel со всеми разговорами, каждый из которых помечен уникальным идентификатором. Дизайнеры обновляют эту таблицу, и Unity импортирует ее для построения графа разговоров.
Действия персонажей, такие как сидение или еда, определяют, какие разговоры доступны. Например, когда три персонажа сидят на скамейке, система случайным образом выбирает неповторяющийся разговор. Затем она применяет перерывы, чтобы сохранить взаимодействия свежими.
МП: Пользовательская логика обрабатывает взаимодействия, такие как приветствия, требуя близости и уважая перерывы, чтобы сохранить их естественными. Система стремится к расслабленному, естественному потоку, используя простые условия и тайм-ауты вместо сложных механик. Это делает ее эффективной и удобной для дизайнеров.

С какими другими проблемами, связанными с производительностью, столкнулась команда в процессе разработки?
ČK: Рендеринг и шейдеры были очень сложными на мобильных устройствах. Мы классифицировали устройства по производительности CPU/GPU, а затем создали варианты шейдеров, чтобы активировать только то, что нужно каждому устройству. Мы протестировали вычислительные шейдеры и предварительно прогрели часто используемые шейдеры во время заставки, чтобы избежать долгих времен загрузки без задержек кадров или сбоев.
MP: Мы оптимизировали загрузку сцен, динамически загружая ресурсы и эффекты, а не встраивая их в префабы. Это обеспечивает плавные переходы даже на устаревшем оборудовании.
Какие этапы достигла команда во время разработки?
MP: Мы достигаем ключевых показателей, оптимизируя размер приложения и память без ущерба для производительности. Мы балансируем сжатие LZMA и LZ4 в зависимости от типа ресурса. Используя пользовательские пакеты ресурсов и выборочное сжатие, время загрузки на старых устройствах улучшилось. Мы автоматизировали конвейер сборки и сделали эти оптимизации быстрыми и повторяемыми.
ČK: Мы гордимся новой системой действий. Это конечный автомат, который отслеживает действия персонажа. Эта настройка позволяет нескольким разработчикам создавать взаимодействия независимо, не нарушая систему.

Какой совет вы бы дали разработчику, который хочет создать долгосрочную мобильную франшизу?
MP: Планируйте свое распространение и маркетинг заранее и не полагайтесь на видимость в магазине приложений. Создайте что-то уникальное или лучшее, чем то, что уже существует, и будьте готовы к итерациям и многократным неудачам.
ČK: Создавайте игры, которые вам действительно нравятся. Страсть к вашему собственному творению часто важнее, чем аналитика.
Чтобы узнать больше о проектах, созданных с помощью Unity, посетите страницу Ресурсы.
