Программист Маркус Шмидт из мюнхенской студии показывает мне код движка Frostbite на двух мониторах. На одном – формула расчета траектории снаряда, на другом – взрыв в Battlefield 2042.
«Видите эту строчку? Здесь мы игнорируем сопротивление воздуха, – Маркус тыкает пальцем в экран. – В реальности пуля теряет скорость, но игрокам это не нравится. Они хотят попадать туда, куда целятся».
Так начался мой недельный репортаж из игровой индустрии. Я хотел узнать простую вещь: используют ли разработчики настоящую физику или все это красивая имитация?
Лаборатория в офисе Ubisoft
В парижском офисе Ubisoft меня встречает Жан-Люк Дюбуа, ведущий физик-программист Assassin's Creed. Его рабочее место больше напоминает университетскую лабораторию: стопки книг по механике, доска с формулами, макеты средневековых катапульт.
«Люди думают, что мы просто рисуем красивые взрывы, – говорит Жан-Люк, запуская демо-версию игры. – На самом деле за каждым падающим камнем стоят часы расчетов».
Он показывает, как работает система разрушений в игре. На экране рушится стена замка. Каждый кирпич падает по своей траектории.
«Мы используем упрощенную версию уравнений Ньютона, – объясняет Дюбуа. – Полный расчет занял бы слишком много времени. Процессор игровой консоли – не суперкомпьютер NASA».
В коде игры я вижу знакомые формулы из школьного курса физики: F = ma для силы, v = u + at для скорости. Но рядом с ними – странные коэффициенты.
«Это фудж-факторы, – смеется программист. – Мы корректируем физику ради геймплея. Реальная гравитация слишком медленная для экшена».
Секреты движка Unreal
В лондонском офисе Epic Games инженер Сара Томпсон показывает внутренности движка Unreal Engine. Здесь создают инструменты, которыми пользуются тысячи разработчиков по всему миру.
«Наша задача – дать программистам гибкость, – объясняет Сара. – Хотят реализм? Пожалуйста. Хотят аркадную физику? Тоже можем».
Она демонстрирует настройки физического движка. Десятки параметров: коэффициент трения, упругость материалов, плотность воздуха. Все можно настроить под нужды конкретной игры.
«Посмотрите на симулятор гонок, – Томпсон запускает Forza Motorsport. – Здесь мы максимально точно воспроизводим поведение автомобиля. Учитываем аэродинамику, распределение веса, износ шин».
На экране появляются графики с телеметрией виртуального болида. Данные не отличить от настоящих гонок Формулы-1.
«А теперь посмотрите на Mario Kart», – Сара переключается на другую игру. Здесь персонаж прыгает на высоту небоскреба и мягко приземляется. Никаких переломов, никакой инерции.
«Две разные философии. Одна стремится к реализму, другая – к веселью».
Когда физика становится врагом
В студии Rockstar North в Эдинбурге программист Дэвид МакЛауд рассказывает о проблемах реалистичной физики.
«В первых версиях GTA машины вели себя слишком реалистично, – вспоминает он. – Игроки постоянно разбивались на поворотах. Это было не весело».
МакЛауд показывает эволюцию физики автомобилей в серии. В GTA III машины больше напоминали радиоуправляемые игрушки. В GTA V – почти настоящие авто, но с поправками на геймплей.
«Мы увеличили сцепление с дорогой в полтора раза, – объясняет разработчик. – Снизили влияние центра масс. Добавили автоматическую стабилизацию при приземлении».
В коде игры я нахожу комментарий программиста: «Реальная физика = скучная игра. Извините, Ньютон».
Революция ray tracing
В nvidia в Мюнхене инженер Андреас Вебер показывает новейшие разработки в области игровой физики. На экране – демонстрация трассировки лучей в реальном времени.
«Раньше мы имитировали отражения и освещение, – говорит Вебер. – Теперь можем рассчитывать их по-настоящему. Каждый луч света следует законам оптики».
Он запускает Cyberpunk 2077 с максимальными настройками. Отражения в лужах, преломление света в стекле, мягкие тени – все выглядит фотореалистично.
«Но даже здесь мы идем на компромиссы, – признается инженер. – Полный ray tracing требует миллиардов вычислений в секунду. Мы используем приближения и деноизинг».
В демо-режиме я вижу, как алгоритмы заполняют пробелы между рассчитанными лучами. Искусственный интеллект угадывает, как должно выглядеть изображение.
Физика жидкостей и разрушений
В лаборатории Havok в Дублине физик Мартин О'Коннор демонстрирует симуляцию жидкостей. На экране течет вода, реагируя на препятствия.
«Мы решаем уравнения Навье-Стокса в упрощенном виде, – объясняет О'Коннор. – Каждую каплю представляем как частицу. Это не совсем точно, но работает быстро».
Он показывает разные подходы: от простых спрайтов до сложных вычислений методом частиц. Чем реалистичнее физика, тем больше нагрузка на процессор.
«В мобильных играх мы используем предварительно записанные анимации, – говорит разработчик. – На консолях можем позволить себе настоящие расчеты».
Система разрушений Havok питает десятки игр. От простого разбития стекла до обрушения целых зданий. Каждый обломок рассчитывается индивидуально.
Искусственный интеллект против физики
В DeepMind в Лондоне исследователь Алексей Петров рассказывает о будущем игровой физики. Вместо формул – нейронные сети.
«Мы обучаем ИИ предсказывать поведение объектов, – объясняет Петров. – Показываем миллионы примеров движения, и система учится имитировать физику без уравнений».
На демонстрации нейросеть управляет виртуальным персонажем. Он ходит, бегает, падает – все выглядит естественно. Но никаких формул в коде нет.
«Преимущество в скорости, – говорит исследователь. – ИИ работает быстрее традиционных расчетов. Недостаток – непредсказуемость. Система может выдать неожиданный результат».
Пока такие технологии экспериментальные. Но через пять лет они могут изменить всю индустрию.
Компромисс между точностью и производительностью
В AMD в Унтершляйсхайме инженер Стефан Мюллер объясняет главное ограничение игровой физики – мощность процессора.
«У нас есть 16 миллисекунд на кадр, – говорит он. – Из них на физику можно потратить максимум 2-3 миллисекунды. Остальное время нужно графике и геймплею».
Мюллер показывает профайлер производительности современной игры. Физика занимает лишь небольшую часть вычислительных ресурсов.
«Поэтому мы постоянно упрощаем. Вместо сложных формул используем таблицы значений. Вместо точных расчетов – приближения».
В некоторых играх физика работает с частотой 30 Гц вместо 60. Глаз не замечает разницы, но процессор разгружается вдвое.
Через неделю репортажа у меня сложилась четкая картина. Современные игры используют настоящую физику, но в сильно упрощенном виде. Разработчики идут на компромиссы ради производительности и геймплея.
«Наша цель – не точность, а правдоподобность, – резюмирует Маркус Шмидт из EA. – Игрок должен поверить, что мир живет по логичным правилам. Неважно, совпадают ли они с реальными законами физики».
Следующее поколение консолей обещает больше вычислительной мощности. Возможно, тогда игровая физика станет ближе к научной точности. Но пока разработчики мастерски создают иллюзию реальности, используя лишь крупицы настоящей науки.
В конце концов, главное в игре – не точность формул, а удовольствие от процесса. И с этой задачей современные физические движки справляются отлично.