DOTS повышает производительность мобильных игр и ускоряет разработку

Какие преимущества обеспечивает новый стек информационно-ориентированных технологий (DOTS) студии Tic Toc Games. 

Tic Toc: Пример использования Unity в разработке

Что нужно сделать, чтобы ускорить разработку и улучшить качество игры, состоящей из огромного числа графических компонентов? Tic Toc Games воспользовалась высокопроизводительным стеком информационно-ориентированных технологий (DOTS) от Unity, включающим Entity Component System (ECS), систему задач C# и компилятор Burst, обеспечив 60 кадров в секунду для мобильной игры без повышенного энергопотребления и перегрева телефонов.

Проект

Подход к реализации информационно-ориентированного дизайна в разработке

Цель

Повышение производительности на многопоточных процессорах и снижение энергопотребления

Платформы

iOS, Android, Xbox One, PS4, Steam, Nintendo Wii U eShop

Количество сотрудников

около 40, при 5 разработчиках Unity

Регион

Бербанк, Калифорния

Студия Tic Toc Games занимается полным циклом разработки, имеет штат опытных художников, дизайнеров, программистов, руководителей производства. Все сотрудники имеют ряд наград за разработку интерактивных продуктов. Студия стремится, чтобы игроки получали удовольствие от игры, чтобы они хотели в нее вернуться, делились приятными впечатлениями с друзьями, играя снова и снова. Unity используется студией с самого начала их работы в 2011 году.

Как и любая игровая компания, Tic Toc находится в постоянном поиске способов повышения производительности кода и ускорения разработки. Гарт Смит, ведущий программист студии, выразил эту мысль так: «Мы хотим разрабатывать игры лучше и быстрее». Он давно использует Unity и считает новый функционал Unity 2018.x очень полезным.

Имея планы по выпуску различных головоломок в 2019 году, включая Match 3 и Collapse, Смит порекомендовал своей команде обратить особое внимание на ECS. «Система ECS сильно меняет подход разработчиков к программированию, — отмечает Смит. — Информационно-ориентированное программирование в школах не преподают, и это серьезная смена парадигмы. Даже мы немного боялись этой новинки». Тем не менее, результаты использования ECS помогли им поверить в полезность идеи.

Результаты:

  • 60 кадров в секунду на мобильных устройствах без перегрева процессора.
  • Повышение эффективности тестирования
  • Сокращение числа итераций и снижение затрат на устранение проблем и ошибок
  • Снижение энергопотребления
Tic Toc подключает DOTS

Для повышения производительности игры и эффективности сотрудников Tic Toc воспользовалась важнейшими компонентами нового стека информационно-ориентированных технологий (DOTS) Unity, который включает в себя Entity Component System (ECS), систему задач C# и компилятор Burst.

ECS смещает фокус с объектов на информацию

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

Например, в игре есть две сущности: пуля и игрок. У каждой из них есть различные атрибуты, включая положение, место и момент появления, а также запас здоровья. Сущности и атрибуты — это чистая информация, не несущая функциональной нагрузки. Система применяет к сущности функцию, например, систему движений к пуле или систему появления к игроку. Разделение информации и функции позволяет Unity создавать задачи, обрабатываемые параллельно на нескольких ядрах. По заявлению Майка Гейга, руководителю глобального подразделения разработки контента для евангелистов, «Увидев систему в работе, можно легко понять, что она из себя представляет».

Преимущества ECS значительны. Разрабатывать оптимизированный код становится легче, просто за счет организации данных, отсюда и слоган «Производительность по умолчанию». «Кроме того, ECS открыла для нас возможности по улучшению алгоритмов», — добавляет Смит. Стоит также отметить, что код ECS оптимизирован для многократного использования, архетипы (уникальные сущности) плотно упакованы в памяти, и что самое важное, ECS дает возможность распределять нагрузку по ядрам ЦП. Популярные сегодня процессоры имеют 4-6 физических и 8-12 логических ядер, в то время как модели для энтузиастов имеют до 16 физических и до 32 логических ядер. Очень часто ядра простаивают, а DOTS позволяет использовать их все.

Смотрите введение в Entity Component System (ECS) и систему задач C# (в 5 частях) от Майка Гейга.

Объединение усилий с системой задач C#

Сочетая собственный информационно-ориентированную ECS студии и систему задач C# от Unity, студия Tic Toc смогла полностью использовать многоядерные вычисления и многопоточность. Разработка такого кода усложняется конкуренцией (потоки обрабатываются беспорядочно, что приводит к непредсказуемым результатам), которая накладывает свои ограничения, а постоянное переключение контекста неэффективно.

Тем не менее, система задач решает все вышеперечисленные проблемы, позволяя разработчикам Tic Toc сосредоточиться на игровом коде. «Задача позволяет запускать наши системы в несколько потоков, используя разные ядра ЦП, что раньше было очень сложно реализовать. ECS и система задач позволили нам использовать несколько ядер на все 100%, что увеличило производительность».

Компилятор Burst общается с аппаратурой напрямую

Новый компилятор Burst основан на технологиях LLVM и принципах математически-ориентированного компилятора. Он использует задачи C# для создания оптимизированного машинного кода с учетом возможностей целевой платформы. Для Tic Toc это означало, что Смит и его команда избавились от необходимости изучения и переработки сложного низкоуровневого кода для устранения проблем производительности.

«Компилятор Burst позволил нам прогнозировать свою работу с ECS, что сильно ускорило работу. Нам удалось ускорить обработку циклов почти в 30 раз, особенно если они выполнялись несколько раз в одном кадре», — заметил Смит.

Разработчики обнаружили, что при взаимодействии крупных систем компилятор Burst позволяет избежать значительного количества ошибок интеграции, которые обычно устранялись в процессе контроля качества. «Компилятор Burst дает преимущества оптимизированного ассемблерного кода для множества платформ без необходимости вручную перерабатывать его», — добавляет Смит.

Совет по использованию DOTS для других студий

Переход студии Tic Toc к информационно-ориентированному программированию поначалу был неуверенным, но задача была интересной. «По мере изучения ECS, мы все легче и легче двигались вперед. Думаю, что сейчас уже все наши сотрудники понимают, да и любят, эту систему, и мы наверняка будем использовать ее в следующих играх», — говорит Смит.

Другим студиям Смит советует следующее: «Не обязательно с головой уходить в ECS. Систему можно внедрять постепенно, поскольку даже небольшие изменения сильно повышают производительность, особенно с учетом оптимизации кода для повторного использования».

Также ведущий разработчик рекомендует сначала опробовать технологии на прототипе. «Попробуйте сначала сделать что-нибудь простое, например, в рамках гейм-джема, будь то тетрис, крестики-нолики, неважно — просто сделайте игру на ECS, и уже потом внедряйте ее в производственный цикл с разработкой графики и других вещей. Вы многое узнаете, столкнувшись с системой».

И наконец, Смит очень рад тому, чего могут ожидать любители игр Tic Toc. «Игроки определенно заметят, насколько изменилась игра, насколько она стала лучше работать, заметят и 60 кадров в секунду, независимо от того, что происходит на экране. Я уверен, им понравится улучшенный игровой процесс и отзывчивость приложения!»

«Производительность игры, созданной с использованием Entity Component System от Unity, невероятна, но даже если вас интересует не это, то вам наверняка понравится возможность повторного использования кода и пониженного энергопотребления».

Garth Smith, Lead Programmer, Tic Toc Games

Преимущества ECS при разработке мобильных игр

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

Listen to DOTS early-adopter Garth Smith share his experience with Unity’s new data-oriented approach.

Пример использования ECS в мобильных головоломках студии Tic Toc

На Unite Los Angeles студия Tic Toc выступала с докладом «Мы любим производительность», в рамках которого Гарт Смит рассказал о том, как ECS помогла студии ускорить разработку и производительность в процессе работы с Entity Component System от Unity. 

Производительность по умолчанию

Используйте все возможности многоядерных процессоров благодаря нашей высокопроизводительной многопоточной системе.

We use cookies to ensure that we give you the best experience on our website. Click here for more information.