Kright

+65
с 2021
4 подписчика
32 подписки

libgdx
На графику не смотрю, занимаюсь только физикой

1

Допустим, что я знаю объём и вязкость масла. Как найти силу трения в амортизаторе, если он сжимается с со скоростью v?
Я предположил, что там линейная зависимость F = k*v. Сейчас коэффициент k я посчитал из данных о том, что жёсткость на отбой 1060 Ньютонов при скорости 0.31 м/с. На сжатие другой коэффициент - сила 283 Н.
Если формула с какая-то другая и нелинейная (например, квадратичная F = k v^2), то мои рассуждения будут неправильными и поведение заметно другое.

Прикольно, не знал про крепление кузова через резинки. Да, относительно жёсткости подвески, кузов на порядок жёстче, но я хотел повторить все эффекты и конкретно этот было легко сделать. Для "рамных" просто укажу жёсткость поменьше и всё будет крутиться :)

Про модель шин в LFS спасибо, попробуй найти описание как она сделана.

При помощи перевода времени на компьютере и отключения интернета можно перепройти любой ивент. Я так себе ae86 добыл, потому что это единственный способ её получить.
Ещё при попытке купить некоторые внутриигровые машинки игра перекидывает в магазин дополнений и без реальных денег их в принципе не купить, если не ставить torrent edition.

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

Я только-только запустил, могу только сказать что игра работает.
Играю на стимдеке + беспроводная мышка.

Про физику я частично написал тут: https://habr.com/ru/articles/818933/

Подход экспериментальный, но вроде рабочий. Если в двух словах - кватернионы это частный случай геометрической алгебры, и можно их обобщить до алгебры, которая кроме вращений ещё и описывает линейные перемещения. Тогда, например, одна сущность может описывать сразу перемещение и поворот, одна сущность описывает комбинацию силы и вращательного момента, одна сущность для скорости (опять же комбинация линейной и вращательной).

Формулы выглядят красиво, но по сложности ближе к тем, которые можно увидеть при использовании кватернионов.

Для ограничений тоже не очень станадртный для игр подход - на основе сил (и сил трения, чтобы гасить колебания). Из-за этого приходится брать большие силы и маленький шаг по времени. Использую метод Рунге-Кутты четвёртого порядка.

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

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

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

Тех, кто играет в автосимуляторы на руле :)

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

2

Часть статьи с интервью интересная. Я думал, движок в отдельном репозитории живёт, а не вместе со всеми играми.

Ещё интересно - нет ли желания в дополнение к С++ использовать что-то ещё, чтобы высокоуровневый код писать каким-то удобным способом без отстреливания ног? Примерно как в UE есть блюпринты или в играх юнити не-движковая часть на более простом и дружелюбном С#.

Провода/шланги это круто и добавляет "реалистичности", но в идеале они должны не торчать наружу, чтобы случайно не повредить их об первое встречное дерево или не чтобы их не зажало в какой-нибудь пружине или между движущимися деталями.
Можешь посмотреть, как в мотоциклах тормозные шланги крепят или в подвеске авто.
Рандомная фотка из интернета для иллюстрации.

2

Меня смущает мост, в реальности дорога по земле идёт.
Живу не совсем тут, но в пешей доступности :)

1

Game Programming Patterns на сайте автора бесплатно доступна, можно отдельные главы читать, они более-менее независимые (на английском, но читается легко).

Всякие MVC, MVVM по ощущеням в играх не очень нужны. С ООП неоднозначно - оно в разных языках разное, то что в одних антипаттерн, в других вполне себе используют. Паттерны из ООП знать полезно, но в идеале надо в каждом конкретном случае прикидывать "а нужен ли вообще этот паттерн тут"

ECS на мой взгляд - вообще отдельная вселенная с кучей своих особенностей, и именно в геймдеве она часто используется. Книжек не подскажу, но встречал хорошую статью: https://habr.com/ru/articles/665276/

2