Аватар Пограничье Пандоры – большое интервью разработчиков технологий
Великое интервью разработчиков Уголка Пандоры для Аватара на грани технологий
Аватар: Пределы Пандоры почти как-будто появилась из ниоткуда и стала одной из самых красивых игр года, где знаковая обстановка фильмов идеально сочетается с почти стилём Crysis и новым улучшенным движком Snowdrop – который был анонсирован на E3 десять лет назад вместе с игрой The Division. Лучшее из всего, Аватар – это техническое триумф не только на ПК, где он тянет графические возможности до предела, но и на консолях – где он удивительно хорошо работает на PlayStation 5, Xbox Series X и даже Series S.
Студией, отвечающей за эту игру, является Ubisoft Massive, и недавно Алекс Батталия из Digital Foundry смог побеседовать с двумя ключевыми фигурами в ее разработке: Николаем Стефановым, техническим директором игры, и Олександром Кощло, архитектором рендеринга движка Snowdrop.
Следующая беседа представляет собой увлекательный взгляд на то, как команда Massive смогла разработать движок Snowdrop, воплотить мир Пандоры в видеоигре и создать игру такого типа и качества, который не является уже таким обычным, как раньше.
Как обычно, вопросы и ответы были незначительно изменены для большей ясности. Наслаждайтесь!
Digital Foundry: Первое, что я заметил, играя в игру, это то, что вы используете совершенно новую систему глобальной иллюминации (GI). С тех пор, как появились RT-способные GPU в 2018 году, мы видели множество различных техник, позволяющих достигать аппаратной трассировки лучей, и я хотел бы узнать, как это реализовано в этой версии Snowdrop и какую роль вы сыграли в его разработке.
- Activision Blizzard решает сексистский иск за 44 миллиона фунтов
- Poppy Playtime выходит на PS4, PS5 и Switch – вот когда вы см...
- Devs Zelda Tears of the Kingdom о том, почему мы, скорее всего, не ...
Олександр Кощло: Я являюсь архитектором рендеринга здесь, в Snowdrop, поэтому моя задача – искать общее направление развития графического рендерера. Я потратил некоторое время на разработку BVH (объемной иерархии ограничивающих объёмов) для нашей трассировки лучей, а другие члены нашей команды уделяли время освещению, “лучам”… У нас есть представление геометрии с низкой детализацией и средними материалами в нашем мире трассировки лучей. Это комбинация трассировки по экрану, аппаратной трассировки по миру и трассировки с использованием зондов для получения правильного освещения.
Таким образом, процесс состоит в том, чтобы выполнить трассировку по экрану. Если мы попали во что-то, осветить попадание, если нет, продолжим с аппаратным лучом в мир трассировки лучей. В зависимости от эффекта, который может быть диффузным глобальным освещением или зеркальными отражениями, длина луча различна. Итак, если луч никуда не попал, мы используем результат зондов. Если вы попали во что-то, мы освещаем это с помощью наших локальных источников света, солнечного света и также отзывы от зондов. Зонды являются как запасным вариантом для пропущенных лучей, так и источником вторичного света. Таким образом, мы получаем обратную связь и множественные отражения.
Николай Стефанов: Думаю, одна из вещей, которую вы заметите у нас, это то, что мы – все шведы, – довольно плохи в придумывании названий. Поэтому у нас нет красивого названия для этого. Но я думаю, что это действительно здорово и универсальная система, которая позволяет нам использовать все различные техники, которые мы использовали до сих пор. Так, например, для The Division мы использовали основанное на зондах освещение, и теперь мы продолжаем использовать его как кэш для вторичных отражений, трассировку лучей в пространстве экрана и аппаратную трассировку лучей. Конечно, мы также используем аппаратную трассировку лучей. Но также одной из вещей, о которой мы должны упомянуть, является то, что у нас также есть резервное вычисление шейдеров для этого, для видеокарт, которые не поддерживают аппаратное ускорение RT.
Олександр Кощло: Немного сложно различать между трассировкой лучей в пространстве экрана и мировыми лучами, потому что я обычно называю мировые лучи “аппаратными лучами”, но их также можно выполнять в программном обеспечении, и когда речь идет о зондах, я бы хотел подчеркнуть, что это реально работающие в реальном времени зонды с трассировкой лучей. Здесь ничего не просчитывается заранее.
Digital Foundry: Это то, о чем я тоже задавался вопросом, потому что я предполагаю, что вы также используете зонды для прозрачности, и если бы вы вернулись к системе PRT (предварительной передачи излучения), которая была у вас ранее, они бы определенно не выглядели столь высококачественными, как здесь.
Николай Стефанов: В точности так. Зонды в этом случае больше похожи на кэш освещения, можно сказать, а не на что-то предварительно просчитанное. А если говорить о “предварительном просчёте”, вот одна из вещей, которая также действительно замечательна в этой системе – мы можем пропустить все дорогостоящие просчёты, так как мир Пандоры настолько подробный и имеет гораздо больше регионов, чем в обоих играх из серии The Division, причём для совсем другой обстановки. Вначале разработки мы использовали систему PRT, которая требовала нескольких дней на просчёт всего уровня; даже просто проведение итераций по всему миру занимало целые века. Поэтому это действительно хорошо иметь систему, которая позволяет перемещать объекты и видеть изменения в реальном времени, особенно когда речь идёт об интерьерах.
Digital Foundry: Да, игра начинается в интерьерах, и уже сейчас можно заметить это по фонарям и персонажам, которые ходят внутри и фактически переосвещают мир по ходу движения. Как говорилось в материалах перед выпуском игры, есть трассировка лучей для теней. Можете объяснить, как это работает?
Олександр Кошло: Как я уже упоминал ранее, у нас есть геометрия низкого уровня детализации для нашего BVH, что означает, что мы не можем использовать RT для точных теней… но мы используем его двумя способами. Один – это тени контакта, короткие лучи в направлении света, чтобы увидеть, попадаем ли мы на какую-либо поверхность и получаем контактную жёсткую тень. А наоборот – дальние тени. Всё, что находится за пределами наших лучевых каскадов, трассируется лучами, и так мы получаем дальние тени.
Николай Стефанов: Это используется, например, для больших каменных арок или подвесных островов, которые находятся в видухах, и это крайне важно для нас, чтобы получить эту детализацию. Мы также делаем трассировку по высотке, если я правильно помню.
Олександр Кошло: Мы трассируем по высотке, и также добавили импостеры в мир трассировки. То есть это аппаратная трассировка коробок. И как только мы попадаем на эти коробки, они трассируются программными путем против просчитанного бита для дерева.
Николай Стефанов: Вы сможете увидеть это во многих наших технологиях, где мы комбинируем наилучшие части существующих техник для достижения наилучшего возможного результата.
Digital Foundry: Я играю только на ПК, но меня очень интересует, как вы масштабируете это, чтобы глобальное освещение работало хорошо на Xbox Series X, Series S и PlayStation 5, так как у аппаратных средств, конечно, есть свои ограничения в том, насколько их можно нагрузить.
Олександр Кошло: Могу сказать, что это было вызовом, но есть множество параметров, которые можно изменять, чтобы адаптировать их под разное качество и аппаратуру. Количество лучей, разрешение результата, качество сглаживания шумов, точность результатов и длина лучей могут быть разными. У нас есть определённые компромиссы. Если нужно трассировать быстрее, мы можем пожертвовать точностью, и тогда используем это. Мы имеем возможность вносить большие или очень малые изменения в параметры.
Николай Стефанов: Я также скажу, что помимо производительности на графическом процессоре, одной из вещей, где нам пришлось делать масштабирование, является память, особенно в случае с Series S, где доступно меньше памяти, чем на других целевых платформах. Например, мы загружаем мир трассировки на малое расстояние, поэтому некоторые дальние тени не будут такими точными, как на других платформах. Некоторая геометрия, которую мы используем для BVH и трассировки лучей, имеет более низкую детализацию (уровень деталей) по сравнению с другими платформами. И подобные вещи.
Digital Foundry: Разумное масштабирование, так что это относится также к глобальному освещению. А что насчёт других видов трассировки, о которых вы упоминали, например, теней от местности или контактных теней, присутствуют ли они также на консолях?
Олександр Кошло: Да. На самом деле, все эффекты идентичны на всех платформах, хотя на ПК мы предлагаем больше опций для отключения или включения различных вещей.
Digital Foundry: То есть, говорите о упрощенном мире в BVH? Какие аспекты, такие как листва или анимированные персонажи, входят в него?
Nikolay Stefanov: Я думаю, что большая часть геометрии по умолчанию включена в мир трассировки лучей; мы обычно удаляем очень, очень маленькие вещи. Например, не все трава будет в мире трассировки лучей, не все маленькие микродетали будут в мире трассировки лучей. Персонажи там есть или, по крайней мере, большинство из них. В целом, решение о том, хотят ли они, чтобы определенные вещи были там или нет, принимают технические художники.
Есть несколько моментов, которые, думаю, вам покажутся интересными. Например, если у вас есть очень маленькая и яркая вещь, может быть лучше удалить ее из трассировки лучей, чтобы уменьшить шум. Также важно не иметь каждый кусочек геометрии в мире трассировке лучей из-за ограничений памяти. Подводя итог, по умолчанию все находится в мире RT, но есть определенные вещи, которые технические художники могут решить отключить индивидуально и удалить их из мира RT.
Digital Foundry: Итак, вы упомянули маленькие, яркие вещи. В этом контексте хотелось бы узнать больше о поддержке световых излучений. Как это работает?
Oleksandr Koshlo: Просто работает. Это часть глобальной освещенности, где, если луч попадает на светящуюся поверхность, он будет вносить свой вклад в освещение. Но очевидно, если это маленькая поверхность, и мы рандомно направляем лучи по всей сцене, мы рискуем, что лучи попадут на маленькую поверхность и вызовут много шума. Поэтому мы рекомендуем нашим художникам удалять маленькие светящиеся поверхности из мира трассировки лучей.
Nikolay Stefanov: Если я могу кратко объяснить это в терминах трассировки пути, то мы используем специальную технику, называемую “управляемыми путями”. Практически на первом луче, который вы попали, вы аналитически оцениваете освещение. Таким образом, вы не выполняете полный метод Монте-Карло для трассировки пути. Но это применимо только к аналитическим источникам света. В случае светящихся поверхностей, как уже сказал Саша, мы полагаемся на случайность лучей. Вот почему это может вызывать больше шума, чем аналитические источники света. Но светящиеся поверхности работают, и мы полностью поддерживаем их.
Digital Foundry: Вы говорите о направлении лучей? Исследовал ли проект использование ReSTIR или ReGIR, чтобы улучшить результаты случайности?
Oleksandr Koshlo: Мы исследовали. Мы действительно провели много исследований в области RT-техник и техник шумоподавления. Конкретно ReSTIR мы не использовали. Мы продолжаем оценивать все новшества в области RT. Но я думаю, что у нас работают хорошие специалисты по шумоподавлению, которые без устали работают над этой довольно сложной проблемой, и мы довольны конечным результатом.
Nikolay Stefanov: Я думаю, что если вы хотите создать игру для Xbox Series S, комбинация техник, которые мы используем, это примерно то, к чему вы придете. Какой-то вариант глобальной освещенности первичного отражения, а также какой-то кэширования в пробах и т.д. Я думаю, что ReSTIR и другие техники, хотя они являются очень многообещающими, сложно заставить их работать и производить хороший результат на консолях, особенно при 60 кадрах в секунду.
Digital Foundry: Когда вы начали предоставлять художникам возможность работать с трассировкой лучей? Было это на начальных этапах проекта? Или это случилось на полпути, заменяя старую систему PRT?
Nikolay Stefanov: Немного раньше, чем на полпути, но, как я уже сказал, мы начали с PRT, или, на самом деле, мы еще дальше вернулись к движку Dunia на какой-то момент, чтобы сократить время обжарки. Переключение на трассировку лучей было для нас довольно простым, потому что качество RT гораздо лучше, чем у предварительнопресчитанных подходов. Это было сделано в какой-то момент в предпроизводстве. На визуальную сторону это почти не повлияло.
Одна из интересных особенностей при создании игры с трассировкой лучей – это использование разных правил для настройки активов. Например, одно из требований – убедиться, что интерьеры полностью герметичны, иначе свет будет проникать извне. Нам также необходимо, чтобы объекты были двусторонними. Поэтому есть вещи, которые вы раньше не делали, где вы использовали односторонние стены GameTopics, а теперь вам приходится сделать их двухсторонними, чтобы все работало правильно с зондами и всем остальным.
Олександр Кошло: Теперь геометрия должна гораздо точнее отображать реальный мир.
Digital Foundry: Относительно зондов, как они размещаются в мире? Это просто сетка? Или это в определенной степени селективное размещение?
Олександр Кошло: Это сетка, которая немного селективна [все смеются]. Итак, у нас все еще есть некоторые эвристики, на каком уровне размещать сетку и где сделать смещение в зависимости от того, находимся ли мы внутри помещения или на открытом воздухе, какие объекты у нас там есть, какие размеры пространства. Но это каскадная сетка – таким образом, у нас есть четыре каскада сетки, с одинаковым разрешением, но каждый последующий охватывает гораздо большую дистанцию.
Digital Foundry: Относительно затенения прозрачности, очевидно, что у вас есть отражения на воде, и ГИ проникает на прозрачные поверхности и берет с них – но как насчет стекла? Как там используется затенение?
Олександр Кошло: У нас все еще есть словари кубов. И мы все еще полагаемся на них для этих видов стеклянных поверхностей. Там также есть местная преломление, которое можно увидеть в воде или на полностью прозрачных стеклянных поверхностях, которое основывается на экранных пространственных данных. Поэтому в настоящее время не поддерживаются лучевые преломления или отражения от полупрозрачных объектов.
Digital Foundry: На консолях вы используете свою собственную предварительно созданную иерархию объемных данных (BVH), которую вы загружаете? Как строится эта иерархия?
Олександр Кошло: У нас есть собственное решение для иерархии объемных данных на консолях. Поскольку мы не полагаемся на их API, мы предварительно создаем нижнюю иерархию BVH для сеток для получения более высокого качества. Затем мы создаем наше собственное решение для BVH таким образом, чтобы мы могли создать верхнюю иерархию BVH на ЦП – в то время как с помощью DXR и существующих API вы отправляете все экземпляры на ГП, и ГП создает структуру ускорения. Мы полагаемся на кэширование и перестраиваем только то, что изменилось. Это позволяет нам эффективно строить верхний уровень на ЦП и экономить некоторое время ГП в этом.
Digital Foundry: Это увлекательно, так как обычно это делается асинхронно на ГП с помощью асинхронного вычисления. Итак, что асинхронно выполняется на ГП? В результате это, вероятно, зависит от платформы, но я очень любопытен, какие компоненты выполняются асинхронно на ГП.
Олександр Кошло: На самом деле это множество вещей. Мы часто используем асинхронное вычисление. Мы его любим. Мы выпускаем только DX12 на ПК, поэтому у нас на самом деле нет различий в платформах в том, что использует асинхронность. Формирование объемных данных полностью происходит асинхронно; трассировка зондов и освещение также выполняются асинхронно. Пока трассировка g-буфера выполняется на графической очереди, трассировка зондов выполняется асинхронно. ГП-отбраковка также выполняется асинхронным вычислением, а также некоторые другие, более мелкие вещи, поэтому все работает довольно безупречно.
Digital Foundry: На ПК с API трассировки лучей DXR у вас есть встроенные варианты 1.0 и 1.1. Как вы это делаете на ПК?
Олександр Кошло: Мы используем вариант 1.1 встроенный. Для нас это было действительно важно, так как мы решили с самого начала, что трассировка лучей будет работать для нас, и мы можем выпустить игру, избегая всех расхождений в затенении. Таким образом, DXR 1.1 позволяет нам делать это очень похожим образом на то, как мы делаем это на консолях. Это в основном просто изменение инструкций. Для средних материалов этого более чем достаточно для нас.
Digital Foundry: Это как один материал на объект или…?
Олександр Кошло: Это один материал на сетку. Часто наши объекты состоят из нескольких сеток, поэтому внутри объекта все же есть некоторое разнообразие.
Digital Foundry: Итак, каковы режимы на консоли и как они работают?
Николай Стефанов: Мы поддерживаем режим “предпочтение производительности” на PS5 и Xbox Series X с частотой 60 кадров в секунду. Игроки также могут выбрать режим “предпочтение качества”, который нацелен на 30 кадров в секунду. Здесь мы немного улучшаем вещи и внутренне используем более высокое разрешение. На Series S мы нацеливаемся на 30 кадров в секунду, и на этой консоли нет режима 60 кадров в секунду.
[Наш полный разбор технологии консоли Avatar уже был проведен Томом, где подробно рассматриваются сравнения режимов по графике и производительности, включая то, как справляется Series S.]
Digital Foundry: Так в прошлом Snowdrop был одним из немногих движков, которые популяризировали временную масштабирование, так как в этот раз вы это делаете?
Николай Стефанов: Мы используем FSR на консолях для масштабирования и временного сглаживания, так же, как на ПК. По умолчанию, я думаю, вы, вероятно, уже заметили, что это FSR. На ПК мы также поддерживаем DLSS. Мы также работаем с Intel над поддержкой последней версии XeSS, которая должна выйти в виде обновления – надеюсь, скоро.
Digital Foundry: Использует ли игра на консолях динамическое масштабирование разрешения? Я на самом деле не помню, делал ли это Division?
Олександр Кошло: Division использовало динамическое масштабирование разрешения, и мы также используем его в Avatar.
Николай Стефанов: Это одно из отличий между режимами “качество” и “производительность”. Так что в режиме 60 кадров в секунду мы позволяем внутреннему разрешению немного снижаться. Это одно из основных отличий, которые вы увидите.
Digital Foundry: На ПК есть опция рядом с масштабированием разрешения, говорящая о смещении разрешения. Можете объяснить, что это делает?
Николай Стефанов: Да, конечно. Есть статья с глубоким вниканием в функции ПК, где рассказывается об этом и многом другом… о метре видеопамяти, бенчмарке для ПК и т. д. Она в основном управляет тем, на каком внутреннем разрешении вы рендерите и качеством масштабирования.
[Масштабирование основано на текущем разрешении дисплея. При разрешении ниже 4K смещение в сторону более высоких разрешений рендеринга, при 4K то же самое, при разрешении выше 4K смещение в сторону более низких разрешений рендеринга].
Digital Foundry: Одно, что я заметил, это то, что плотность мира весьма высока с точки зрения количества растительности. Использовали ли вы какие-либо новые функции DX12 и/или возможности, предоставленные RDNA, такие как шейдинг примитивов или меш-шейдинг?
Олександр Кошло: Мы работаем с меш-шейдингом на консолях. Таким образом, есть две вещи, которые способствуют высокой плотности геометрии в нашем мире. Одно из них – геометрический конвейер GPU, который является новым в Avatar и поддерживает наш конвейер процедурного размещения. Это создает много экземпляров геометрии, а затем мы используем GPU, чтобы отсечь то, что находится вне экрана, и только отображать то, что находится на экране. Также мы разбиваем геометрию на небольшие единицы, которые мы называем мешлетами, и используем родные аппаратные возможности, такие как шейдинг примитивов и меш-шейдинг, чтобы отображать их на экране. Мы используем дополнительный этап отсечения, чтобы отбросить неотображаемые мешы. Все это действительно улучшает производительность при отображении геометрии.
Digital Foundry: Есть ли путь меш-шейдинга в версии для ПК?
Олександр Кошло: Нет, мы отказались от этого в какой-то момент, так как эта технология новая, и есть определенные сложности в поддержке различных видеокарт и аппаратных средств, доступных на ПК. Поэтому пока мы решили начать с более простого пути, полностью поддерживающего ее сначала на консолях.
Николай Стефанов: Но на всех ПК мы все еще используем конвейеры, основанные на GPU для отсечения и многого другого. Так что это просто отсутствие пути мешлетов.
Digital Foundry: Можете ли вы рассказать о конвейере, основанном на GPU, и как он работает? В первый раз я вспомнил о нем после презентации Себа Аалтонена для AC Unity, как это работает?
Николай Стефанов: Итак, как вы сказали, плотность деталей мира – это то, чего мы хотели достичь, особенно учитывая, что Пандора является главной героиней в фильмах, верно? Мы начали с разработки систем для определения размещения для определенного биома. Есть системы на основе правил, которые говорят нам, когда вы близко к воде, какие виды растений там растут, при наличии такого дерева, какая другая флора его окружает и т. д. Их работа происходит практически в реальном времени, поэтому вы можете изменить правила, а затем мир будет перезаполняться в течение нескольких секунд.
Было два вызова с этим. Одно из них заключается в том, что мы имеем почти в десять раз больше деталей, чем в наших предыдущих играх. И другой вызов заключается в том, что нам нужно показать эту детализацию на большом расстоянии с помощью разработанных нами видовых систем. Поэтому единственный способ справиться с этим типом детализации – перейти к графическому конвейеру на основе GPU, и в этом нет ничего особенно сложного.
В основном они не работают с каждым активом по отдельности, а работают с большими кусками геометрии, секторами размером 128х128 метров. Графический конвейер на GPU пропускает весь сектор, проходит через определенный путь, который удаляет несущий сектор, на котором фактически говорит: “виден ли этот сектор вообще?”, затем проводит отдельный процесс выборки для экземпляров, включая мешлеты для конкретных частей меша.
Затем он создает список вещей, для которых GPU должен выполнить вершинный шейдер – это довольно сложное выполнение вершинного шейдера, можно сказать. Вы бы ошарашены, узнав то, что наши технические художники делают в вершинных шейдерах. В основном мы отрисовываем их в основные буферы G, добавляем освещение и так далее. Но для нас важно сохранить гибкость, которую дает вершинный шейдинг, потому что он используется для всех интерактивных растений, которые вы видите в игре: то, что перемещается, то, что гнется, как двигаются эти желтые растения….
Цифровой Фаундри: О да, странные конические растения, которые сжимаются, когда к ним прикасаешься.
Николай Стефанов: На самом деле все это делается в вершинных шейдерах. И если бы вы просто выполняли их для всего, то производительность упала бы. Поэтому для этого важна поддержка мешлетов. Вот в общих чертах как работает наша выборка.
Олександр Кошло: Что касается конвейера выборки экземпляров на GPU, у нас нет никаких отличий от стороны актива. Поэтому, когда создается актив, он не знает, будет ли он процедурно размещен, а затем отобран GPU, или ручно размещен и пройдет через другую систему, так что в этом аспекте все прозрачно.
Николай Стефанов: Еще одна вещь, которую мы сделали для этого проекта, это видовая система. Итак, у нас есть несколько этапов. Вещи, которые находятся близко к вам на разумном расстоянии, представлены детализированной геометрией, со временем они загружаются из памяти. После этого мы переходим к импостерному представлению на втором этапе расстояния, который также полностью управляется GPU для целых секторов. Импостеры – это стандартные импостеры с нормальными картами, хотя мы также поддерживаем тенирование на них. А затем, по мере удаления дальше, у нас есть третий этап, даже импостеры выгружаются, и у нас остается представление о супер-больших вещах: арках, плавающих островах и так далее. Опять же, все это управляется GPU: выборка, отрисовка и т. д.
Цифровой Фаундри: Меня по-настоящему потрясает, что оно даже работает без мешового шейдинга на ПК на основе вашего описания, значит, оно должно быть достаточно оптимизировано даже без этого.
Олександр Кошло: Честно говоря, мне явно было непросто добиться того, чтобы мешовый шейдинг был быстрее, чем обычный шейдинг. Я потратил на это немало времени, и все равно ванильная растеризация очень быстрая и работает очень хорошо.
Цифровой Фаундри: Вы разговаривали о правилах размещения активов, но как создается сам ландшафт?
Николай Стефанов: Так что для этого проекта, как и для любого качественного открытого мира, я думаю, ключевым является обеспечить хорошее соотношение ручного содержимого – когда у вас есть дизайнер, который решает, каким будет уровень и каким будет ландшафт, – а затем вы оставляете компьютеру делать детали, такие как размещение объектов и эрозия, которую компьютер может делать гораздо быстрее, чем человек.
Для нас создание мира достигается с помощью того, что мы называем уровневыми шаблонами. Возьмем, например, домашнее дерево в игре. Это один конкретный уровневый шаблон, внутри которого есть много ручных деталей, но также есть художники, которые руками создают ландшафт вокруг него. Наш редактор уровней в Сноудроп позволяет нам взять этот уровневый шаблон и перемещать его по миру, чтобы ручно созданный ландшафт соединился с более крупным ландшафтом, который является базовой платформой уровня.
В общем, вот как мы делаем это; у нас есть базовая плита, созданная дизайнером игры с помощью процедурных систем, но также с большим количеством ручной работы для направления игрока. У нас есть системы эрозии, распространения растений… И поверх всего этого мы размещаем шаблоны уровней, некоторые из которых размещаются вручную в точном месте, ландшафт с ними смешивается, и все это игровое пространство получается гармоничным. У нас также есть специальные шаблоны уровней, которые также размещаются процедурно или рассеиваются по всему уровню, чтобы упростить жизнь дизайнерам игры, которые, вероятно, не хотят размещать горные образования вручную тысячи раз.
Digital Foundry: Я был немного удивлен размером мира, потому что, когда я добрался до домашнего древа, посмотрел на карту и подумал: “О, я прошел даже не четверть всего этого мира”.
Николай Стефанов: У нас есть три различных региона. Я думаю, вы все еще находитесь в первом биоме. Каждый из них немного больше, чем карта в The Division 2.
Digital Foundry: Одна вещь, которую я заметил на ПК, это то, о чем я говорю уже несколько лет. Мне грустно, что мне приходится вообще об этом говорить, но я хочу знать о компиляции PSO. Интересно, как игра справляется с этим на ПК, потому что мы видим подтормаживания во многих других релизах на ПК.
Николай Стефанов: Фактически мы предварительно создали PSO, и мы отгрузили… Я думаю, около 3 ГБ PSO на ПК, примерно так. Это немного безумно.
Олександр Кошло: Здесь просто много вариаций. Мы также по-разному обрабатываем загрузку объектов. Я не знаю, я должен ли показывать все карты здесь [все смеются].
Олександр Кошло: Дизайнеры игры не должны испытывать тормозов в игре. Если нужна компиляция PSO, это означает, что объект будет загружен позже. Мы рассматриваем шаг компиляции как часть загрузки объекта. Технически может быть ошибки в коде, вызывающие торможение PSO, но мы следим за этим. Это сообщается внутренне, и мы это отслеживаем. Но это не норма. Мы очень-очень серьезно относимся к этому.
Digital Foundry: Одна вещь, которую я заметил, когда смотрел в конфигурационный файл, так это наличие VRS (переменное затенение) – поддерживает ли игра это действительно?
Олександр Кошло: Да, поддерживает. Мне нужно проверить настройку, но поддержка есть.
Digital Foundry: Используется ли это на консолях Xbox Series?
Николай Стефанов: Я не думаю, что используется.
Олександр Кошло: Я не думаю, что мы используем это на консолях серии в данный момент.
Digital Foundry: Есть ли какие-то особенные части проекта, на которые вы особенно гордитесь?
Николай Стефанов: Одна из вещей, на которую я хочу обратить ваше внимание, это реализация звука в игре. Это что-то, чем мы все коллективно очень гордимся. Мы используем трассировку лучей для распространения звука. Когда звукоизлучатель затемнен или звук отражается, все это симулируется в нашем мире трассировки лучей. Я надеюсь, что у нас будет возможность поговорить об этом на GDC в следующем году – это действительно крутая система.
Еще одна безумная вещь заключается в том, что каждое отдельное растение, которое вы видите на земле, на самом деле имеет небольшой “триггерный объем”. Так что, когда игровой персонаж или животное проходят через них, они становятся локализованным источником звука. Так что, если вы слышите что-то шуршащее, это означает, что там действительно есть животное, проходящее через растения, это не просто зацикленная окружающая атмосфера. Значит, если у вас есть хорошая пара наушников, вы можете по-настоящему в этом насладиться.
Еще одна вещь, на которую я горжусь, это бенчмарк на ПК. В нем очень детализированные графики, которые, я думаю, вам будут интересны. У нас есть теги профилирования в нашей игре, которые сообщают нам, сколько времени занимает прохождение трассировки лучей на графическом процессоре, сколько времени занимает прохождение G-буфера, сколько времени занимает обработка пост-обработки и так далее. И есть страница деталей, где вы сможете видеть все эти вещи отдельно в рамках бенчмарка. Мы также поддерживаем автоматизацию бенчмарка, поэтому вы можете запустить его через командную строку, и затем он предоставит вам все эти детали в CSV-файле. Бенчмарк также будет включать использование центрального процессора. Он покажет вам, сколько времени заняло обработку агентов, обнаружение столкновений и так далее. Если вы любите статистику и графики, то думаю, что этот бенчмарк будет для вас.
Олександр Кошло: Я думаю, в целом я просто горжусь тем, как всё вместе сработало, и тем, что нам удалось уместить всё это на консолях с частотой 60 кадров в секунду. Наша философия давно состоит в том, чтобы не полагаться на какой-то “горячий тренд”. У нас здесь есть трассировка лучей, но только для того, что нам важно, для того, что значительно улучшает визуальное качество и несёт приемлемую производительность для нас. Мы интересуемся вещами, которые стоят своих денег. И мы стараемся работать не только над сложными вещами, но и над базовыми, чтобы всё хорошо сочеталось. Думаю, что мы снова справились с этим. И я определенно надеюсь, что вам понравятся результаты.
Николай Стефанов: У меня к тебе вопрос, Алекс. Ты пробовал посмотреть на эффект движения?
Digital Foundry: [Смеется] Да. Я действительно посмотрел на эффект движения. Он гораздо лучше, чем в трейлере. [Все смеются]
Digital Foundry: Это просто небольшой отзыв. Пожалуйста, добавьте ползунок для управления эффектом движения, потому что в игре сейчас есть только два режима: включен и выключен. Было бы неплохо увеличить или уменьшить его на основе личных предпочтений. Многие эффекты движения пропадают при высоких частотах кадров, и некоторым людям может понравиться большая плавность, особенно в игре, которая имеет кинематографические амбиции.
Николай Стефанов: Идея хорошая, я думаю. Мы можем обсудить это с разработчиками и посмотреть, можно ли реализовать это позже. Думаю, некоторым людям действительно нравится эффект движения. Забавно, что наш креативный директор, Магнус Янсен, является большим фанатом Digital Foundry, поэтому как только он увидел, что вы говорите об эффекте движения, сразу обратился к нам.
Digital Foundry: Вы упомянули, что в рамках бенчмарка вы записываете данные о использовании ЦП, которые предоставляете пользователям. Можете подробнее рассказать, как вы используете многоядерные ЦП и многопоточность эффективным способом? Потому что это всё ещё большая проблема в компьютерных играх.
Николай Стефанов: Конечно, мы можем подробнее рассказать. Так вот, с помощью Snowdrop и Avatar мы работаем с так называемым графом задач. Вместо традиционной одной игровой поток мы разбиваем работу на отдельные задачи с зависимостями, и это позволяет нам использовать многоядерные ЦП гораздо более эффективным образом. Фактически, игра работает не так хорошо, если у вас не много ядер.
Мы используем все ядра, кроме одного, которое оставляем для операционной системы. Для остальных мы запускаем несколько задач, в зависимости от нагрузки. Одним из плюсов Snowdrop является гибкость в запуске таких задач, и мы уделяем много времени тому, чтобы разрушать зависимости, чтобы, например, НИПы могли обновляться параллельно, чтобы пользовательский интерфейс мог обновляться параллельно, чтобы физика тоже могла обновляться параллельно. Так что, надеюсь, вы увидите хорошую оптимизацию ЦП.
Digital Foundry: Я это сразу заметил. Ещё очень кратко, вы поддерживаете генерацию кадров FSR 3 Frame. И в будущем, надеюсь, будете поддерживать XeSS. Рассматриваете ли вы использование DLSS 3 Frame Generation?
Николай Стефанов: У нас пока нет конкретных планов на использование DLSS 3 Frame Generation… но мы очень близко работаем с Nvidia, так что, надеюсь, вы услышите о нашем сотрудничестве в будущем.
Digital Foundry: В мире есть некоторые растения, которые можно сломать. Как это реализовано?
Николай Стефанов: Это продолжение системы, которую мы использовали в The Division. Хотя у большинства объектов есть поддержка разрушений в той или иной форме, самая простая форма разрушения заключается в переходе к разрушенной версии шейдеров. Вы можете увидеть это, когда подходите к загрязненной зоне, например, видите разрушенные растения и т.д., а затем, когда побеждаете базы, природа очищается, и они возвращаются в исходное состояние.
Некоторые более крупные растения поддерживают то, что мы называем “сеткой разделения”, и я думаю, что большинство из них уже “предварительно разрезаны”. Здесь в DCC (приложениях для создания цифрового контента), таких как Maya или 3DS Max, вы определяете, как они должны быть разрезаны. Затем, когда мы обнаруживаем попадание, мы берем этот конкретный экземпляр растения из графического конвейера, управляемого графическим процессором (GPU), и преобразуем его в более традиционный объект, управляемый центральным процессором (CPU), который затем разделяется и уничтожается. Затем мы выполняем физическую симуляцию для частей, которые из него выпадают. Если вы делаете это слишком часто, вероятно, вы начнете видеть падение частоты кадров.
Digital Foundry: Что касается звуковой системы и трассировки лучей, выполняется ли она на центральном процессоре (CPU)? Или она выполняется на графическом процессоре (GPU) аппаратно?
Николай Стефанов: Она выполняется на графическом процессоре (GPU), когда такая возможность имеется в аппаратном обеспечении. Мы используем точно такие же миры трассировки лучей и точно такие же запросы на трассировку лучей, как и в остальной системе.
Digital Foundry: Звук кажется распространяющимся таким образом, что он выглядит очень реалистичным, это очень хорошо выполнено.
Николай Стефанов: Да, абсолютно. Я думаю, что одна из других вещей, которую вы увидите, – это то, что он также интерактивный. Так, если вы попробуете выстрелить из своего оружия, вы увидите, что определенные звуки птиц исчезнут, потому что они испуганы вами. Этого не произойдет, если вы выстрелите из лука. Все основано на взаимодействии.
Это одна из вещей, которую я всегда оцениваю двояко как технический директор. Как технический директор вы хотите установить ограничение на амбиции конкретной системы. Но на этот раз с аудио-командой им пришлось переоценить свои амбиции. Они делают так много. Иногда они даже размещают процедурные элементы, где вы будете слышать ветер свистящий сквозь определенные геометрические объекты, таким образом определенная активация и продолжительность звука зависит от разных составляющих и когда наступает шторм, уникальные аспекты будут использоваться и вы будете слышать все это с использованием звуков, размещенных в пространстве 3D.
Digital Foundry: Сама по себе поверхность земли находится в состоянии теселляции. Как это делается?
Олександр Кошло: Она предварительно теселлируется на процессоре (CPU). Мы просто отправляем более детализированные сетки там, где они нам нужны.
Николай Стефанов: В терминах ландшафта мы не инвестировали так много в эту технологию на этот раз, потому что часто он полностью покрыт чем-то!
Digital Foundry: Да, обычно он полностью покрыт! Одна из вещей, которую я всегда любил в игре The Division, это объемное воспроизведение освещения и частиц. Изменилось ли что-то в Avatar здесь?
Олександр Кошло: Да. В плане объемных эффектов, у нас был только объем вокруг и перед игроком в играх The Division. Теперь у нас есть объем и трассировка лучей за ним, поэтому мы можем поддерживать гораздо большие расстояния; без этого все разрушилось бы. Теперь у нас также есть объемные облака. Мы равномерно производим трассировку лучей через туман и облака. Облака также могут быть частью объема вблизи, потому что сейчас мы действительно можем летать над ними с помощью летающего средства. Это объединенная система.
Николай Стефанов: Как говорит Саша, теперь вы действительно можете летать над облаками. Это приводит к интересным ситуациям, когда на земле, например, может быть гроза, но теперь вы можете пролетать через объемные трассированные облака и действительно оказаться над ними. Это выглядит очень круто.
В плане частиц, они получают освещение с помощью трассировки лучей, и у нас теперь полная поддержка GPU-частиц. В играх The Division мы использовали GPU-частицы для снега и дождя, если я правильно помню, но теперь все это полностью интегрировано с графическим деревом Snowdrop. Так что большинство эффектов частиц проходят через GPU с обнаружением столкновений и освещением. Так что это одно из больших достижений. Вот эти мелькающие мелкие объекты, которые вы видите, – это просто GPU-частицы.
Digital Foundry: Много информации для переваривания. Большое спасибо, Саша. Большое спасибо, Николай. Спасибо вам за ваше время. Надеюсь, когда-нибудь в будущем я снова смогу поговорить с вами обо всем, что вы сделали!