Войти
ФлеймФорумПроЭкты

Я накатал сурф/джамп мап (2 стр)

Страницы: 1 2 3 Следующая »
#15
3:31, 6 апр. 2020

Delfigamer
> Что до провалов - удивительно, но у меня не получилось провалиться, даже когда
> я старался специально - какую бы высокую скорость я себе не назначал, движок
> всё равно не давал мне проникнуть сквозь землю. Только разогнавшись до 25 км/с
> я смог вырваться из карты, да и то, не через землю, а сквозь наружнюю
> энергосферу.
там же видно на видео, что проблема возникла не из-за большой скорости, а из-за неточного решения множественных контактов. чтобы воспроизвести проблему, сделай в ландшафте яму размером в одну ячейку и положи в неё персонажа.


#16
9:19, 6 апр. 2020

Suslik
> там же видно на видео, что проблема возникла не из-за большой скорости, а из-за
> неточного решения множественных контактов
Странно это.
Я пользуюсь KinematicBody - когда физический объект водится пользователем за ручку, но не напрямую, а через move_and_collide(delta_vector). По описанию, он должен сам проверить путь на коллизии, и если по дороге объект упирается в геометрию - остановить его заранее и вернуть информацию о коллизии.
То есть, я даже не решаю эти контакты, их разбирает физдвижок.

Вырезал узкую глубокую дырку и залез. С точки зрения моего кода - игрок скользит, и вектор скорости выправляется по стенке; а с точки зрения физдвижка - упирается в геометрию, и move_and_collide ничего не делает и возвращает стенку напротив; которую мой код воспринимает как очередную поверхность для скольжения и выравнивает вектор скорости по ней.
По-хорошему, конечно, следовало бы такие ситуации учитывать, и на второй-третьей коллизии подряд выравнивать скорость по оси пересечения/заглушать его в ноль; однако, даже и без такого, сам по себе физдвижок и без этого всё равно должен сам проверять запрошенное перемещение на коллизии и не пускать куклу внутрь геометрии. Что лично у меня и происходит.
И вот это-то и вызывает больше всего вопросов. Почему у людей проваливается, а у меня - нет? Я лысый что ли? Годот использует разные физдвижки на разных компах? Bullet использует разные солверы в зависимости от видеокарты и драйверов? Муть какая-то.

#17
9:23, 6 апр. 2020

Delfigamer

Зачем накатал, раскатай обратно.
#18
9:33, 6 апр. 2020

Delfigamer
Сольверы не могут быть разными. На gpu  разве что, но физику твердых тел движки на нем не считают.
У тебя железо какое?

#19
9:33, 6 апр. 2020

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

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

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

#20
9:49, 6 апр. 2020

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

#21
9:51, 6 апр. 2020

Mira
> с флексом, стоило пропустить на секунду цикл сольвера, как случался хаос.
нет абсолютно никакой разницы, если таймстеп фиксирован

#22
(Правка: 10:04) 10:01, 6 апр. 2020

Посмотрел в исходниках - на Bullet, запрос проходит через btCollisionWorld::convexSweepTest, который, судя по виду сверху, всё-таки производит CCD.

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

Есть ещё подозрение, что это HTerrain чудит. Пожалуй, попробую собрать уровень из коробок и выкатить его.

Mira
> У буллета возможно физика и подстраивается, но условия для пролета все равно
> создаются.
Как я уже говорил, в Годоте физика не подстраивается, она всегда работает с постоянным шагом.

Mira
> Попробуй тупо убрать спам в консоль, вероятно проблема решится
Крайнюю версию пробовал?

#23
10:02, 6 апр. 2020

Suslik
Скорее всего да, то в играх при лагах все время бы проваливались в геометрию. Возможно что тупо совпадало, что провал происходил после начала спама в консоль.

#24
10:04, 6 апр. 2020

Delfigamer
Ну да, там и 5 минут не проходит. Сначала лезут ошибки , потом провал.

#25
10:05, 6 апр. 2020

Mira
> Ну да, там и 5 минут не проходит. Сначала лезут ошибки , потом провал.
На второй версии тоже?

#26
10:07, 6 апр. 2020

Mira
> Ну да, там и 5 минут не проходит.
если у тебя действительно проваливается, а у ОПа действительно нет, то дело может в разной частоте обновления физики, которая может быть каким-то образом привязана к частоте кадров. например, у тебя может в дровах стоять vsync, а у него — нет.

#27
10:08, 6 апр. 2020

Delfigamer
Ща комп включу проверю. На работу ещё рано)

#28
10:14, 6 апр. 2020

Suslik
> если у тебя действительно проваливается, а у ОПа действительно нет, то дело
> может в разной частоте обновления физики, которая может быть каким-то образом
> привязана к частоте кадров. например, у тебя может в дровах стоять vsync, а у
> него — нет.
Было бы странно, потому что частота физики тоже задаётся в настройках проекта.

#29
10:34, 6 апр. 2020

Delfigamer
не воспроизводится кароче баг. спама тоже нет.

Страницы: 1 2 3 Следующая »
ФлеймФорумПроЭкты