Pull to refresh

Comments 20

Статья по физике в игре. И ни одной офрмулы. Ни одной теоремы. Там импульсная физика или какая? Континиоус колижн детекшн есть? Коллижн респонз делается силой или ипмульсом?
Это серия статей, в первой части есть достаточно формул и алгоритмов. Первой игре про Соника уже 25 лет, не ожидайте там моделирования физики. Это скорее любопытный набор хаков, которыми пользовались разработчики для имитации физических эффектов.
и я скажу, это до сих пор офигительно!
Если скорость неограничена, то что мешает проходить сквозь тонкие стенки при максимально возможном ускорении?
Видел только прохождение сквозь камни.
У Соника и тайлов уровня есть коллайдеры, которые препятствуют прохождению через них, подробнее о них можно почитать в первой части. Надеюсь, я правильно понял ваш вопрос?
Ок, тогда переформулирую так: какая скорость должна быть у Соника, чтобы он проходил насквозь эти коллайдеры?
Да никакая. Там «continuous collision detection». Он не пролети сковь даже стену в 1 пиксель. Строится геометрия между позициями и ловится проникновение.
В какой части про это написано? В первой что-то не могу найти.
Ни в какой. Автор не разработчик физики для игр. Он просто переводчик. Мой комментарий выше был заминусован.
Можешь почитать главу «2.4.3 Discrete Versus Continuous Motion» в Real-Time Collision Detection by Christer Ericson
http://realtimecollisiondetection.net/blog/?page_id=2
Глянул ваш комментарий, наверно минусующим не понравилось, что английские слова вы написали русскими =)
Там «continuous collision detection».

Почему вы так думаете?
Потомучто для этого используется либо очень маленький fixed_timestep для интегрирования физики, либо continuous collision detection. Человек спросил про проникновение сквозь предметы, если скорость будет на столько большей, что за dt между кадрами, объект пролетит через всё, что только можно.
Ничто не мешает проходить через стенки, ровно ничто. Скорость (в пикселях/шаг) должна быть больше «толщины» стенки. Типичные стены в игре бывают толщиной 16 и 32 пикселя. Вторые в большинстве случаев пролететь невозможно, а вот с первыми обычно бывает достаточно просто: нужно, во-первых, развить скорость более 16 пикселей за шаг (т.е 4096 субпикселей за шаг), во-вторых, спозиционироваться так, чтобы ни на одном шаге X-координата персонажа не появилась внутри этой стенки (ширина персонажа, равная 18 пикселей, при этом не учитывается. Таким образом, чем выше скорость, тем больше шансов пролететь сквозь стенку. Всякие умные словечки, которыми бросается qwerty1231234, к сожалению, далеки от истины, и мне, честно говоря, не совсем ясно, зачем он бросается утверждениями типа «он не пролетит даже стену в 1 пиксель».

Левая граница уровня, кстати, также обычно имеет толщину 16 пикселей, что даёт возможность, пролетев её насквозь, «телепортироваться» в конец уровня.

Прохождение сквозь камни (и любые другие объекты), про которые вы говорите, имеет несколько иную природу и основано на том, что столкновения с объектами не проверяются, если объект находится за пределами кадра, причём для разных типов объектов необходимо разное удаление от кадра для того, чтобы столкновения не проверялись. Камни и шипы, к примеру, имеют меньший «радиус» действия, чем мониторы.

Вот видео, которое позволит вам оценить возможности, открываемые высокими скоростями, хотя я уже помещал подобное в самом первом комментарии в этом топике.
Да, всё верно. Посмотрел второе видео, забавные глитчи возникают при спидране.
К слову, если кто-то не в курсе, как делаются подобные «сверхточные» спидраны, я писал об этом в одном из своих постов.
Так если тебе не понятно, то может почитаешь что-нибудь про физику для игр, не?
16 пикселей за шаг (т.е 4096 субпикселей за шаг)

Пипец. нету никаких пикселей за шаг или не пикселей за шаг. Мир живет за счет p = p0 + v*t + a*t*t/2. Если между кадрами большое dt, то тело и пройдет большое расстояние. А это нужно контролить. Пост самоутверждения каких-то философов.
Во-первых, я не разработчик игр и такие детали мне не нужны. Просто некоторые детали игровой физики могут быть необходимы не только разработчикам и ромхакерам, но и представителям других прикладных областей (в моём случае это ассистированное скоростное прохождение). Поэтому я говорю принятым в наших кругах языком, который лично для тебя может показаться некорректным. Но то, что мне необходимо для моей деятельности, связанной с этой игрой, я знаю. Насчёт того, что «нету никаких пикселей за шаг» почитай, пожалуйста, вот эту статью. Думаю, кое-что прояснится. В этой игре вся физика построена на изменении координат, скоростей и т.п. за единицу игрового времени — кадр (в терминологии этой серии хабратопиков называемую шагом), и, в силу особенностей архитектуры, мы вынуждены оперировать исключительно с целыми числами (дробные величины имитируются при помощи этих самых субпикселей). На каждом шаге координаты и скорости перевычисляются с учётом состояния персонажа, при этом используются практически только операции сложения и вычитания. А твои попытки самоутвердиться выглядят как-то странно. Пусть даже ты что-то и знаешь о теории платформеров вообще, какой смысл делать заявления применительно к конкретной игре, не зная, какой механизм там имеет место?
Sign up to leave a comment.

Articles