Як працює фізика в іграх: просте пояснення без формул

8 хв читання Антон Сопраненко
Як працює фізика в іграх: просте пояснення без формул
Антон Сопраненко

Антон Сопраненко

Автор матеріалу

Ігрова фізика не намагається повністю скопіювати реальний світ. Її головне завдання – швидко порахувати достатньо правдоподібну поведінку об’єктів, щоб гравець повірив у те, що бачить на екрані. Коли персонаж стрибає, м’яч відскакує від стіни, машина входить у поворот або ящик падає зі сходів, гра десятки разів на секунду оновлює невелику модель світу. У цій моделі є маса, швидкість, сили, зіткнення й правила, які визначає розробник. Нижче – просте пояснення без формул, але з логікою, яка допомагає зрозуміти, чому ігрова фізика іноді виглядає дуже реалістично, а іноді смішно ламається.

Зміст

Найкоротше пояснення

Фізика в іграх працює як дуже швидкий калькулятор для рухомих речей. Гра бере поточний стан об’єкта, дивиться, які сили на нього діють, перевіряє зіткнення з іншими об’єктами й обчислює, де він має опинитися в наступну мить.

У реальному світі рух безперервний. У грі він розбитий на маленькі кроки: кадр, ще кадр, ще кадр. Якщо ці кроки достатньо дрібні, око сприймає рух як плавний і природний.

Що гра взагалі називає фізикою

У побуті ми кажемо «фізика гри» про все, що поводиться як предмети в реальному світі: персонаж падає, колесо котиться, двері відчиняються від удару, уламки розлітаються після вибуху. Усередині гри це набір правил і чисел.

Для кожного важливого об’єкта гра може зберігати:

  • положення в просторі;
  • швидкість і напрям руху;
  • масу;
  • форму для зіткнень;
  • тертя;
  • пружність, тобто наскільки сильно він відскакує;
  • обмеження, наприклад шарнір дверей або підвіска автомобіля.

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

Як гра рахує рух кадр за кадром

Уявімо куб, який падає зі столу. На початку гра знає: куб ось тут, він має певну масу, а вниз діє гравітація. Через дуже короткий проміжок часу гра оновлює його швидкість і переміщує трохи нижче. Потім повторює це знову.

Цей процес називають симуляцією. Вона працює приблизно так:

  1. Гра бере поточний стан усіх фізичних об’єктів.
  2. Додає вплив сил: гравітації, поштовхів, вибухів, двигунів, тертя.
  3. Рахує нові швидкості й позиції.
  4. Перевіряє, чи об’єкти зіткнулися.
  5. Виправляє положення, щоб вони не проходили одне крізь одне.
  6. Передає результат графіці, щоб це було видно на екрані.

Важливо, що графіка й фізика не завжди працюють з однаковою частотою. Картинка може оновлюватися 60, 120 чи більше разів на секунду, а фізика часто рахується з фіксованим кроком. Це допомагає уникати ситуацій, коли одна й та сама сцена поводиться по-різному на слабкому й потужному комп’ютері.

Чому об’єкти не провалюються крізь підлогу

Для зіткнень гра зазвичай використовує спрощені форми. Видима модель персонажа може бути складною, з руками, одягом і дрібними деталями. Але для фізики це часто капсула, коробка або набір простих фігур. Так легше й швидше перевіряти, чи є контакт із підлогою, стіною або іншим персонажем.

Коли об’єкт рухається, фізичний рушій перевіряє: чи перетинається його форма зі ще якоюсь формою. Якщо так, гра розуміє, що сталося зіткнення. Далі вона вирішує, що робити:

  • зупинити об’єкт;
  • відштовхнути його назад;
  • змінити напрям руху;
  • додати обертання;
  • погасити частину швидкості через тертя.

Саме тому м’яч може відскочити від стіни, а важкий ящик після падіння просто зупиниться. Різниця не в магії, а в налаштуваннях: масі, пружності, терті та формі зіткнення.

Іноді об’єкти все ж провалюються крізь підлогу. Зазвичай це трапляється, коли вони рухаються надто швидко, а фізичний крок замалий, щоб вчасно помітити перетин. Простий приклад – дуже швидка куля. За один крок симуляції вона може опинитися перед стіною, а за наступний – уже за нею. Щоб цього не було, для швидких об’єктів використовують спеціальні перевірки безперервного зіткнення.

Як працюють стрибки, падіння й гравітація

Стрибок у грі часто не є точним копіюванням людського руху. Коли ви натискаєте кнопку, персонаж отримує поштовх угору. Далі гравітація поступово зменшує його вертикальну швидкість, зупиняє підйом і тягне вниз.

Але розробники майже завжди підкручують ці правила заради відчуття керування. У реальності людина не може змінювати напрям у повітрі так вільно, як у платформерах. У грі це дозволяють, бо так приємніше грати. Так само падіння може бути швидшим, ніж підйом, щоб стрибок здавався чітким і не «ватним».

Для гравця важливі не формули, а відчуття:

  • чи зрозуміло, куди приземлиться персонаж;
  • чи не здається керування запізнілим;
  • чи можна передбачити наслідки стрибка;
  • чи справедливо гра карає за помилку.

Тому хороша ігрова фізика часто є не найреалістичнішою, а найчитабельнішою.

Чому ігрова фізика не завжди реалістична

Повністю реалістична фізика була б дорогою для процесора й не завжди цікавою для гравця. У грі потрібно рахувати не один об’єкт, а десятки або сотні: персонажів, снаряди, транспорт, уламки, двері, пастки, воду, тканину. Усе це має працювати в реальному часі.

Тому розробники постійно йдуть на компроміси. Вони спрощують форми, обмежують кількість активних об’єктів, вимикають фізику для далеких предметів або замінюють складну симуляцію готовою анімацією.

Наприклад:

СитуаціяЯк могло б бути в реальностіЯк часто роблять у грі
Двері після ударуЗалежать від петель, матеріалу, сили ударуВідчиняються за простим правилом або анімацією
ВибухУламки мають складну траєкторіюЧастина уламків намальована, частина має фізику
Машина в поворотіПотрібні шини, підвіска, покриття, вагаВикористовують спрощену модель керування
Одяг персонажаТканина згинається й чіпляєтьсяЧасто це анімація або спрощена симуляція

Це не обман у поганому сенсі. Це оптимізація. Якщо гравець бачить переконливий результат і гра працює стабільно, завдання виконане.

Що таке фізичний рушій

Фізичний рушій – це частина ігрового рушія або окрема бібліотека, яка відповідає за симуляцію руху й зіткнень. У сучасних інструментах багато таких можливостей уже вбудовані. Наприклад, у Unity є окремі системи для 3D- і 2D-фізики, колайдерів, твердих тіл, з’єднань і налаштувань зіткнень.

Фізичний рушій не робить гру автоматично реалістичною. Він дає набір інструментів. Розробник вирішує, які об’єкти мають фізику, які правила застосовувати, що можна штовхати, що має ламатися, а що повинно залишатися нерухомим.

Зазвичай у фізичному рушії є кілька базових понять:

  • тверде тіло – об’єкт, який має масу й може рухатися під дією сил;
  • колайдер – невидима форма, за якою перевіряють зіткнення;
  • тригер – зона, яка не зупиняє об’єкт, але повідомляє грі, що хтось у неї зайшов;
  • матеріал – набір властивостей на кшталт тертя й пружності;
  • з’єднання – обмеження між об’єктами, наприклад петля, пружина або вісь колеса.

Коли ці елементи налаштовані добре, гравець майже не думає про фізику. Він просто відчуває, що світ реагує логічно.

Що робити, якщо фізика в грі поводиться дивно

Якщо ви гравець і бачите дивну фізику – персонаж застрягає, предмети тремтять, машина підстрибує без причини, – це не завжди проблема вашого комп’ютера. Часто причина в самій грі або конкретній сцені.

Можна спробувати кілька безпечних кроків:

  • обмежити частоту кадрів, якщо стара гра ламається на дуже високому FPS;
  • оновити гру до останньої версії;
  • вимкнути моди, які змінюють персонажів, транспорт або карти;
  • перезапустити рівень, якщо об’єкт застряг у геометрії;
  • перевірити цілісність файлів гри в магазині, якщо проблема повторюється.

У старих іграх фізика іноді прив’язана до частоти кадрів. Тоді на сучасному комп’ютері все може рухатися занадто швидко або непередбачувано. Саме тому обмеження FPS часто допомагає більше, ніж зниження графічних налаштувань.

Якщо ви розробник-початківець, найчастіші причини дивної фізики інші: неправильний масштаб об’єктів, занадто мала або велика маса, надмірне тертя, перетин колайдерів на старті сцени, рух фізичного об’єкта напряму через позицію замість сили або швидкості.

FAQ

Чи використовують ігри справжні закони фізики?

Так, але у спрощеному вигляді. Ігри беруть ідеї з реальної фізики – швидкість, прискорення, силу, масу, тертя, зіткнення, – але рахують їх приблизно й з оптимізаціями для реального часу.

Чому в одних іграх предмети поводяться реалістично, а в інших ні?

Бо різні ігри мають різні цілі. Симулятору важлива точність, аркаді – швидкість і веселий контроль, платформеру – передбачуваний стрибок. Реалізм не завжди робить гру кращою.

Чому персонаж може носити величезну зброю або стрибати нереально високо?

Тому що це дизайнерське рішення. Фізика в іграх підпорядкована геймплею. Якщо нереалістичний стрибок робить гру зрозумілішою й цікавішою, розробники залишать його.

Що таке ragdoll-фізика?

Це симуляція тіла як набору частин, з’єднаних суглобами. Її часто видно, коли персонаж падає після удару й тіло вже не керується звичайною анімацією.

Чому дрібні предмети іноді тремтять на столі?

Зазвичай через неточності симуляції, занадто складні зіткнення або дуже малі проміжки між поверхнями. Фізичний рушій постійно намагається «виштовхнути» об’єкти з перетину, і це може виглядати як тремтіння.

Чи можна зробити гру з повністю реалістичною фізикою?

Теоретично можна наблизитися до цього в окремих аспектах, але повна реалістичність для всього світу надто дорога й часто непотрібна. Ігри зазвичай імітують тільки те, що важливо для досвіду гравця.

Чому вода й тканина в іграх такі складні?

Бо вони постійно змінюють форму. Тверду коробку рахувати простіше: вона рухається й обертається як один об’єкт. Вода, дим, волосся або тканина потребують значно більше обчислень, тому їх часто спрощують.

Підсумок

Фізика в іграх – це швидка й розумно спрощена симуляція, яка створює відчуття живого світу. Гра не рахує весь реальний всесвіт, а лише ті речі, які потрібні для геймплею: рух, падіння, зіткнення, тертя, відскоки, транспорт, двері, уламки. Хороша ігрова фізика не обов’язково найточніша. Вона передбачувана, стабільна й допомагає гравцеві інтуїтивно розуміти, що станеться після його дії.

Схожі статті