MailRuChamps / raic-2018

Russian AI Cup — artificial intelligence programming contest. Official website: http://russianaicup.ru
43 stars 32 forks source link

Опечатка в документации? Или Баг в физическом движке! #90

Closed tonykozlovsky closed 5 years ago

tonykozlovsky commented 5 years ago

Неправильный рассчёт столкновения роботов при расширении.

Опытным путём в локал раннере проверить возможную ошибку не удалось, из-за сложности воспроизведения. let delta_velocity = dot(b.velocity - a.velocity, normal) + b.radius_change_speed - a.radius_change_speed Надо заменить на let delta_velocity = dot(b.velocity - a.velocity, normal) - b.radius_change_speed - a.radius_change_speed Потому что в случае, когда 2 робота одновременно "расширяются", вместо того, чтобы оттолкнуться с большей силой, они компенсируют расширение друг друга и вовсе не отталкиваются

ivan-kudziev commented 5 years ago

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

mixei4 commented 5 years ago

Кажется, ошибка воспроизводится с клавиатуры. Если подойти вплотную к стоящему игроку и прыгнуть, то иногда робот отпрыгивает в сторону (робот a), а иногда вертикально вверх (робот b).

tonykozlovsky commented 5 years ago

Суть в том, что оба, находясь очень близко, должны прыгнуть одновременно, и чтобы b.radius_change_speed было равно a.radius_change_speed, по этому я пока не понял, как ты предлагаешь воспроизвести

mixei4 commented 5 years ago

Я более простой случай рассматриваю. Если расширяется только один робот. Так вот в случае если этот робот по воле случая окажется роботом a, то слолкновение произойдёт, а если b, то нет.

tonykozlovsky commented 5 years ago

Всё, понял, согласен, действительно результат этой формулы зависит от рандомного порядка роботов. Там ещё про модуль мысль хорошая. Действительно, если бы так было задумано, то нужен как минимум модуль.

tonykozlovsky commented 5 years ago

А если это воспроизводится в локал раннере, то это не опечатка

kuviman commented 5 years ago

Вы правы, это был баг (не только в документации). Обновлены правила/ЛР