Искать

В основе футуристического проекта Megacity для мобильных устройств лежит DOTS

Пример использования Unity от разработчиков: как студия Nordeus взяла на вооружение DOTS и сумела совершить революцию в собственных методах программирования, а также разработать мобильную версию Megacity

В чем суть грандиозных демонстраций, например, Megacity, которые показывает Unity на различных мероприятиях? Это просто картинка или в этом есть что-то полезное для Unity-разработчиков? Студия Nordeus из Белграда часто принимала участие в конференциях Unite, демонстрируя примеры технологий из своих игр. Но их революционные демофильмы — это не просто пыль в глаза, а показ новых возможностей Unity, которые меняют сами принципы разработки как для художников, так и для программистов.

Проект

Регулярно демонстрирует новейшие достижения нашей инициативы DOTS «Производительность по умолчанию»

Цель

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

Платформы

Android, iOS, ПК

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

3 для Megacity, 20 для Battle Demo

Регион

Белград, Сербия

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

Раз за разом вызывая восторг аудиторий на конференциях Unite от Лос-Анджелеса до Берлина, Nordeus демонстрировала преимущества этих и других решений Unity, включая Lightweight Render Pipeline (LWRP), а также вложенные префабы.

Результаты:

  • Простой в разработке и эффективный многопоточный код
  • Оптимизированный рендеринг на бюджетных платформах, например, на мобильных устройствах
  • Ускоренный контроль качества благодаря меньшему количеству ошибок интеграции
Объединяйтесь под флагом DOTS на хакатоне

Ужасно талантливая международная команда

Первой игрой студии Nordeus, основанной в 2010 году бывшими инженерами Microsoft Бранко Мулитиновичем, Миланом Йововичем и Иваном Стоисавльевичем, была Top Eleven – Be a Soccer Manager (Football за пределами США), симулятор менеджера футбольной команды, распространяемая по модели freemium. Игра добилась большого успеха на Facebook, окупившись за три недели, и была портирована на Android и iOS в 2011 году. Затем компания создала игру Golden Boot для  iOS и Android, провела мягкий запуск Heroic: Magic Duel и в настоящее время ведет разработку нескольких других игр.

Головной офис Nordeus в Белграде, городе с богатой культурой и историей, собрал специалистов из 22 стран. Компания часто упоминается как лучшее место работы в Европе и известна щедрыми пожертвованиями в фонды различных гуманитарных организаций.

Два главных инженера этой студии, Йозеф Орос и Срдья Стетик-Козик, родились и выросли в Белграде. Они работают в команде Nordeus Central Tech из восьми сотрудников и отвечают за разработку инструментов и методов, используемых во всех играх Nordeus. При этом Срдья отмечает: «Все наши игры созданы в Unity».

Объединяйтесь под флагом DOTS на хакатоне

«Узнав о DOTS, мы тут же связались с Unity, чтобы опробовать этот стек и принять участие в разработке, — сказал Йозеф. — Мы всегда стремимся дать самое лучшее нашим игрокам, и производительность здесь играет важную роль, поэтому мы, естественно, заинтересованы во всем, что способно сделать наши игры быстрее».

Сотрудничество началось со встречи главных технических директоров Unity и Nordeus в Белграде. Nordeus была рада помощи в освоении новых технологий, а Unity искала варианты для проверки возможностей DOTS. Срдья добавляет: «Еще мы хотели сделать нечто классное и эпичное, что мог бы показать Йоаким Анте (сооснователь Unity). Поэтому для Unite Austin (2017) мы решили: а давайте сделаем битву в Heroic: Magic Duel с участием до 100 тысяч бойцов, и порвем зал! Мы были невероятно рады возможности».

Йозеф и Срдья были первыми пользователями DOTS в Nordeus. Они тратили около 90% своего времени на создание игровых систем, особенно систем рендеринга, перемещения бойцов и игровой логики. «DOTS от Unity позволяет нам создавать крутые заклинания с масштабными взрывами, которые вызовут бурную реакцию у аудитории», — говорит Йозеф.

Команда создала Nordeus Battle Demo для доклада на Unite Austin за два месяца, первые четыре недели из которых они занимались программированием и созданием прототипа. Одну из этих недель они провели в Копенгагене с сотрудниками Unity, работая в формате хакатона в одном помещении. «Работать с Джо и его командой было классно. Мы из первых рук узнали очень много о ECS, системе задач C#, о компиляторе Burst и об информационно-ориентированном программировании в целом», — добавляет Йозеф.

Прощание с объектно-ориентированным программированием

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

Неотъемлемой частью DOTS служит система задач C#, которая создает оптимизированный многопоточный код, управляет конкуренцией (потоками, выполняемыми в произвольном порядке, что приводит к непредсказуемым результатам) и оптимизирует переключение контекста для практически стопроцентной загрузки многоядерных процессоров. Другой компонент — компилятор Burst, основанный на LLVM с учетом особенностей вычисления, который использует задачи на C# для создания высокоэффективного машинного кода, оптимизированного для конкретных требований целевой платформы.

Йоаким Анте говорит: «Компилятор Burst учитывает вычисления и геометрию на глубоком уровне и способен их оптимизировать, что недоступно другим компиляторам. Он автоматически проводит векторизацию кода на C# для конкретной целевой платформы, и в результате получается гораздо более эффективный код, чем обычно». Компилятор Burst также позволяет избежать значительного количества ошибок интеграции, с которыми очень часто сталкиваются разработчики на этапе контроля качества.

Победа в битве за Megacity

В демонстрации Battle Demo, показанной на Unite Austin, используются компоненты Heroic: Magic Duel. Студия Nordeus использовала свой опыт работы с DOTS преимущественно для динамических игровых элементов, включая огромные количества автоматизированных юнитов на ограниченном ландшафте.

Это проложило дорогу к следующей задаче — команда Nordeus взяла на себя разработку Megacity, огромного открытого мира с 4,5 млн объектов, которые нужно отрисовывать, отсекать и загружать, 5000 летающих машин и 100 000 источников звука, воспроизводимых одновременно. И все это должно было работать как на мобильных устройствах, так и на ПК. «В случае Megacity мы использовали DOTS практически во всех системах, включая новую систему рендеринга и анимации, системы интерфейса и даже для звукового оформления. Все это можно использовать как в наших существующих играх, так и в разрабатываемых», — говорит Йозеф.

LWRP открывает двери мегаполиса мобильным устройствам

В программный доклад Йоакима Анте на Unite LA 2018 входила невероятно сложная демонстрация в реальном времени из Megacity. В нее были включены 4,5 млн отрисовываемых моделей, 5000 динамических автомобилей и 200 000 уникальных объектов архитектуры. Машины летели по сплайновым полосам, не сталкиваясь, а сам мир озвучивался 100 000 уникальных источников звука, включая неоновые вывески, вентиляторы кондиционеров и автомобили, издающие уникальные звуки. Это создавало насыщенную и реалистичную звуковую картину, и все это неплохо работало на смартфонах.

«Демонстрация Megacity была призвана показать сложную графику на мобильных устройствах с большой частотой кадров. Мы использовали LWRP и несколько измененных шейдеров, чтобы добиться максимального сходства с ПК-версией», — говорит Йозеф. Срдья добавляет: «Когда работаешь над игрой, устанавливающей новую планку качества на ПК, а затем портируешь ее на мобильные устройства, то обычно приходится перерабатывать большую часть: это связано с ограничениями производительности мобильных платформ. Но Megacity к таким случаям не относилась. DOTS позволила без всяких изменений кода перенести игру для ПК вместе со всей графикой и логикой на мобильные устройства».

Unity Lightweight Render Pipeline улучшает рендеринг реального времени за счет оптимизации освещения и шейдинга. В системе используется однопроходный упреждающий рендеринг с одним источником света, дающим тень, и с отсечением света на каждый объект (при тенях от всех источников света) за один проход, что снижает количество вызовов отрисовки.

Вложенные префабы и прыжок в DOTS

«Демофильм Megacity — это еще и демонстрация на Unity, где мы впервые использовали вложенные префабы, и нашим разработчикам это очень понравилось», — говорит Йозеф. Например, этот метод позволяет создать большое здание, которое будет состоять из множества префабов комнат, которые, в свою очередь, будут состоять из множества префабов мебели, и так далее. Разработчики могут разбивать префабы на несколько экземпляров для эффективности работы, многократно использовать любые объекты, большие или маленькие, и работать над различными элементами контента одновременно.

У Nordeus весьма амбициозные планы на разработку продуктов, при этом они на 100% полагаются на Unity и DOTS в программировании. Как говорит Срдья, «Если вы хотите перейти на Unity DOTS, то просто переходите. Не бойтесь забыть о большинстве того, чему вы научились в области объектно-ориентированного программирования!»

«DOTS — это принципиально новый способ мышления, но всего лишь за неделю или две мы сумели разобраться со стеком, и эффективность работы программистов увеличилась, а когда нужно интегрировать старый код, ECS позволяет сделать это с легкостью».

Srdja Stetic-Kozic, Senior Software Engineer

«Узнав о DOTS, мы тут же связались с Unity, чтобы опробовать этот стек и принять участие в разработке. Мы всегда стремимся дать самое лучшее нашим игрокам, и производительность здесь играет важную роль, поэтому мы, естественно, заинтересованы во всем, что способно сделать наши игры быстрее».

Jozef Oros, Software Engineer

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