Огромная гора из 20 000 картофеля в Starfield, объясненная разработчиками игры – GameTopic

Starfield's developers explain the massive 20,000 potato mountain - GameTopic

На прошлой неделе игрок Starfield напихал 20 000 картофелин в кабину своего корабля, а затем попытался закрыть дверь. Ролик стал вирусным, вызвав изумление у игроков и разработчиков игры.

Но нас не только впечатлило смелое действие человека, который потратил все это время, чтобы собрать столько картофеля. Джон Линнеман из Digital Foundry назвал ролик “озадачивающим”, потому что все картофелины “имеют физику”. Но что означает “иметь физику”? Почему все так сильно волнуются из-за 20 000 катящихся картошек в игре о крутом космическом исследователе?

Мы поговорили с несколькими разработчиками игр, чтобы получить их мнение о том, что на самом деле происходит в ролике с картошкой, почему больше игр не позволяют игрокам делать подобные вещи и насколько впечатляюще на самом деле 20 000 катящихся картофелин.

20 000 картофельных тел в движке

Никита Лужанский, разработчик на движке Unreal Engine в студии Pingle, дал мне подробный обзор того, что происходит, когда два объекта сталкиваются в игре. Вот очень упрощенная версия: В реальной жизни физика происходит постоянно. Но в виртуальных пространствах компьютерам требуется время для вычисления всех физических явлений, происходящих с объектами в любой данной секунде. Так что чем больше картофелины (или что-то еще) вы бросаете, тем больше вычислений нужно выполнить, и тем сложнее все становится.

“Когда говорят, что игра работает на 60 кадрах в секунду, это означает, что движок игры должен обрабатывать входные данные от игрока, применять их к игровому миру, вычислять взаимодействие объектов и систем в игре, и отображать изображение на экране”, объясняет Лужанский. “И все это он должен делать шестьдесят раз в секунду. Когда мы говорим о физическом взаимодействии объектов в игровом мире, мы всегда должны помнить, что чем больше объектов, тем больше проверок движок должен выполнить, чтобы получить результат взаимодействия. Но это двухсторонний меч. С одной стороны, мы хотим получить наиболее реалистичный результат, что потребует множество вычислений, но с другой стороны, мы ограничены количеством кадров в секунду, потому что если мы превысим верхний предел, игра начнет замедляться, и игрокам это не нравится.”

Лужанский продолжает объяснять, что поскольку компьютеры работают с интервалами времени, или тактами процессора, необходимо использовать несколько алгоритмов для вычисления движения объекта между этими тактами, при этом каждый объект перемещается на небольшое расстояние за каждый интервал в зависимости от таких факторов, как ускорение, скорость и возможные столкновения.

“Для тысяч объектов в одном такте необходимо вычислить положение каждого из них, для каждой пары объектов проверить, пересекаются ли они, и если да, оттолкнуть один объект от другого. Однако, если один объект был оттолкнут от другого, то нет гарантии, что он не окажется внутри другого объекта, поэтому необходимо несколько раз проверить пересечение между объектами. Из-за этого получается, что для достижения реалистичного взаимодействия сотен и тысяч объектов необходимо написать код, который работал бы достаточно быстро и создавал бы реалистичное изображение в одном кадре.”

Объяснение Лужанского для меня было еще более сложным, и я попытался упростить его для этой статьи, но если вам нужно еще более простое объяснение, вот оно: Больше картофеля = больше вычислений в секунду = больше мощности движка и компьютера, необходимо. И это действительно так. Лужанский отмечает, что хотя многое зависит от вычислительной мощности ПК или консоли, современные игровые движки выполняют множество работы для создания реалистичных физических симуляций. Он также добавляет, что требуется много работы разработчиков для настройки этих движков с целью достижения желаемого результата, особенно в ситуации, когда очень мало игроков вероятно столкнется с точно такой же ситуацией.

Что может пойти не так?

Итак, у нас есть 20 000 отдельных картофелин, которые сталкиваются друг с другом, полом и движущейся дверью. Это означает, что если какие-либо из описанных Лужанским вычислений будут слишком медленными или с ошибками, то внезапно 20 000 картофелин будут вести себя странно и создавать забавные физические глюки. Но именно в этом заключается гениальность ролика Starfield. Картофелины могли бы взрываться, улетать в космос, быстро вибрировать или проявлять иное поведение, не свойственное картофелю. Но вместо этого они мягко кувыркаются, как, ну, картофель.

«Это впечатляет, потому что, хотя большинство этих картофелин кажутся неподвижными, на самом деле они все время симулируют физику», говорит Лиам Тарт, главный художник в Unknown Worlds. «Традиционно, множество объектов физики, находящихся очень близко друг к другу, должны вызывать много “отскоков”, так как каждый картофель сталкивается с картофелем рядом с ним, поэтому я ожидал, что все картофелины будут прыгать и немного дрожать. Однако они кажутся очень неподвижными и двигаются только при открытии двери. Также впечатляет, что одновременно симулируются более 20 тысяч картофелин и кадровая частота не падает существенно».

Меган Фокс, основатель Glass Bottom Games, особенно впечатлилась гигантской горкой картофеля и помогла мне понять все различные вещи, которые могли пойти не так. В интервью GameTopic, Фокс начинает с объяснения разницы между физикой CPU и GPU; вкратце, физика CPU работает на вашем компьютере и обычно лучше подходит для более интерактивных симуляций, где игрок участвует. Физика GPU, с другой стороны, работает на графической карте и чаще всего лучше подходит для самодостаточных вещей, которые просто должны выглядеть круто, например, физика частиц или капель дождя. С GPU физикой легче справиться с большим количеством физики, так как они (в основном) не должны взаимодействовать с другими вещами. Но физику CPU сложнее реализовать в большом масштабе.

Вот почему в игре Bethesda 20 000 наваленных картофеля могут легко пойти не так: все 20 000 картофелин должны использовать физику CPU, потому что Bethesda «действительно заботится о картофеле», – говорит Фокс.

«Картофель может помешать движению игрока», – объясняет она. «Картофель может блокировать ваше передвижение. Важно, чтобы вы всегда точно знали, где находится каждый картофель, чтобы вы могли направить на него камеру и отобразить маленький контекстный пользовательский интерфейс, который говорит: “Картофель <нажмите A, чтобы поднять>,” и все, что связано с тем, что они каждый являются логическими сущностями, связанными с определенными предметами добычи с определенными свойствами и взаимодействиями. Если вы хотите отправить картофель в GPU физику, вам придется согласиться просто бросать 100 000 картофелин в комнату, с которыми игрок не может непосредственно взаимодействовать, кроме как проходить сквозь них и заставлять их отскакивать в сторону, как пенопластовые чипсы».

Havok Physics, которую Starfield использует для своего физического движка, исторически хорошо справлялась с симуляциями физики CPU и, в частности, с чем-то, называемым «депенетрацией», – говорит Фокс. Депенетрация, по ее словам, происходит, когда вы берете один картофель и затем появляется другой картофель в том же самом месте. Если депенетрация хорошая, второй картофель появляется аккуратно и остается в правильном месте. Но плохая депенетрация может привести к взрыву столкновений, или когда картофелины «получают внезапную бесконечную скорость и кидаются вокруг, как поп-корн».

Хорошее «стеклование» поведение, продолжает Фокс, требует, чтобы множество разных элементов работали вместе в мощной физической симуляции, чтобы обеспечить то, что симуляция знает, что делать с 20 000 картофелями.

«Проблема в том, что все время в стопке все немного проваливаются друг в друга. Коробка сверху, на каждом кадре, будет немного проваливаться в то, на чем она сидит, из-за гравитации. Затем вы каждый кадр корректируете столкновение обратно вверх, чтобы она оставалась на вершине коробки, и никто не догадывается», – говорит Фокс. «Но если у вашего физического движка плохая депенетрация, ну, вы, вероятно, не всегда получите идеально гладкий результат. Это добавит немного дополнительной силы. Теперь представьте себе, что у вас есть 10 000 картофелин, все забитые вместе, и вы можете представить, как это все может начать выглядеть как горка взрывающихся зерен попкорна, верно?»

В основном, говорит Фокс, кажется, что Havok действительно очень хорош в создании такого взаимодействия между объектами. Она добавляет, что большинство CPU симуляций, с которыми ей приходилось работать, были бы “сгореть”, если бы было столько картофеля в одном месте, что означает, что это или более новая или лучшая версия Havok, чем она привыкла, или… возможно, там на самом деле нет 20 000 картофеля!

Подождите, что?

Часть обсуждения Фокс и меня на эту тему проходила на социальном медиа-сайте Bluesky. Когда это происходило, Дэн Джонсон, старший геймдизайнер в студии разработки Big Blue Sky Games, вмешался со своим интересным наблюдением: что это за большие глыбы?

«Может ли движок сгруппировать картофель под поверхностью?» – спрашивает он. «Может ли игрок увеличить горку с помощью мешков или чего-то в этом роде, чтобы не нужно было столько картофеля? Нужно провести расследование».

Лиса не считает, что это мешки, потому что текстура идентична картошке, но она также не имеет хорошего ответа на вопрос, что делают эти гигантские комки. «[Это] заставляет меня задуматься, а действительно ли движок делает какую-то странную набухлость близких объектов. Но зачем делать так движку? Это имеет смысл только в случаях, когда игроки сбрасывают 3000 одной конкретной вещи. Что редко. Было бы очень забавно, если бы Bethesda включила оптимизацию для «идиотского маленького ребенка, который решает сбросить 30 000 колес сыра в одно место». Мне бы хотелось, чтобы именно такое случилось здесь».

Двухминутные сферы

Хотя Фокс, Джонсон, Тарт и Лужанский все впечатлены физикой картошек в Starfield, Алекс Уорд, Алекс Вил и Фил Магуайр немного менее впечатлены. Все трое работают в студии Three Fields Entertainment Limited, которая стоит за играми Dangerous Golf и предстоящим симулятором вождения в открытом мире Wreckreation. Их рабочий опыт, возможно, объясняет, почему куча из 20 000 физически взаимодействующих картошек является для них чем-то обыденным.

«Меня заинтересовало это немного – и это не очень впечатляет – это именно то, как работают все те удивительные симуляции воды, которые вы видите онлайн, но в гораздо более микроскопическом масштабе – каждая частица воды симулируется таким образом. Вот почему она выглядит так легкой при выливании из двери. По впечатляющести – симуляции воды, которые вы видите, многие из них используют ту же самую технологию, и они намного впечатляющее, потому что в них миллионы объектов, в то время как здесь всего несколько сотен.

«И если мы хотим похвалиться, мы использовали некоторые из этих сглаженных гидродинамических частиц в PC-версии Dangerous Golf, чтобы создать разливы краски на земле, стенах и экране!»

В то время как они беседуют, Магуайр открывает Unreal Engine и начинает создавать нечто подобное. За две минуты он управляется создать кучу из 378 сфер, которые реалистично кувыркаются и падают со скоростью от 40 до 60 кадров в секунду. Неплохо для редакторской демонстрации в двух минутах.

Но Магуайр также признается, что он поражен «огромным количеством вещей» в клипе от Bethesda – 400 сфер в редакторе – это одно, но 20 000 картошек в игре вместе со всем остальным в корабле? Немного более сложная задача, и заслуживающая похвалы.

Мы ранее писали о разных элементах видеоигр – работающих дверях, движущихся платформах, зубах и так далее – которые снаружи кажутся простыми, но на самом деле достаточно сложными. Хотя куча из 20 000 картошек может и не кажется простой, сам факт того, что кто-то может поднять картошку в Starfield из одного места и положить ее в другое, автоматически открывает игру для этой более сложной возможности, с которой разработчики должны считаться.

Конечно, Bethesda могла бы сделать так, чтобы картошки исчезали после определенного количества сброшенных, но, учитывая историю сообщества с сырными колесами, итоговое число в 20 000 картошек было, вероятно, неизбежным. Давайте похлопаем разработчикам Starfield за то, что буквально каждая отдельная картошка имеет значение.

Ребека Валентайн – старший репортер GameTopic. Есть новость? Отправьте ее на rvalentine@GameTopic.com.