«РБК Тренды» публикуют главу из книги Мэтью Болла «Метавселенная: как она меняет наш мир». Материал подготовлен в коллаборации с издательством «Альпина Паблишер».
Доставить данные вовремя и в нужном объеме — значит лишь частично обеспечить функционирование синхронизированного виртуального мира. Помимо этого, необходимо понять эти данные, выполнить код, оценить пользовательский ввод, применить логику, визуализировать среду и т.д. Это работа центральных процессоров (CPU) и графических процессоров (GPU), которую называют общим термином «вычисления».
Вычисления — это ресурс, который выполняет всю цифровую работу. На протяжении последних десятилетий мы наблюдаем ежегодное увеличение количества производимых и доступных вычислительных ресурсов и видим, насколько мощными они могут быть.
Несмотря на это, вычислительные ресурсы всегда были и, вероятно, будут оставаться в дефиците, поскольку чем больше вычислительной мощности нам доступно, тем более сложные вычисления мы пытаемся выполнить.
…
Вернемся к Fortnite и Roblox. Хотя эти игры и являются огромным шагом вперед, лежащие в их основе идеи далеко не новы. На протяжении десятилетий разработчики мечтали о том, чтобы научиться включать в одну общую симуляцию десятки (а в идеале сотни и даже тысячи) игроков, а также создавать виртуальные среды, ограниченные только воображением индивидуальных пользователей. Загвоздка в том, что это было технически невозможно.
Возможность создавать виртуальные миры с сотнями и даже тысячами «параллельных» пользователей (CCU) появилась еще в конце 1990-х годов, но эти миры и пользователи в них были сильно ограничены. В игре EVE Online игроки не могут собираться в группы в виде аватаров — только перемещаться в космическом пространстве, управляя большими и преимущественно статичными кораблями и перестреливаясь. В World of Warcraft в одном месте могут собираться десятки аватаров, но степень их детализации ограничена, изображение дается относительно более мелким планом, и игроки имеют ограниченный контроль над действиями своих персонажей. Если в одном месте сходятся слишком много игроков, сервер временно шардирует (разделяет) это пространство на параллельно функционирующие, но независимые копии.
Некоторые разработчики предпочитают и вовсе ограничить возможности рендеринга в реальном времени для пользователей и используют игровой ИИ, то есть весь игровой фон визуализируется заранее, и, следовательно, игроки никак не могут на него повлиять. Но даже для участия в таких играх в те годы требовался специальный игровой ПК, который мог стоить тысячи долларов. В тех же случаях, когда можно было обойтись устройством попроще, пользователю обычно приходилось отключать или снижать возможность визуализации или вдвое уменьшать частоту кадров.
Только к середине 2010-х годов появились миллионы устройств потребительского класса, способных справиться с такими играми, как Fortnite, — с десятками богато анимированных аватаров, способных на широкий диапазон действий, которые могли участвовать в одном матче и взаимодействовать в красочном осязаемом мире, а не в холодном пустом космосе. Примерно в это же время появились доступные по стоимости серверы, способные обрабатывать и синхронизировать вводы от большого количества пользовательских устройств.
Благодаря прогрессу в вычислительных ресурсах индустрия видеоигр вступила в новый этап. За несколько лет самыми популярными (и прибыльными) в мире стали игры, сфокусированные на богатом пользовательском контенте (UGC) и большом количестве параллельных пользователей, такие как Free Fire, PUBG, Fortnite, Call of Duty: Warzone, Roblox, Minecraft. Кроме того, эти игровые платформы быстро расширились на другие виды медиаопыта, которые раньше были возможны только в реальном мире (концерт Трэвиса Скотта в Fortnite или рэпера Lil Nas X на Roblox).
Все вместе это привело к беспрецедентному росту игровой индустрии. В 2021 году в среднем более 350 млн человек ежедневно участвовали в играх в жанре королевской битвы (одном из жанров с большим количеством одновременных пользователей) и еще миллиарды потенциально могли бы это сделать. Для сравнения: в 2016 году только 350 млн человек на всей планете владели оборудованием, необходимым для визуализации богатого трехмерного виртуального мира. В 2021 году у Roblox было 225 млн активных пользователей в месяц, что более чем на треть превышало общее количество проданных за все время самых популярных консолей PlayStation 2 и составляло две трети размера таких социальных сетей, как Snapchat и Twitter.
Как вы уже могли догадаться, эти игры кажутся настолько опережающими свое время отчасти из-за изобретательных дизайнерских решений, которые позволяют им обойти существующие вычислительные ограничения. Большинство игр в жанре королевской битвы поддерживают порядка 100 игроков, однако они используют огромные карты с многочисленными точками интереса, чтобы рассредоточить игроков подальше друг от друга. В этом случае игровому серверу необходимо отслеживать, что делает каждый игрок, но устройству каждого игрока не приходится визуализировать всех остальных игроков, а также отслеживать и обрабатывать их действия. И хотя в конечном итоге все игроки должны сойтись в небольшом пространстве — иногда размером с комнату в студенческом общежитии, — сам характер игры означает, что к тому моменту большинство игроков уже побеждены и вышли из игры. Чем меньше карта, тем труднее на ней выжить. Другими словами, если игроку в королевской битве приходится думать обо всех 99 соперниках, то его устройству приходится иметь дело с гораздо меньшим их количеством.
Тем не менее у этих уловок есть свои пределы. Возьмем игру в жанре королевской битвы Free Fire, предназначенную только для мобильных устройств. Это одна из самых популярных игр в мире, но большинство ее пользователей находятся в Юго-Восточной Азии и Южной Америке, где большая часть устройств относится к категории Android бюджетного и среднего класса, а не к топовым Android или мощным iPhone. В результате Free Fire имеет ограничение на 50, а не 100 игроков. Когда такие платформы, как Fortnite или Roblox, проводят социальные мероприятия в ограниченном пространстве — на виртуальной концертной площадке, — они тоже сокращают количество одновременных пользователей до 50 и меньше. Помимо этого, они ограничивают возможности пользователей по сравнению со стандартными игровыми режимами; например, Fortnite отключает функцию строительства или ограничивает количество танцевальных движений с пары десятков до одного заранее установленного варианта.
Если ваш процессор не такой мощный, как у среднестатистического игрока, вам придется сталкиваться со многими ограничениями.
Старые устройства обычно не загружают кастомизированную одежду (аутфиты) других игроков (поскольку это не влияет на игру) и представляют их как стандартных персонажей. При всех чудесах Microsoft Flight Simulator менее 1% персональных компьютеров в мире, включая настольные компьютеры и ноутбуки Mac, могут потянуть эту игру при самых низких настройках разрешения. Одна из причин, почему MSFS может работать на потребительских устройствах, в том, что ее виртуальный мир на практике включает только карты, погодные условия и траектории полетов.
Разумеется, вычислительные возможности улучшаются с каждым годом. В настоящее время Roblox поддерживает до 200 игроков в виртуальных мирах с относительно низким качеством визуализации и до 700 игроков при бета-тестировании. Однако нам еще очень далеко до того момента, когда единственным ограничением будет наше творческое воображение. Метавселенная предполагает участие сотен тысяч пользователей в общей симуляции с неограниченным количеством кастомизируемых виртуальных объектов; полную реализацию технологии захвата движения; неограниченную возможность менять виртуальный мир (а не выбирать из десятка вариантов) с полной персистентностью изменений; рендеринг этого мира с разрешением не только 1080p (что обычно считается высокой четкостью), но и 4К, и даже 8К. Даже самые мощные из существующих сегодня устройств не способны на это в режиме реального времени, поскольку каждый объект, текстура, увеличение разрешения, дополнительный кадр или игрок существенно увеличивают нагрузку на дефицитные вычислительные ресурсы.
Основатель и генеральный директор Nvidia Дженсен Хуан считает, что следующим этапом в развитии иммерсивных симуляций станет выход за пределы реалистичных взрывов или анимированных аватаров. Вместо этого они начнут отражать «законы физики элементарных частиц, гравитации, электромагнетизма, электромагнитных волн, включая свет и радиоволны... давления и звука». Потребует ли метавселенная такой верности физике, остается спорным вопросом. Важно помнить: вычислительная мощность всегда находится в дефиците именно потому, что ее увеличение ведет к важным шагам вперед, которые требуют еще больше вычислительной мощности.
Желание Хуана привнести законы физики в виртуальный мир можно счесть ненужным и непрактичным, но такая точка зрения предполагает отказ от инноваций, которые могли бы из этого возникнуть. Кто бы в свое время мог подумать, что создание игр с возможностью поддержки до 100 игроков может изменить мир?
Что можно сказать наверняка, так это то, что доступность и ограничения вычислительных ресурсов будут определять, какой опыт возможен в метавселенной, где, когда и для кого.
Две стороны одной проблемы
Мы знаем, что метавселенная требует гораздо больше вычислительной мощности, но сколько именно, остается неясным. В главе 3 я процитировал бывшего, а ныне консультирующего технического директора Oculus Джона Кармака, который считает, что «создание метавселенной — это моральный императив». В октябре 2021 года Кармак сказал, что если бы 20 лет назад у него спросили, будет ли «в 100 раз более мощного компьютера» достаточно для выполнения этой задачи, он бы ответил утвердительно.
Однако в 2021 году, несмотря на наличие миллиардов в сотни раз более мощных устройств, Кармак изменил свою оценку, заявив, что метавселенная может появиться в лучшем случае лишь через пять–десять лет, да и то при условии «серьезных оптимизационных компромиссов». Два месяца спустя Раджа Кодури, старший вице-президент Intel и генеральный директор ее группы ускоренных вычислений и графики, поделился аналогичным мнением на сайте компании. По словам Кодури, «метавселенная действительно может стать следующей важной платформой после Всемирной паутины и мобильного интернета... но по-настоящему персистентная и иммерсивная среда в требуемом масштабе, доступная миллиардам людей в режиме реального времени, потребует увеличения эффективности вычислений в 1000 раз по сравнению с сегодняшним состоянием дел».
Существуют различные точки зрения на то, как лучше всего этого достичь. Одно из предлагаемых решений состоит в том, чтобы выполнять как можно больше работы в удаленных центрах обработки данных, оснащенных машинами промышленного класса, а не на потребительских устройствах. Выполнение большей части работы, связанной с виртуальным миром, на устройстве каждого пользователя многим кажется расточительным, поскольку означает, что множество устройств одновременно выполняют одинаковую работу для поддержки одинакового опыта. В то же время сверхмощный сервер, управляемый владельцем виртуального мира, просто отслеживает пользовательские вводы, ретранслирует их и разрешает конфликты в игровом процессе. Он вообще не занимается рендерингом!
Рассмотрим конкретный пример. Когда игрок в Fortnite стреляет из реактивного гранатомета по дереву, эта информация (используемый объект, его атрибуты, траектория движения снаряда) отправляется с устройства игрока на многопользовательский сервер Fortnite, который затем передает эту информацию всем игрокам, которым она нужна. Их локальные устройства обрабатывают эту информацию и действуют в соответствии с ней: показывают взрыв, определяют, пострадали ли их игроки, удаляют дерево с карты, позволяют игрокам проходить по тому месту, где когда-то стояло это дерево, и т.д.
Но на практике игроки могут увидеть этот взрыв по-разному, даже если тот же самый снаряд попал в то же самое дерево в то же самое время и для обработки причины и следствия была применена та же самая логика. Это происходит в результате того, что из-за разного времени задержки устройство может счесть, что выстрел был сделан чуть раньше или чуть позже или с немного другой позиции. Обычно это не имеет значения, но порой более чем имеет. Например, консоль игрока 1 может счесть, что игрок 2 был убит уничтожившим дерево взрывом, тогда как консоль игрока 2 может решить, что игрок 2 получил серьезные, но не смертельные ранения. Обе консоли правы, но очевидно, что игра не может продолжаться с двумя версиями реальности. Поэтому серверу приходится выбирать.
Такая зависимость от персональных устройств создает и другие ограничения. Потребители могут получить доступ только к такому опыту, который способно обеспечить их устройство. Игра Fortnite по-разному выглядит на iPad 2019 года выпуска, PlayStation 4 2013 года и PlayStation 5 2020 года. Визуализация на iPad ограничена 30 кадрами в секунду, тогда как PlayStation 4 предлагает 60 кадров, а PlayStation 5 — 120 кадров в секунду. iPad, как правило, загружает только выборочные текстуры карт и может упускать из виду аутфит аватаров, тогда как PlayStation 5 показывает преломление света и тени, чего не может PlayStation 4. Это означает, что общая сложность виртуального мира частично ограничивается возможностями самого маломощного устройства, которое может получить к нему доступ. Epic Games решила, что аватары и их аутфит не будут влиять на игровой процесс в Fortnite, но если компания изменит свою точку зрения, это может отсечь множество игроков.
Перенос большей части обработки и рендеринга в центры обработки данных промышленного класса кажется более эффективным подходом, необходимым для создания метавселенной. Некоторые компании уже предпринимают шаги в этом направлении. Например, Google Stadia и Amazon Luna обрабатывают весь видеокомпонент игрового процесса в удаленных центрах обработки данных, а затем передают весь визуализированный контент на устройство пользователя в виде потокового видео. Единственное, что нужно делать пользовательскому устройству, — это воспроизводить это видео и отправлять пользовательский ввод (переместиться влево, выстрелить и т.д.), что мало чем отличается от просмотра сериала на Netflix.
Сторонники этого подхода часто приводят в пример логику энергоснабжения, указывая на то, что наши дома получают электричество от промышленных электростанций через электросети, а не генерируют его самостоятельно с помощью частных генераторов. Облачная модель позволяет потребителям перестать покупать дорогостоящие (а потому редко обновляемые) компьютеры потребительского класса и вместо этого арендовать доступ к оборудованию корпоративного класса, которое более выгодно в пересчете на единицу вычислительной мощности и чаще модернизируется. Неважно, какое у пользователя устройство — iPhone за $1500 или старый холодильник с видеоэкраном и Wi-Fi: он в любом случае сможет играть в требующие большого объема вычислений игры вроде Cyberpunk 2077, наслаждаясь всем визуальным богатством их виртуального мира. Зачем ставить виртуальный мир в зависимость от крошечных потребительских устройств в пластиковых корпусах, а не от стека серверов стоимостью много миллионов (если не миллиард) долларов, принадлежащего компании-разработчику?
При всей кажущейся логичности такого подхода и успехе сервисов серверного контента, таких как Netflix и Spotify, не все издатели игр считают удаленный рендеринг оптимальным решением. По словам Тима Суини, «инициативы по размещению обработки данных в реальном времени с той стороны от стены задержки всегда были обречены на неудачу, поскольку, хотя пропускная способность и латентность сетей постоянно совершенствуются, производительность локальных вычислений повышается быстрее».
Другими словами, никто не спорит, что удаленные центры обработки данных могут предложить лучший пользовательский опыт, чем потребительские устройства. Разумеется, могут. Проблема в сетях, которые находятся на пути между этими центрами и пользователями, и эта проблема вряд ли будет решена в ближайшее время.
Здесь аналогия с генерацией электроэнергии начинает рушиться. В большей части развитого мира нет проблем с тем, чтобы доставлять потребителям электроэнергию стабильно и так быстро, как это необходимо. С передачей данных ситуация обстоит иначе — и это при том, что объемы передаваемых сегодня данных вообще-то не слишком велики. Участие в виртуальном мире с удаленным рендерингом потребует передачи многих гигабайт данных в час в режиме реального времени. Но, как вы уже знаете, сегодня мы с трудом обеспечиваем своевременную передачу даже всего нескольких мегабайт в час.
Кроме того, удаленные вычисления еще не доказали свою эффективность для рендеринга. Это обусловлено несколькими взаимосвязанными проблемами. Прежде всего графический процессор в пользовательском устройстве в любой момент времени не отрисовывает ни весь виртуальный мир, ни даже значительную его часть. Вместо этого он отрисовывает только то, что в данный момент необходимо для данного пользователя. Когда игрок в такой игре, как The Legend of Zelda: Breath of the Wild, поворачивает назад, графический процессор Nvidia в консоли Nintendo Switch разгружает все, что было визуализировано раньше, чтобы обеспечить поддержку нового поля зрения игрока. Этот процесс называется отсечением по пирамиде видимости.
Среди других методов стоит назвать отсечение по окклюзии, когда объекты, находящиеся в поле зрения игрока, не загружаются или не отрисовываются, если их закрывает собой другой объект, и уровень детализации (LOD), когда информация, например нюансированная текстура коры березы, визуализируется только тогда, когда игрок может ее разглядеть.
Отсечение по пирамиде видимости, отсечение по окклюзии и уровень детализации играют важную роль при рендеринге в реальном времени, поскольку такие приемы позволяют пользовательскому устройству сконцентрировать свою вычислительную мощность на том, что может видеть пользователь. Но это означает, что другие пользователи не могут воспользоваться работой графического процессора данного пользователя.
Некоторые читатели могут подумать, что я ошибаюсь, вспоминая, как они играли в Mario Kart на Nintendo 64, где экран телевизора можно было разделить на четыре части, по одной на каждого игрока. Даже сегодня Fortnite позволяет одной консоли PlayStation или Xbox делить экран пополам, чтобы два игрока могли играть одновременно. Но в этом случае графический процессор поддерживает одновременный рендеринг для нескольких участников, а не пользователей. Это принципиально важное различие. Все игроки участвуют в одном матче на одном уровне и не могут выйти из него раньше времени.
Дело в том, что процессоры устройства могут загружать и обрабатывать ограниченное количество информации, а его система оперативной памяти временно хранит различные рендеры (например, дерево или здание), чтобы их можно было повторно использовать для каждого игрока, а не отрисовывать каждый раз заново. Кроме того, устройство уменьшает разрешение и/или частоту кадров у каждого игрока пропорционально количеству игроков. Это означает, что даже если для игры двух игроков в Mario Kart используется два телевизора, а не один, разделенный надвое, каждый игрок получает вдвое меньше отрисованных пикселей в секунду.
Технически графический процессор может визуализировать две совершенно разные игры. Топовый графический процессор Nvidia, безусловно, может поддерживать две отдельные эмуляции 2D-игры Super Mario Bros. (или одной версии Super Mario Bros. и второй такой же маломощной игры). Однако это делается неэффективным в вычислительном плане образом. Графический процессор Nvidia, способный поддерживать топовую игру A с самыми полными спецификациями рендеринга, не может запустить две версии игры на половине от этого уровня или даже на трети. Он также не может перераспределять свою вычислительную мощность между играми в зависимости от того, что требуется каждой из них и когда, — в отличие, например, от родителя, который помогает двум детям делать уроки или ложиться спать. Другими словами, даже если игра А не задействует всю мощность графического процессора Nvidia, этот резерв не получится использовать на что-то еще.
Графические процессоры не генерируют некую общую рендеринговую мощность, которая может быть распределена между пользователями подобно тому, как вырабатываемая электростанцией электроэнергия направляется во множество разных домов или как серверный CPU может обрабатывать данные о вводе, местоположении и синхронизации для сотни игроков в королевской битве. Вместо этого графические процессоры обычно работают как «заблокированный экземпляр» (инстанс), поддерживающий рендеринг для одного игрока. Многие компании работают над этой проблемой, но, пока она не решена, нет смысла создавать графические мегапроцессоры: они не будут обладать такой же рентабельностью, как огромные промышленные электрогенераторы, турбины или другие инфраструктурные объекты. В отличие от электрогенераторов, стоимость которых в расчете на единицу мощности снижается по мере увеличения их общей мощности, с графическими процессорами верно обратное. Говоря упрощенно, производство в два раза более мощного графического процессора обходится в два с лишним раза дороже.
Трудности с разделением или совместным использованием графических процессоров объясняют, почему серверные фермы Microsoft, обслуживающие игровой облачный стриминг, представляют собой стойки, заполненные огромным количеством бескорпусных консолей Xbox, каждая из которых обслуживает одного игрока. Другими словами, «электростанция» Microsoft представляет собой просто сеть из малых бытовых электрогенераторов, а не один большой генератор, способный обслужить весь район. Microsoft могла бы использовать для поддержки облачных инстансов специализированные графические и центральные процессоры, а не графические и центральные процессоры из своих потребительских консолей Xbox. Однако это потребовало бы разрабатывать все предназначенные для Xbox игры с учетом дополнительного типа Xbox.
Серверы облачного рендеринга также сталкиваются с проблемой, связанной с коэффициентом использования. Для работы в метрополии Кливленда сервису облачного гейминга может понадобиться 75 000 выделенных серверов в 8 часов вечера в воскресенье, 20 000 серверов в среднем и всего 4000 — в 4 часа утра в понедельник. Если этими серверами владеют потребители в виде консолей или игровых ПК, не имеет значения, когда те загружены работой, а когда не используются или отключены от сети. Но экономика центров обработки данных нацелена на оптимизацию спроса. В результате аренда высокопроизводительных графических процессоров с низким коэффициентом использования всегда будет дорогим удовольствием.
Вот почему платформы Amazon Web Services предоставляют клиентам значительную скидку, если те арендуют серверы заранее (резервируют инстансы). Клиенты получают гарантированный доступ к оплаченным серверам на следующий год, а Amazon кладет себе в карман разницу между фактической стоимостью и ценой, которую заплатил клиент (самый дешевый предлагаемый AWS зарезервированный инстанс с Linux и графическим процессором, эквивалентный PlayStation 4, обходится более чем в $2000 за год). Если же клиент хочет получать доступ к серверам по мере необходимости (инстансы по требованию), он может столкнуться с тем, что свободных серверов нет или же доступны только серверы с маломощным графическим процессором. Этот последний момент является ключевым: нельзя говорить о том, что мы решаем проблему нехватки вычислительных мощностей, если единственный способ сделать удаленные серверы доступными по цене — предлагать использовать старые серверы (а не заменять старые новыми).
Есть еще один способ улучшить стоимостную модель: консолидировать серверы в меньшем количестве мест. Вместо того чтобы создавать центры обработки данных для игрового стриминга в штатах Огайо, Вашингтон, Иллинойс и Нью-Йорк, компания может создать один-два более крупных центра. По мере увеличения количества и разнообразия клиентов спрос имеет тенденцию стабилизироваться, что ведет к увеличению среднего коэффициента использования. Конечно, это также означает увеличение расстояния между удаленными графическими процессорами и конечными пользователями и, как следствие, увеличение задержки. И это также не решает проблему расстояния между пользователями.
Перемещение вычислительных ресурсов в облако создает много новых затрат. Например, расположенные бок о бок и всегда включенные устройства в центрах обработки данных генерируют огромное количество тепла — гораздо больше, чем совокупное тепло, которое вырабатывает то же число устройств, стоящих дома у пользователей. Эксплуатация, обслуживание и обеспечение безопасности этого оборудования обходятся очень дорого. Переход от потоковой передачи ограниченных объемов данных к передаче видеоконтента с высоким разрешением и высокой частотой кадров также означает существенно более высокие затраты на обеспечение пропускной способности сетей. Да, Netflix и другие окупают эти расходы, но они обычно отправляют видео с частотой менее 30 кадров в секунду (а не 60–120 кадров) и более низким разрешением (например, 1K или 2K, а не 4K или 8K, как обещает Google Stadia), не в режиме реального времени и с ближайших серверов, которые просто хранят файлы, а не выполняют интенсивные вычислительные операции.
То, что я называю законом Суини, вероятнее всего, будет оставаться верным в обозримом будущем, то есть улучшения в локальных вычислениях будут по-прежнему опережать улучшения в пропускной способности, латентности и надежности сетей. Хотя многие считают, что сформулированный в 1965 году закон Мура (он утверждает, что количество транзисторов, размещаемых на кристалле интегральной схемы, удваивается примерно каждые два года) в последнее время действует медленнее, вычислительная мощность центральных и графических процессоров продолжает расти быстрыми темпами. Кроме того, сегодня потребители чаще обновляют свои основные вычислительные устройства, что ведет к значительному увеличению вычислительных ресурсов у конечных пользователей каждые два-три года.