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

Вернемся к марту 2019 года. Мир был нормальным, и у меня появилась возможность посетить конференцию, которую хочет посетить каждый разработчик игр, GDC. Game Developer Conference (GDC) — ежегодная конференция, проводимая в Moscone Center в центре Сан-Франциско. В том году на GDC было сделано несколько громких заявлений: Google объявил Stadia своей игровой платформой для онлайн-игр, Facebook решил стать владельцем мобильных игр, и на каждую презентацию Marvel Spiderman было невозможно попасть, не ожидая часами в очереди. Но самый интересный для меня доклад был сделан двумя инженерами Unity по проекту DOTS. Приступая к презентации, я понятия не имел, о чем этот проект, но я понял, что то, чего он пытался достичь, было очень амбициозным. Спустя три года давайте посмотрим, что нового появилось в этом проекте, и поймем, почему сейчас он как никогда актуален для разработчиков игр.

Что такое DOTS?

DOTS расшифровывается как Data-Oriented Technology Stack и создан для повышения производительности. Частично это достигается с помощью пакетного компилятора для преобразования кода C#, созданного на основе работы, в собственный код. Для этого они используют LLVM, о котором я слишком много знаю из своего курса компилятора во время учебы. Переход от этого объектно-ориентированного дизайна к дизайну, ориентированному на данные, позволяет создателю повторно использовать код, а другим легче понять работу. Все это ради одного главного преимущества игры: многопоточной обработки. Но стоит ли это изменение парадигмы создания игр?

Unity DOTS состоит из 3 основных частей:

Крошечный проект

Tiny Project от Unity использует фреймворк DOTS для создания очень маленьких игр. Подумайте о ~ 100 КБ для всей игры. Один из вариантов использования этих двух фреймворков — когда вы думаете о мобильных играх, интерактивной рекламе и мгновенных социальных взаимодействиях. Хотя это текущие примеры, если вы думаете о том, какие технологии появятся на горизонте, то атрибуты, которые DOTS и Tiny Project идеально подходят для таких технологий, как AR и VR. Для запуска игр на этих платформах требуется гораздо больше данных и обработки, поэтому меньшая и более быстрая обработка настолько важна. Запаздывающая AR-игра портит впечатление и ломает мир, в который вы пытаетесь поместить своих клиентов.

Текущее состояние

На момент написания статьи в марте 2021 года как DOTS, так и Tiny Projects все еще находятся в стадии предварительной версии. Чтобы быть в курсе текущего состояния проектов, проверьте здесь:

Сравнение WebGL

Посмотрите на две ссылки ниже и посмотрите, заметите ли вы какие-либо различия в производительности.

Обратите внимание на время загрузки. Как видите, крошечный проект загружается намного быстрее!

Заключение

В мире игровых движков всегда так много всего происходит, что можно легко пропустить действительно крутые проекты, подобные этому. DOTS и Tiny открывают людям множество возможностей для творчества. Я рад видеть, что люди могут создать с помощью этих инструментов.

Подпишитесь на меня в твиттере, чтобы узнать больше!