Russian AI Cup

Расширенный поиск  
Страницы: [1]

Автор Тема: Баг определения столкновения MM с визардом  (Прочитано 2265 раз)

ud1

  • Full Member
  • ***
  • Сообщений: 98

Игра http://russianaicup.ru/game/view/73598
Тик 8238, на следующем тике зафиксировалось столкновение снаряда с моим волшебником, хотя теоретически он уже должен был пролететь мимо меня.

Тик 8238, снаряд пролетает мимо:


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


Вот анимация положений визарда и снаряда:


Предполагаю, что работает так, что сначала двигаются все волшебники, потом определяется столкновение со снарядами, потом двигаются снаряды. Хотя логично было бы сначала определить новые координаты всех объектов в игре и потом уже определять столкновения.
Записан

recar

  • Jr. Member
  • **
  • Сообщений: 26
Re: Баг определения столкновения MM с визардом
« Ответ #1 : Ноября 29, 2016, 08:52:50 pm »

снаряды проверяются не точечно, а либо с более мелким шагом, либо отрезками
Записан

infsega

  • Jr. Member
  • **
  • Сообщений: 38
Re: Баг определения столкновения MM с визардом
« Ответ #2 : Ноября 29, 2016, 08:57:08 pm »

Вроде ж снаряд должен задеть центр юнита, а не тело?
Записан

ud1

  • Full Member
  • ***
  • Сообщений: 98
Re: Баг определения столкновения MM с визардом
« Ответ #3 : Ноября 29, 2016, 09:04:12 pm »

Расстояние между центрами должно быть меньше суммы радиусов.

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

Adler

  • Jr. Member
  • **
  • Сообщений: 47
Re: Баг определения столкновения MM с визардом
« Ответ #4 : Ноября 29, 2016, 09:31:47 pm »

Скачал replay по token`у, посмотрел в local-runner, всё так - это баг, не должно такого быть.
Записан

Deo

  • Jr. Member
  • **
  • Сообщений: 47
Re: Баг определения столкновения MM с визардом
« Ответ #5 : Ноября 29, 2016, 09:41:50 pm »

Скачал replay по token`у, посмотрел в local-runner, всё так - это баг, не должно такого быть.
объясни как ты это сделал
я так понял токен можно только в репитере юзать
Записан

Adler

  • Jr. Member
  • **
  • Сообщений: 47
Re: Баг определения столкновения MM с визардом
« Ответ #6 : Ноября 29, 2016, 09:48:27 pm »

1) view-source:http://russianaicup.ru/game/view/73598
2) CTRL-F
3) token
4) делаешь ссылку http://russianaicup.ru/boombox/data/games/bgaky1dlt0bntifyihsrk3o8kzccozkg
5) скачиваешь файл в папку к local-runner`у
7) переименовываешь его в 73598.log
6) открываешь local-runner-replay.default.properties
7) делаешь replay-file=73598.log
8 ) local-runner-replay.bat
Записан

Deo

  • Jr. Member
  • **
  • Сообщений: 47
Re: Баг определения столкновения MM с визардом
« Ответ #7 : Ноября 29, 2016, 09:51:33 pm »

спасибо!
Записан

mortido

  • Full Member
  • ***
  • Сообщений: 96
Re: Баг определения столкновения MM с визардом
« Ответ #8 : Ноября 29, 2016, 10:18:19 pm »

Все так. Сначала двигаются маги (телепорт), потом запускается симуляци полета снаряда (скорее всего микротики как раньше было) и его столкновений.
Записан

ud1

  • Full Member
  • ***
  • Сообщений: 98
Re: Баг определения столкновения MM с визардом
« Ответ #9 : Ноября 29, 2016, 11:46:51 pm »

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

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

recar

  • Jr. Member
  • **
  • Сообщений: 26
Re: Баг определения столкновения MM с визардом
« Ответ #10 : Ноября 30, 2016, 12:16:05 am »

Так а в чем баг?
В том что визарды не плавно перемещаются?
Записан

mortido

  • Full Member
  • ***
  • Сообщений: 96
Re: Баг определения столкновения MM с визардом
« Ответ #11 : Ноября 30, 2016, 12:26:47 am »

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

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

Не совсем. Я просто попробовал сделать тест, где снаряд прилетает на границу юнита и он отходит в этот же тик. Урона не было => сначала перемещаются маги, затем снаряд. Кто-то другой проверил, что визарды перемещаются телепортируясь не задевая за объекты по пути, а пули нет (что вполне логично, учитывая их скорость). И по мне так это просто особенность реализации, с которой можно жить. Баг возможно тут есть, если в точке где пуля остановилась она проверяется на столкновение два раза. Вот тут по мне так логичнее на следующем тике брать уже пулю со смещением на 0,1скорости.

~tl;dr~
Маги должны двигаться как можно проще, чтобы не моделировать физику не полного шаг. Пули слишком быстрые и можно считать их движение плавным.
Записан

ud1

  • Full Member
  • ***
  • Сообщений: 98
Re: Баг определения столкновения MM с визардом
« Ответ #12 : Ноября 30, 2016, 12:36:59 am »

Так а в чем баг?
В том что визарды не плавно перемещаются?

Баг в том, что мир не согласован. Что объекты перемещаются не одновременно. Что визард столкнулся со снарядом, который в тот тик уже должен был находится далеко в другом месте. Т.е. сейчас происходит:
1. Передвигаются визарды
2. Проверяется столкновение со снарядами.
3. Передвигаются снаряды.

А должно быть по грамотному так:
1. Передвигаются все объекты в мире, включая и визардов и снаряды.
2. Проверяются столкновения по новым координатам объектов.

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

recar

  • Jr. Member
  • **
  • Сообщений: 26
Re: Баг определения столкновения MM с визардом
« Ответ #13 : Ноября 30, 2016, 12:55:29 am »

Ты предлагаешь чтобы снаряды перелетали мелкие деревья? и края волшебника?

Или ты предлагаешь каждый тик считать дробно и все по чуть-чуть двигать?

Зачем усложнять модель, если в этот раз игра не про физику? Главное, чтобы было понятно как оно работает.
Записан

jurifoll

  • Jr. Member
  • **
  • Сообщений: 37
Re: Баг определения столкновения MM с визардом
« Ответ #14 : Ноября 30, 2016, 12:58:43 am »

Цитировать
А должно быть по грамотному так:
1. Передвигаются все объекты в мире, включая и визардов и снаряды.
2. Проверяются столкновения по новым координатам объектов.
А почему вы считаете такой вариант более грамотным? По-моему оба варианта примерно равнозначны (этот даже немного менее корректный, т.к. снаряд на излете может лететь неполный тик). Главное, чтобы была определенность. Даже если бы порядок был случаен, тоже вариант, но это уже другая механика была бы. Ну вот в хоккее, например, для некоторых событий вероятность явно задавалась, а тут получается косвенно.
Записан

ud1

  • Full Member
  • ***
  • Сообщений: 98
Re: Баг определения столкновения MM с визардом
« Ответ #15 : Ноября 30, 2016, 01:16:43 am »

Цитировать
А должно быть по грамотному так:
1. Передвигаются все объекты в мире, включая и визардов и снаряды.
2. Проверяются столкновения по новым координатам объектов.
А почему вы считаете такой вариант более грамотным? По-моему оба варианта примерно равнозначны (этот даже немного менее корректный, т.к. снаряд на излете может лететь неполный тик). Главное, чтобы была определенность. Даже если бы порядок был случаен, тоже вариант, но это уже другая механика была бы. Ну вот в хоккее, например, для некоторых событий вероятность явно задавалась, а тут получается косвенно.

Так тела должны сталкиваться в один и тот же момент времени. Здесь же получается, что визард находящийся в будущем тике сталкивается с со снарядом находящимся в предыдущем тике. Объекты в будущем сталкиваются с телами в прошлом. Это лишено физического смысла.

На самом деле, раз есть быстро движущиеся объекты, то можно было все моделировать по микротикам, тогда и вопросов бы не возникало. Визардов двигать соответсвенно на столько, насколько получится, возможно на часть того пути, которых он хочет пройти. Сейчас до сих пор непонятно, как проверяется столкновение снарядов, дискретно, или геометрически точно по времени? Движение визардов в правилах описанно, а снарядов нет.
Записан

ud1

  • Full Member
  • ***
  • Сообщений: 98
Re: Баг определения столкновения MM с визардом
« Ответ #16 : Ноября 30, 2016, 01:32:46 am »

Ты предлагаешь чтобы снаряды перелетали мелкие деревья? и края волшебника?

Или ты предлагаешь каждый тик считать дробно и все по чуть-чуть двигать?

Зачем усложнять модель, если в этот раз игра не про физику? Главное, чтобы было понятно как оно работает.

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

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

recar

  • Jr. Member
  • **
  • Сообщений: 26
Re: Баг определения столкновения MM с визардом
« Ответ #17 : Ноября 30, 2016, 01:39:19 am »

Да, согласен - было бы хорошо, если бы дали больше инфы.

У тебя в картинке нет состояния снаряда между последним видимым и исчезнувшем. в нем и происходит столкновение.
Записан

Gassa

  • Newbie
  • *
  • Сообщений: 3
Re: Баг определения столкновения MM с визардом
« Ответ #18 : Ноября 30, 2016, 02:29:34 am »

Я думал, что это примерно так сделано.

Вот летит MM, сейчас он пролетел 480.
На следующем тике ему надо оказаться в 520.
Но у него дальность, предположим, только базовые 500 (ну или maxCastDistance=490, например).
Тогда он ставится на эти самые 500 (или 490) от стартовой точки, то есть между 480 и 520.
И в этой точке проверяется, кого он задел.

При этом визард за этот тик уже прошёл свой шаг назад целиком.
А снаряд пролетел только половину (или четверть) скорости, но всё равно проверился на столкновение в конце тика.

(Может быть, конечно, столкновение проверяется с позицией визарда в нецелый момент тика, соответствующий доле расстояния, которое пролетел MM.
Этот момент я не проверял, но мне кажется, что это было бы слишком умно.)

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

Если моё понимание не соответствует тому, что на самом деле происходит - я тоже хочу понять, как правильно.
« Последнее редактирование: Ноября 30, 2016, 02:32:11 am от Gassa »
Записан
Страницы: [1]