Марко Аламиа, один из разработчиков Overwatch, сообщил о завершении работ над новой технологией движка игры и поделился подробностями касательно принципа её работы.
Технология ENVIRONMENT STATES в Overwatch 2: за кулисами с программистами и инженерами. Привет всем! Меня зовут Марко Аламиа, я программист в команде Overwatch. Поскольку мы недавно закончили работу над новой технологией для Overwatch 2, мы подумали, что это – отличная возможность дать сообществу возможность взглянуть на то как мы занимаемся улучшениями для игрового движка. Чтобы помочь мне в этом начинании, я заручился помощью двух других разработчиков из команды Overwatch: Брюса Уилки и Фабьена Кристина.
Новая технология, которую мы добавили в движок, называется Environment States, она очень быстро полюбилась нам всем и мы стали активно использовать её для создания и дизайна карт. Хотя эта функция разработана и доработана внутри движка и инструментов Overwatch 2, основная идея зародилась в уме нашего талантливого художника по свету Фабьена. Я попросил Фабьена помочь нам понять, как он пришел к этой идее, которая так сильно повлияла на наш подход к созданию карт.
Давайте поближе познакомимся с Environment States!
Фабьен : События Overwatch разворачиваются в ярком и красочном мире, и со многими персонажами игры мы знакомимся непосредственно в игре, на той или иной карте. Создание карты начинается с дизайнеров уровней, которые прорабатывают всю архитектуру этого места, используя большие серые коробки в качестве ориентиров; они пытаются сделать так, чтобы игровой процесс был интересным и сбалансированным. Самое важное на этом этапе - создать карту, на которой будет интересно играть! После многих часов тестирования настала очередь художников по окружению превратить временные серые коробки в тщательно изготовленные вручную здания и объекты окружающей среды, которые оживят места, в которые отправятся игроки.
Наряду с окружающей средой мы создаем освещение, которое бы поддерживало историю, которую рассказывает карта. В Overwatch 2 мы хотели, чтобы у каждой локации было своё натсроение, которое полностью изменило бы ощущение локации. Представьте себе, что вы путешествуете в Нумбани и видите футуристический город, освещенный теплым африканским закатом, или приземляетесь в дождливом Париже, где все магазины светятся теплыми золотыми огнями, которые приглашают вас отдохнуть и съесть круассан пока вы ждёте прекращения дождя.
Именно для этого и была создана Environment States. С помощью этой новой системы нам удалось разделить все основные компоненты освещения, звука и эффектов на автономные ресурсы, которые можно комбинировать, как строительные блоки, для создания того, что мы называем "сценариями среды". Один и тот же сценарий может использоваться разными картами, также как и на карте могут быть задействованы несколько разных сценариев.
Взять, к примеру, динамичную карту Некрополис. Вы, наверное, играли на ней, когда там был задействован ночной сценарий, сочетающий контраст холодных синих цветов с ярко-оранжевыми факелами, освещающими здания.
Но представим, что нам захотелось поэкспериментировать, взяв другой сценарий, и мы решили посмотреть как на этой карте будут смотреться горячие пустынные цвета Храма Анубиса. С новой системой, всё что нужно – это взять сценарий Environment States Храма Анубиса и применить его к Некрополису.
Выглядит уже неплохо! Однако, мы можем улучшить вид ещё больше изменив положение солнца, чтобы создать интересные тени. Для этого мы создаём новый сценарий Environment States, который будет влиять только на положение солнца и помещаем его поверх ранее применённого сценария из Храма Анубиса.
Готово!
Благодаря гибкости и простоте Environment States, мы можем создать прототип нового освещения для наших карт в течение нескольких часов. Как следствие, мы можем себе позволить больше экспериментировать, проявлять больше творчества и делать так, чтобы новые карты были более разнообразными.
Но это не все. В то время как предыдущие примеры были в основном косметическими, сценарии Environment States также можно динамически смешивать для разработки новых захватывающих игровых возможностей. Представьте, что вас отправили с миссией в Некрополис, чтобы восстановить связь с ячейкой Overwatch, и, защищаясь от атаки нулевого сектора, песчаная буря быстро приближается к месту и поднимается вокруг вас! Мы можем сделать вашу миссию немного более сложной, добавив новый сценарий Environment States песчаной бури поверх сценария Солнца, который будет постепенно увеличивать облачность и плотность песка.
С помощью этой новой технологии мы можем создавать всевозможные погодные изменения, такие как грозы, снегопады и другие захватывающие сценарии, чтобы игра ощущалась по-разному каждый раз, когда вы играете.
Давайте теперь вернемся к Марко и посмотрим на техническую сторону того, как работает Environment States.
Марко: Видение Фабьена было амбициозным, поэтому нам пришлось разработать мощную систему, которая справилась бы с потребностями Overwatch 2. После некоторого мозгового штурма мы решили разрешить одновременное присутствие нескольких сценариев Environment States, которые были бы чётко структурированы и упорядочены. Этот набор сценариев может динамически изменяться, поэтому в любой момент можно добавить или удалить отдельные эффекты. Магия начинается, когда движок игры обращается к набору сценариев и смешивает их между собой, чтобы создать окончательный вид. Если вы когда-либо использовали Photoshop, это то же самое, что объединить несколько слоев для создания окончательного изображения.
Идея состоит в том, что каждый сценарий Environment States может описывать некоторые аспекты окружения, такие как сила и направление ветра или цвет солнца. Когда сценарий помещается в стек, на итоговый результат влияют только заранее выбранные аспекты. Например, это сценарий, взятый из клуба Лусио в Рио, где в стек помещён сценарий Environment States, описывающий экспозицию камеры и аспекты цветокоррекции:
По умолчанию сценарий Environment States затрагивает всю карту, однако поверх него есть ещё один сценарий, затрагивающий только область Diablo. Сценарии Environment States могут динамически добавляться и убираться по ходу игры, добавляя динамичности картам, за счёт чего они ощущаются более живыми и наполненными энергией.
Под руководством команды художников и Фабьена мы определили несколько ключевых аспектов, на которые бы могли влиять сценарии Environment States. Например, постобработка была первой функцией движка, преобразованной в аспект сценария. Постобработка - общий компонент всех современных движков; она используется для применения различных фильтров и эффектов, таких как управление контрастностью, яркостью и насыщенностью конечного изображения. Динамическая регулировка контрастности и яркости изображения в зависимости от того, что происходит в игре, может сделать конечное изображение невероятно ярким и динамичным, и теперь это возможно в Overwatch 2 благодаря технологии Environment States.
Аспект тумана - еще один мощный инструмент в нашей новой системе. Изменяя его параметры, мы можем управлять внешним видом тумана, что, в свою очередь, позволяет команде художников визуально изменять окружение в зависимости от режима игры, позиций игроков или даже времени. Например, мы можем сделать карту более пугающей для Хэллоуина, или сделать так, чтобы туман становился густым только вокруг определенной области карты, или по таймеру запустить песчаную бурю в одной из наших новых героических миссий.
У нас есть несколько аспектов, которые затрагивают другие визуальные свойства, такие как тени, отбрасываемые облаками на карту, и даже невизуальные свойства, такие как сила и направление ветра. Двумя наиболее важными аспектами, которые мы можем изменить, являются аспекты, регулирующие Солнце и Небо. Как следует из названий, они позволяют нам изменять некоторые ключевые особенности окружения, такие как положение и цвет солнца, какие облака мы используем, если они есть, и время суток – будь то день или ночь. Как можно заметить, это очень мощная часть системы Environment State, потому что она позволяет нам изменять внешний вид карты довольно радикально.
Эти два аспекта (Солнце и Небо) усиливают одну из самых продвинутых областей движка: систему освещения. Освещение невероятно важно для Overwatch 2, потому что оно помогает нам создавать внешний вид, ощущения и настроение нашей карты. Однако, любое изменение в этой системе может повлиять на используемую память и общую производительность, поэтому мы должны быть очень осторожны. К счастью для нас, в нашей команде есть отличный инженер Брюс Уилки, который имеет большой опыт работы с системами освещения и может помочь нам создать что-то, что отлично выглядит, сохраняя при этом производительность на уровне, необходимом для соревновательного шутера, такого как Overwatch 2.
Брюс: В яркие, красочные визуальные эффекты Overwatch вложено немало труда. Каждый раз, когда я играю матч на одной из наших карт, я вспоминаю, как много внимания уделяется деталям освещения в каждой среде. Солнечный свет отражается в комнатах, прожекторы освещают руины, а ночные фестивали оживают красками - это лишь несколько примеров того, как освещение играет такую важную роль во внешнем виде нашей игры. При создании движка для Overwatch мы тесно сотрудничали с командой художников, чтобы обеспечить функции освещения, необходимые для переноса концептуальных 2D-работ в 3D-мир, такие как свет, отражающийся от поверхностей (часто называемый глобальным освещением), металлы, которые в некоторой степени подобны зеркалам, плавное освещение движущихся объектов в статической среде. Для этих функций необходимо множество расчетов, которые часто требуют намного больше ресурсов ЦП, чем можно себе позволить, сохраняя при этом заданную частоту кадров. Чтобы позволить Overwatch работать с высокой частотой кадров и по-прежнему предоставлять эти расширенные функции освещения, мы заранее вычисляем как можно больше информации об освещении, упаковываем результат и используем эти данные в клиенте.
Давайте подробнее рассмотрим данные, которые мы используем в Overwatch для работы некоторых функций освещения. Для объектов, которые не двигаются, таких как стены, полы и потолки, мы создаем несколько фрагментов данных. Первая часть данных сообщает движку, сколько света падает на поверхность и с какого направления исходит этот свет. Обычно эти данные называются «картой освещения», и разные системы будут хранить разный набор данных в картах освещения.
На этом изображении вы можете увидеть пример того, как создаются карты освещения для поверхностей на игровой карте. Слева - окончательная композиция всего освещения. В центре на поверхностях отображается только схема освещения. Наши художники используют это представление, чтобы убедиться, что для поверхности будет сохранено достаточно данных об освещении для достижения желаемого визуального результата. Справа – пример того, как движок объединяет эти карты освещения, чтобы минимизировать занимаемую ими память.
Когда мы выпускали Overwatch, мы генерировали цвет и направление для всего света, падающего на поверхность. Мы используем данные направления, чтобы изменять цвет на неровных поверхностях - чем больше площадь поверхности, обращённой в этом направлении, тем более насыщенными будут цвета. В Overwatch 2 мы генерируем три направления освещения, что позволяет нам изменять каждый из цветовых каналов (красный, зеленый и синий) независимо друг от друга. Эти дополнительные направления в итоге позволяют нам увеличивать яркость освещения, что, в свою очередь, повышает качество изображения.
Для стационарных объектов мы генерируем данные, которые сообщают объекту, какая часть окружающей среды видна. Мы начали генерировать эти данные на таких картах как Париж и Гавана уже после того, как выпустили Overwatch. В Overwatch 2 эти данные генерируют уже все карты, что поможет нам повысить качество визуальных эффектов.
Для движущихся объектов, таких как игроки, мы генерируем множество образцов, описывающих различные позиции объекта на карте и кодируем данные освещения для каждой из них - наподобие того, как мы делаем для неподвижных объектов. Когда движущийся объект приближается к одной из этих точек, он использует данные образца, описывающего эту конкретную точку, чтобы сформировать освещение. В Overwatch 2 мы генерируем намного больше подобных образцов, особенно для перемещений в воздухе. Как результат – визуальная составляющая достигнет небывалых высот.

Если вы смотрели нашу панель BlizzConline , вы видели мельком показанные карты с несколькими различными средами освещения. Для каждого окружения мы хотим генерировать и обрабатывать на сервере максимально возможное количество данных, чтобы размер необходимого дискового пространства не превышал разумные пределы. Технология Environment State позволяет движку группировать вместе несколько сред освещения для карты, позволяя использовать данные, которые были уже заранее вычислены, как это было упомянуто выше. Это значительно снижает объем данных необходимых для хранения и передачи, что в свою очередь означает снижению нагрузки на компьютер игрока. Более качественное освещение, больше вариаций освещения и меньших объём передаваемых данных - все это благодаря функции Environment State.
Благодаря Environment States Overwatch 2 станет более динамичным и при этом ускорит работу наших художников, позволяя им создавать для вас красочный мир. В Overwatch 2 вас ждут захватывающие приключения, охватывающие весь земной шар, с динамически меняющимся окружением и потрясающей графикой!
[Источник]