Физика в компьютерных играх

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

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

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

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

Объяснение этому просто - в логических играх физика имеет «прикладное» значение – она нужна лишь для решения определенных задач, и поэтому ей незачем предусматривать «лишнего». Другими словами, для физики в головоломках не требуется высот – лишь возможность логичного решения задачи.

В трехмерном мире все на порядок сложнее. Дополнительное измерение открывает игроку множество возможностей испытать физический движок «на прочность». Разработчику приходится составлять «глобальные» алгоритмы, предусматривающие все возможности, а в дальнейшем ему остается лишь подставить нужные значения – например, тяжесть или плотность.

Поэтому нередко небольшие логические вставки в 3D-Action дают намного больший простор для комбинирования и «реализма». Однако вставки эти, начиная от «чтобы пройти дальше, вам придется поставить одну коробку на другую» и кончая многообещающей игрой Portal (в которой нам разрешат с помощью специального устройства открывать порталы, представляющие собой эдакие коридоры с нулевой длиной – через портал можно будет видеть, стрелять, перемещать предметы, перемещаться самому, ну и отправлять врагов в нежелательные для них места), все-таки не главное в игровом процессе.

Практически все игры, обладающие реалистичной физикой, - трёхмерные. 3D даёт большие возможности для разработки физических движков.

Рассмотрев же эту россыпь авто- и авиа- симуляторов, уже упоминавшихся 3D-Action’ов и Action/RPG, то можно заметить определенные «закавыки». Например, интерактивность окружения (Другими словами, взаимодействие игрока с «неодушевленными» предметами. Нередки случаи, когда один стул от удара разлетается на части, а второй, с виду неотличимый от первого, не только героически выдерживает прямое попадание из гранатомета, но и не сдвигается с места), реалистичность текучих жидкостей (В большинстве игр в воде не преломляется свет, а дожди и водопады, падающие в реки слабо похожи на свои «прототипы») и многое другое…

Но, с другой стороны, реализма в современных играх тоже немало. Всем константам разработчики присваивают максимально близкие к «реальным» значения, а разным телам – разные массы, соответствующие массам их прототипов. Более того – в недавней игре Dark Messiah of Might & Magic учитывались кинетическая и потенциальная энергии предметов, что сильно повысило качество интерактивности.

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

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

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

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

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

Моделирование физических процессов на компьютере

Практически вся сегодняшняя астрофизика существует благодаря вычислительным машинам. Время от времени на компьютерах моделируют то взрыв звезды и появление Сверхновой, то образование туманности, то что-нибудь обнаружат по косвенным данным – например, чёрную дыру или планеты…

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

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

Ну а если подходить к делу профессионально, то можно создать такой продукт, по которому будут проходить тренировки «реальных» служащих этой профессии. Примером тому – серия Microsoft Flight Simulator.

Можно также отметить игру «Заработало» и серию The Incredible Toons, с которых можно начинать изучение физики

Но зачем нужно это моделирование, если есть возможность подойти к делу «по-настоящему»?

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

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

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

Давайте посмотрим, как можно смоделировать, скажем, движение маятника.

Шар радиусом r в точке с координатами x, y совершает колебания на нити длиной L – r. Точка xp, yp – место крепления нити к шару, xc, yc – точка подвеса, u – угол отклонения маятника. Ускорение a = g . sin (u), определяющее движение, переменно по величине и направлению.

Движение маятника точно запрограммировать не удастся ввиду отсутствия явных формул для скоростей и координат - это. Применим классический подход – усредним ускорение на малых интервалах времени dt, рассчитывая движение «кусочками» и рассматривая его при этом как равноускоренное. За интервал времени dt шар пройдет путь ds = v . dt + a . dt2/2, скорость в конце интервала станет равной v + du5, где du = ds/L.

Теперь остаётся этап собственно программирования, а потом и отладки. В ходе тестирования можно обнаружить, что полученная физическая модель далеко не идеальна. Здесь начинается финальная, наверное, самая долгая часть – доработка модели и устранение недостатков. Можно добавить затухание движения маятника и его вращение, можно изменить место крепления нити к шару, и многое другое…