Выбирай : Покупай : Используй
обзоры
0

Боевые Хитрости. Выпуск 2

Игровая физика: симуляция законов Ньютона в виртуальных мирах
Страница 1: Необходимость симуляции
Страница 2: Разбираемся в движках
Страница 3: Симуляция
Страница 4: Чудеса

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

Думаю, многие, проходя в очередной раз Half-Life 2, невольно задумывались над тем, как же разработчикам так здорово удалось реализовать столько замечательных физических эффектов.

Те, кто уже знаком с циклом «Боевые Хитрости», знают, что автор данной статьи вознамерился не просто объяснять в каждом выпуске логику работы какой-либо отдельно взятой игровой технологии, но и рассказать об этом простыми, непринужденными, понятными всем читателям словами. Что ж, без ложной скромности стоит заметить, что в данном материале я постарался упростить все настолько, насколько это вообще было возможно, поэтому, надеюсь, недовольных и непросвещенных читателей быть не должно. Пожалуй, еще стоит отметить тот факт, что не были проигнорированы и очень интригующие перспективы рассматриваемой технологии. Итак, представляю вашему вниманию рассказ о хитростях симуляции физических законов в компьютерных играх.

Необходимость симуляции

Чтобы виртуальные миры по реалистичности ничем не уступали окружающей нас действительности, без имитации законов физики ну просто никак не обойтись. Причем физические симуляции используются и как основной костяк геймплея — в самолетных или автомобильных симуляторах (вспомните хотя бы «Ил-2 Штурмовик» с его хитро продуманным управлением), так и просто для создания большей интерактивности окружающей игрока местности, как просто забавы ради, так и для придания большей реалистичности (это, в основном, разрушения различного рода).

Причем, заметьте, есть жанры, масштабное применение физики в которых началось не так и давно. За примерами далеко ходить не надо, прежде всего — это наши любимые шутеры «нового поколения» (которое уже, наверное, скоро станет старым), а также прочие проекты от третьего лица (начиная с тех же action и заканчивая RPG). Хотя, к слову, современные физические эффекты возникли не так уж и недавно. Бывалый геймер помнит, что тушки убитых противников располагались на земле, следуя законам физики, еще в Hitman Codename 47 (знаменитый ныне эффект тряпичной куклы или rag-doll), а предметы можно было таскать в руках хотя бы в той же Deus Ex (обе игры, между прочим, 2000 года выпуска). Заметьте, упоминаемые проекты — stealth-action — и это неслучайно, ведь именно данный жанр первым почувствовал необходимость в интерактивности окружающих геймера явлений.

Однако все равно, ни с чем нельзя сравнить детский восторг, испытываемый нами при игре в динамичную Painkiller (начало 2004 года), которая обошла на повороте своего прямого конкурента Serious Sam именно благодаря наличию потрясающих физических эффектов (в основном заключающихся, как вы помните, в красоте умерщвления неприятелей из различных видов оружия).

Ну и, конечно же, так и остался непревзойденным тот уровень интерактивности, который продемонстрировала нам Half-Life 2 (конец 2004 года). Да уж, чуть меньше десятка лет назад, гоняясь с ломиком за хед-крабом, никто и представить себе не мог, что впоследствии, уже в сиквеле знаменитого проекта, способов убить несчастную тварь будет куда как больше, при этом в качестве оружия подойдут различные предметы окружения, будь то кирпич, банка от краски или лезвие от электропилы. Физика в этом экшене установила не просто новую планку реалистичности, но и наглядно продемонстрировала нам, как сильно можно разнообразить геймплей, используя различного рода загадки, основанные на симуляции законов Ньютона. И еще один, далеко небезынтересный факт: вспомните, ведь 2004 год ознаменовался выходом многих революционных проектов, таких как Far Cry или Doom 3, основной фишкой которых являлись потрясающие, доселе невиданные графические красоты. А игрой года была практически всеми признана Half-Life 2, и, думаю, ни у кого нет сомнения, что наличие мощнейших физических эффектов как раз и сыграло в этом ключевую роль.

Но все же, несмотря на такую популярность физики, до сих пор существует ряд игровых жанров, принципиально в ней не нуждающихся. Это, к примеру, пошаговые стратегии, типа Heroes of Might and Magic. В RPG тоже до недавнего времени хитрые физические манипуляции особой популярностью не пользовались, однако выход TES 4: Oblivion показала, насколько интересней орудовать мечом и магией в полностью интерактивном мире, где действуют законы Ньютона.

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

Страница 1: Необходимость симуляции
Страница 2: Разбираемся в движках
Страница 3: Симуляция
Страница 4: Чудеса

Курс молодого бойца: разбираемся в движках

Итак, вначале определимся с терминологией. «Физический движок» (далее просто ФД) — это библиотека, рассчитывающая во время игры физические взаимодействия между объектами виртуального мира, то бишь, симулирующая физические законы. Стоит отметить, что ФД не отображает физику со стопроцентной точностью. Во-первых, это довольно трудоемкая задача, а во-вторых, особая точность просто-напросто не нужна, ибо от физических манипуляций в играх требуется всего лишь подобие реалистичности, правдоподобное до такой степени, чтобы геймер поверил в происходящие события. Ну и, в-третьих, существует множество моментов, когда просто-напросто не может быть достоверной точности. Например, есть куча фантастических проектов, описывающих всякие невероятные события и ситуации, о достоверности симуляции физических эффектов в которых можно только догадываться, ибо в реальной жизни мы вряд ли подобное испытаем или увидим. Не стоит забывать и о множестве аркадных игр, физика в которых присутствует (если вообще наличествует) не столько для придания реалистичности, сколько ради забавы.

Система современных игровых физических движков состоит из двух подсистем: определения столкновений и расчета физических взаимодействий. Далее разберем подробней, как же эти штуки работают.

Столкновение

Подсистема определения столкновений (далее ПОС), в свою очередь, тоже разделяется на два ключевых параметра: скорость работы ПОС и точность определения столкновений. Сильно вдаваться в подробности значения скорости, думаю, не стоит, тут и так все предельно ясно — чем быстрее, тем динамичнее, и, само собой, реалистичнее. А вот от точности определения столкновений уже напрямую зависит «качество» полученных нами эффектов, так как в противном случае недостаточно проработанная точность приведет к появлению артефактов. То есть, различных, режущих глаза глюков, таких как что-то, игнорирующее все физические законы, перекрытие объектов (вспомните, в некоторых играх были случаи, когда тушки врагов, вроде уже довольно удачно ложащиеся на земную поверхность, все же проходили друг сквозь друга). Ну, или же еще один косяк, достойный упоминания, — это неопределение столкновений при разных размерах соприкасающихся друг с другом объектов. Данные проблемы устраняются путем более точных математических просчетов, описания которых мы приводить не будем.

Дабы процессор, занимающийся обработкой команд ПОС, не впадал в депрессию, есть небольшая хитрость, упрощающая просчеты и ускоряющая работу подсистемы. Это разбиение нужного нам физического пространства на подпространства, вследствие чего физика симулируется не для всего объекта в целом, а для отдельного его «куска». Наиболее стандартным считается деление пространства на четыре или восемь подпространств (данные способы называются «quadtree» и «осtree» соответственно). Благодаря данному методу уменьшается количество проверок столкновений, что, разумеется, благостно влияет на скорость работы.

Из-за того, что в ПОС столкновения просчитываются через определенные промежутки времени (дискретная работа), возникает еще одна оплошность — симуляция столкновений быстро движущихся объектов может просто-напросто не фиксироваться! Если учесть тот факт, что основная часть физических эффектов во время игры должна происходить шустро и динамично меняться, то это довольно проблематичная вещь. Однако для устранения данного артефакта некоторые ПОС (к сожалению, не все) содержат в себе фишку, именуемую «continuous collision detection» (система непрерывного отслеживания столкновений). Суть данного метода заключается в том, что проверка столкновений между контактирующими друг с другом объектами производится не между ними самими непосредственно, а между их вытянутыми объемами, которые взаимодействуют между собой в течение всего временного шага. Именно поэтому машина будет врезаться не точно в стену, а в незначительное для глаза пустое пространство перед этой стеной. Вообще, на деле все намного интересней, и к вопросу о том, что собой представляет применение объемов, мы еще вернемся. Однако для начала надо познакомить вас со второй подсистемой.

Симуляция

Подсистема расчета физических взаимодействий, или просто подсистема симуляций (далее ПС), тоже характеризуется двумя основными параметрами: скорость работы ПС и стабильность симуляции. Ну, скорость играет то же значение, что и в предыдущей подсистеме, а вот параметры стабильности симуляции уже непосредственно влияют на саму достоверность физических взаимодействий. И если симуляция работает нестабильно, то начинают проявляться различного рода артефакты, к примеру, подергивающиеся объекты (вспомните хотя бы без причины «истерично» дергающийся на земле труп неприятеля).

Симуляция просчитывается через определенные промежутки времени, а это значит, что необходимо задать определенный временной шаг. Если шаг будет рассчитан неправильно, то симуляция будет работать нестабильно. Какой именно размер шага устанавливать — зависит от конкретного используемого движка. Вот, пожалуй, и все, что стоит знать о работе этой подсистемы.

Прочие фишки физических движков

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

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

Страница 1: Необходимость симуляции
Страница 2: Разбираемся в движках
Страница 3: Симуляция
Страница 4: Чудеса

Хитрости аппроксимации

Но вернемся к теме объемов, затронутой выше. В зависимости от движка, в качестве представления объема для твердого тела используются как различного рода примитивы (прямоугольник, конус, цилиндр и т.д.), так и более сложные тела (многогранники и т.п.). Если движок поддерживает фишку «continuous collision detection» (о ней читайте выше), то сложные объекты как бы описываются несколькими, более простыми телами. В математике данный метод именуется аппроксимация, т.е. приближенное выражение (в нашем случае) геометрических фигур через более простые объекты (примитивы).

Для наглядности продемонстрирую вам всю прелесть аппроксимации на моделях транспорта из GTA: Vice City.

Машина Скорой помощи:

А вот один из мотоциклов:

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

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

Хитрости просчетов

Чтобы все те прелести, о которых я писал выше, заработали, необходимо всего лишь вбить необходимые цифры в нужные формулы. Всякого рода математические манипуляции мы, конечно же, опустим, а вот то, какие именно свойства твердых тел можно задавать в движках, я рассказать просто-таки обязан.

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

Далее, есть параметр упругости (пусть будет тоже от 0 до 1, хотя данное числовое значение зависит сугубо от выбранного физического движка), чем больше это число, тем больше энергии будет поглощаться при соударении объектов друг об друга. Иными словами, можно сказать, что упругость отвечает за то, сколько энергии останется у тела после удара о другое тело. Скажем, в стену попадает кирпич, и, в зависимости от значения упругости, будет рассчитываться, насколько далеко этот самый кирпич отлетит после столкновения со стеной (если вообще отлетит).

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

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

Эффект тряпичной куклы

В последнее время широкую популярность и всенародную любовь получил эффект тряпичной куклы (он же rag-doll), который также основан на базе физики твердых тел. Суть данного метода заключается в том, что тушка убитого противника при падении на землю (а в некоторых играх и при последующем перемещении этого тела по уровню) создает видимость соблюдения всех законов физики, то есть, изгибается и двигается так, как это было бы в реальной жизни.

Однако, помимо твердых тел, данная технология также использует некие сочленения (joint). Под самим понятием joint подразумевают точку, которая соединяет два твердых тела (чаще всего относительно точки joint) и накладывает всякого рода ограничения на положение этих тел в пространстве друг относительно друга. Видов joint на самом деле очень много, и поэтому в различных физических движках присутствуют свои их типы.

Впрочем, для реализации эффекта rag-doll достаточно двух видов общепринятых сочленений: ball-joint и hinge-joint. Первый тип — шарнирное соединение двух тел — необходим для ограничения перемещения объектов относительно друг друга, а также для наложения ограничений на то, как повернуты тела (соединенные этим joint) по трем осям. Благодаря данному способу, голова неприятеля, например, будет поворачиваться не на 360 градусов, а строго по законам анатомии и т.д. Второй вид — hinge-joint — петельное соединение двух тел, которое, в отличие от ball-joint, ограничивает повороты тел относительно друг друга всего лишь по одной оси.

Чтобы все усвоили только что описанную информацию, приведу наглядный пример: скриншот из Doom 3 с установленной модификацией, добавляющей в игру гравипушку (уточняю, в то время, когда мною проводился данный эксперимент, еще не было аддона Resurrection Evil).

На данной картинке мы видим все прелести технологии rag-doll в действии. Стоит еще заметить, что если приглядеться к конструкции пирамиды, то можно заметить между соприкасающимися тушками пустые пространства, наглядно свидетельствующие о присутствии объемов для описания твердых тел…

Вот, собственно, и все, что можно было написать о возможностях физических движков до 2006 года. Далее рассказ пойдет о тех невообразимых технологических красотах, которые появились в этом году.

Страница 1: Необходимость симуляции
Страница 2: Разбираемся в движках
Страница 3: Симуляция
Страница 4: Чудеса

Физические хитрости светлого будущего

В игровой индустрии за последнее время сложилась интересная ситуация: с одной стороны — ненасытные геймеры, постоянно жаждущие чего-то новенького и всегда готовые за это платить, с другой — не менее ненасытные разработчики, падкие на геймерские деньги. Вот и получается, что порядочных и честных игроков, то бишь, таких, как мы, с каждым годом заставляют вкладывать все больше и больше средств в различного рода апгрейды, пичкая свои персоналки всякими новыми железками, чтобы любимые игры могли без напрягов нас радовать и доставлять удовольствие. Причем тут физика, спрашиваете? Да все к тому же! Возрадуйтесь товарищи бойцы, ибо в скором будущем каждый, осмелившийся запустить на своем ПК современную игру, будет обязан перед этим прикрепить к материнской плате еще одну железяку, именуемую ускорителем физики, Physic Processing Unit (PPU).

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

Я же, в свою очередь, считаю должным ознакомить вас вкратце с теми чудесами, которыми нас собираются «пичкать» в ближайшее время. Итак, начнем.

Чудо первое: PhysX

Ghost Recon: Advanced Warfare - первая игра которая использовала физический движок от Ageia.

Слухи об этой чудо-технологии, призванной покорить наши сердца, начались еще с ранней весны 2005. Тогда мало кому известная контора AGEIA объявила о планах создать некий физический ускоритель (к слову, для PCI шины), который бы взял на себя задачу обработки всех симуляций законов Ньютона в игре, при этом, главное, чтобы все эффекты были сделаны на одноименном физическом движке, созданном специально для данной платы. В принципе, означало это, что во время какого-то динамического действа в игре одновременно просчитывались бы десятки тысяч сложных физических эффектов с различными (а не только твердыми) телами.

Прочие возможности PhysX выглядят так: симуляция тысяч твердых тел, причем в качестве их представления могут использоваться объемы различных сложностей; полностью контролируемые joint; симуляция жидких тел (в том числе и их взаимодействия с твердыми телами); качественная симуляция физики автомобилей; непрерывное отслеживание столкновений и т.д. и т.п.

Что сказать, многие разработчики сразу же принялись бить себя в грудь и кричать, что они всецело поддержат данную технологию в своих будущих продуктах. Были даже предположения, что готовящийся к выходу хит TES 4: Oblivion уже обладает новыми возможностями… Но все это было в далеком 2005. А сейчас мы уже воочию убедились, что Oblivion работает без всяких дополнительных физических ускорителей, да и долгожданный PPU PhysX хотя и вышел уже около полугода назад, а так и не получил достойной поддержки от разработчиков. Почему все так плохо?

Может, виной тому задержки с выходом платы? Или же шина PCI, для которой предназначен PhysX, слишком слаба для возложенных на нее задач? А, может, сам физический движок PhysX еще не доработан до должного уровня? Или цена, которая составляет чуть более ста долларов за штуку, оказалась не по карману современным игроманам? Нет уж, тут совсем другая тема, друзья мои. Дело в том, что у компании AGEIA есть серьезный конкурент, не дающий ее детищу как следует раскрутиться на игровом рынке. Кто же это? Встречайте, великое и ужасное…

Чудо второе: Havok FX

Физический движок Havok в представлениях явно не нуждается, в принципе, то же можно сказать и о всеми любимой фирме ATI. Поэтому разве могут возникнуть сомнения в эффективности технологии Havok FX, если для ее создании объединяются две такие крупные конторы: Havok, как разработчик самого движка (Havok FX), и ATI, как «железная» поддержка, предоставляющая свои платы в роли непосредственных ускорителей физики. Однако же история подобного сотрудничества довольна интересна.

Дело в том, что любой современный видеопроцессор способен одновременно производить множество вычислений над огромным количеством объектов, то есть, видеокарточки наших дней обладают большими мощностями. В основном это связано с тем, что для ускорения работы с графикой видеоускорители содержат по несколько вычислительных блоков, более известных всем под названием конвейеры (шейдерная технология). Так вот, сравнивая работу по обсчету симуляции физики с работой шейдерных конвейеров, специалисты из ATI пришли к заключению, что разницы между этими процессами практически нет! Собственно, графическому ускорителю неважно, что просчитывать, главное, чтобы эта работа происходила быстро и параллельно, как в случае с конвейерами.

Вот и получается, что видеокарты от ATI, поддерживающие шейдеры 3.0 версии, начиная с марки Radeon X1600, без проблем могут использоваться как PPU! То бишь, выходит что-то по типу SLI от NVidia (две видеокарты работают синхронно), только одна карточка обрабатывает всю графику, а другая занимается просчетом физики. На данный момент, начиная с серии Radeon X1600, симулируется физика, созданная на базе движка Havok FX.

Технические перспективы, должен вам сказать, открываются просто колоссальные. Это вам и доселе невиданная симуляция эффектов ветра и дыма, симуляция физики жидкостей и взаимодействия их с твердыми телами, более реалистичный rag-doll и, что меня поражает больше всего, потрясающая по реализму симуляция изгибов различных тканей (типа флага, развивающегося на ветру, только при этом все происходит строго по законам физики). На самом деле, фишек очень много, так что более подробное их перечисление ищите на специализированных сайтах. На которых, кстати, уже появились полноценные описания тестирования данной технологии, можно сказать, в действии.

Однако же игр, как и в предыдущем случае, нам пока еще ждать рановато. Может, виной тому не собирающаяся упускать своих позиций AGEIA со своим PhysX? Тем более, цена данной технологии сильно ударит по карману геймера — полторы тысячи зеленых за две карточки — это вам не игрушки! Однако же в этой битве форматов, чувствуется мне, победит все же ATI, со своим Havok FX… Но есть еще один претендент на звание PPU, и это…

Чудо третье: многоядерные процессоры

Итак, перед нами два ненавидящих друг друга конкурента: Intel и AMD, которые уверяют всех, что в скором будущем мощностей их многоядерных платформ будет с лихвой хватать и для обработки физических симуляций, и для прочих задач во время игры. Что ж, довольно реалистичные перспективы, однако же, конкретных решений от этих двух фирм пока нет. Поживем — увидим.

Заключение

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

Ну что ж, искренне надеюсь, что после прочтения вышеизложенного материала каждый боец, овладевший всеми премудростями создания физических эффектов, сможет удивить своих непросвещенных товарищей очередной порцией полученных знаний. Было приятно ознакомить вас с азами технологии, нарекаемой игровой физикой. Благодарю за внимание. И не забывайте, в ближайшее время, как и положено, вас ожидают новые выпуски «Боевых Хитростей» и, соответственно, все более интересные подробности из мира игростроя. До скорых встреч.