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

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

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

How do you speed up development and improve the user experience while adding unprecedented numbers of components to game graphics? Tic Toc Games leveraged Unity’s high-performance Data-Oriented Technology Stack (DOTS) – which includes the Entity Component System (ECS), the C# Job System, and the Burst Compiler – to enable 60 frames per second (fps) performance on mobile devices without draining batteries or overheating phones.

Проект

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

Цель

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

Платформы

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 replaces object-oriented coding with a data-oriented approach much more appropriate for many parts of gaming applications. It decouples data from processing, eliminating an enormous amount of data scattering and enables true multithreading as events no longer have to be processed sequentially.

For example, two entities might be a bullet and a player, each with references to different attributes like position, spawning, and health data. The entities and the attributes are pure data with no attached functionality. The system applies a function to an entity, such as a motion system to a bullet or a spawning system to a player. This separation of data and function lets Unity create jobs that can be processed in parallel on multiple cores. According to Mike Geig, Unity’s Global Head of Evangelism Content, “Once it clicks, it’s pretty easy to wrap your head around it.”

The benefits of using ECS are significant. Simply because of the way data is organized, it’s easier to write optimized code – thus the tagline, “Performance by default.” Smith added, “Some of the doors that ECS opened showed us how to make better algorithms.” In addition, ECS code is highly reusable, archetypes (unique entities) are tightly packed in memory, and perhaps most importantly, ECS can take advantage of increasing numbers of CPU cores. Today, mainstream CPUs have up to 4-6 physical and 8-12 logical cores, while “enthusiast” CPUs have up to 16 physical and 32 logical cores. Most go unused, but DOTS takes full advantage of them all.

Watch Mike Geig’s 5-part Intro to the Entity Component System (ECS) and C# Job System.

Объединение усилий с системой задач 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 кадров в секунду, независимо от того, что происходит на экране. Я уверен, им понравится улучшенный игровой процесс и отзывчивость приложения!»

Garth Smith, Lead Programmer, Tic Toc Games

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

Garth Smith, Lead Programmer, Tic Toc Games

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

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

Ранний пользователь DOTS Гарт Смит делится своим опытом работы с новой информационно-ориентированной системой Unity.

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

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

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

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

Мы используем cookie-файлы, чтобы вам было удобнее работать с нашим веб-сайтом. Подробнее об этом можно узнать на странице, посвященной политике использования cookie-файлов.

Согласен