Как проводится структурный анализ в играх (например, строительство моста, Dig или Die и 3D)?


11

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

Ребята, вы знаете, как они сделаны? Есть ли у них произвольные ограничения или они используют другой алгоритм в целом? Кроме того, я думаю, что все, что вы, ребята, можете придумать, может быть применено к 3D-системам, но если нет или если это не очевидно, пожалуйста, по крайней мере, дайте представление о том, как вы могли бы использовать его для 3D, так как я заинтересован в этом как для 2D, так и для 3D игры.

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

РЕДАКТИРОВАТЬ: Если бы я должен был сделать предположение, я бы сказал, что Dig или Die хранит векторы для каждого блока, а затем запускает итерационный алгоритм до такой степени, что дополнительная точность в моделировании не имеет смысла для ограничений системы (например, система была бы слишком большой, чтобы не потерпеть крах в любом случае), поэтому она ограничена полу-произвольным (потому что основано на приложении) количеством итераций. Но я могу ошибаться.


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

Ответы:


5

Я разработчик Dig или Die, поэтому я могу немного подробнее рассказать об игровой физике

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

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

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

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

(PS: вы догадались, были очень хороши :-))


4

Лично у меня был хороший успех с Iterative Relaxation . Я думаю, что это очень хорошо следует законам физики, когда имеешь дело с объектами, составленными из блоков блоков. Я считаю, что серия BridgeBuilder основана на таком методе, хотя у меня нет источника, чтобы подтвердить это.

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


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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.