Як проводиться структурний аналіз в іграх (наприклад: будівництво мостів, копати чи вмирати та 3D)?


11

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

Ви знаєте, як вони зроблені? Чи мають вони довільне обмеження чи взагалі використовують інший алгоритм? Крім того, я думаю, що все, що ви придумали, можна застосувати до 3D-систем, але якщо ні, чи якщо це не очевидно, будь-ласка, принаймні дайте нам поняття, як ви могли б використовувати його для 3D, оскільки мені це цікаво і для 2D, і для 3D ігри.

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

EDIT: Якби я здогадувався, я б сказав, що Dig або Die зберігає вектори для кожного блоку, а потім запускати ітераційний алгоритм до того моменту, що додаткова точність в моделюванні безглузда для меж системи (наприклад, система була б занадто великою, щоб не зруйнуватися в будь-якому випадку), тому вона обмежена напіввільною (оскільки заснована на застосуванні) кількістю ітерацій. Але я можу помилитися.


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

Відповіді:


5

Я - розробник Dig or Die, тому можу розповісти трохи більше про фізику гри

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

Тож я насправді робив щось подібне ... Не знаю, персональний алгоритм не дуже точний, але він працює досить добре для гри. У мене 1 вектор для кожного перетину блоків (тому кожен блок пов'язаний до 4-х векторів, по одному на кожній його стороні). Кожен блок має "вагу" і "штовхає" вектори навколо нього (порівну), тому загальна величина векторів дорівнює його висоті. Коли блок прив’язаний до землі, всі сили / вагу, що підштовхуються до нього, ніколи не «відштовхуються назад», тому природно при достатній кількості ітерацій вся система знаходить рівновагу. Вага / сила буде на зразок "припливу" до опорних точок і дуже добре змінить структуру. Ви можете побачити результат тут (з елементом "Ейфелеві окуляри"): введіть тут опис зображення

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

Але, чесно кажучи, мені так не подобається моя система, для деяких випадків вона не дуже точна; здебільшого тому, що я не керую компресією та розширенням. Можливо, є спосіб зробити більш точне моделювання, ніж у мене, без більшого процесора, але мої навички (і час) щодо цього були дуже обмеженими, тому я зробив усе, що міг :-)

(PS: Ви здогадалися, були дуже гарні :-))


4

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

Ітеративна релаксація широко використовується для ферм , але я успішно моделював з нею великі тверді предмети (бетон): це просто проста ферма, суглоби якої несуть навантаження замість того, щоб бути вільним поворотом.


Що цікаво, це те, що релаксація - це техніка вирішення статичних ферм, тому вона точна. У зв'язку з цим він використовується для ітеративного обчислення зміщення, яке приводить структуру до рівноваги.

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

  • У вас є динамічна структура, яка правильно реагує на будь-які зовнішні збурення
  • У вас є структура, яка точно реагує на втрату опорних членів (думаю, швидке незаплановане розбирання), перекладаючи свою напругу на інших членів. Насправді дуже приємно спостерігати за переміщенням стресових потоків, коли суглоби ламаються в ланцюговій події
  • У вас є нелінійне моделювання! Подальше пояснення того, що я маю на увазі:
    Зазвичай статичний аналіз висуває гіпотезу про малу деформацію , коли структура не рухається далеко від свого початкового стану. У цих межах статичний аналіз правильний, оскільки суглоби насправді не сильно зміщені . Але коли структура деформується при руйнуванні ваги, ви отримаєте точні результати до кінця за допомогою нелінійного моделювання, тоді як ви просто отримаєте недійсний стан від лінійного вирішувача

Ітераційне розслаблення досить просто, чисельна стабільність . Я використовував схему RK4 успішно для досягнення стабільності з великими структурами контету. Недолік полягає в тому, що він, як правило, має досить малу жорсткість з приводу продуктивності, тому може часом відчувати себе як м'яке желе.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.