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

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

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

Проект

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

Цель

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

Платформы

Android, iOS, ПК

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

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

Регион

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

Информационно-ориентированное программирование ускорило вывод Megacity на мобильные устройства

С ростом количества ядер процессоров высокая эффективность многопоточности становится одной из самых необходимых функций любой вычислительной платформы. Решением 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

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

Согласен