Объявления
Поздравляем
VDV_forever


Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru.
Я оторву свою задницу от всех дел и обязательно Вас активирую! :smile10:
Добро пожаловать на геройский форум! :smile25:

Интересные факты

Обсуждаем, делимся впечатлениями, новой информацией
offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5540
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2155 раз.

Re: Интересные факты

Сообщение AlexSpl » 01 сен 2013, 17:28

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

 
Хотя нужно ещё уточнить, что будет в том случае, если гномы отразят разряд молнии. Будут ли они помечены как "уже получившие разряд" или нет? Если нет, то гномы могли бы обрывать "Цепь молний" путём неоднократного сопротивления заклинанию, что, насколько я знаю, встречается на практике.

Расстояние между отрядами измеряется в целых числах (пикселях): [sqrt((x1 - x2)^2 + (y1 - y2)^2)], поэтому при совпадении расстояний решает порядок обхода, что, скорее всего, имеет место быть в приведённом мной примере с "Крестоносцами - Копейщиками - Крестьянами". Если расставить войска так, как описано в примере, и направить "Цепь молний" на отряд Копейщиков, то следующий разряд "Цепи молний" необязательно пройдёт через Крестоносцев. Если Крестьяне в начальной расстановке будут стоять выше Крестоносцев, разряд молнии достанется отряду Крестьян, а не отряду Крестоносцев! Видимо, расстояния до обоих отрядов равны, поэтому выбирается тот отряд, который при переборе расстояний встречается раньше.

Пример. Координаты "центральных точек" отрядов обороняющейся стороны (широкие ряды, начало боя) будут следующими:
1. Peasants: (551; 73)
2. Archers: (551; 156)
3. Rangers: (551; 239)
4. Pikemen: (551; 320)
5. Veteran Pikemen: (551; 404)

Как видно, горизонтальные координаты у всех отрядов равны (551). Значит, при определении минимального расстояния решать будет разность между вертикальными координатами отрядов. Пусть мы направляем "Цепь молний" на второй отряд (Archers). Какой из отрядов получит следующий разряд? Нам достаточно рассмотреть два ближайших отряда: первый и третий, т.к. расстояния до остальных отрядов будут заведомо больше (пусть союзные отряды расположены на другом конце арены):

Archers - Peasants: |156 - 73| = 83
Archers - Rangers: |156 - 239| = 83

При равенстве расстояний урон достаётся отряду, идущему раньше при переборе, т.е. разряд получит первый отряд (Peasants). Как нетрудно догадаться, если переставить местами первый и третий отряды, в данном случае ничего не изменится: "Цепь молний" всё равно "пойдёт" вверх.

Пусть теперь мы направляем цепь молний на третий отряд:
Rangers - Archers: |239 - 156| = 83
Rangers - Pikemen: |239 - 320| = 81

Как видно, расстояние до Копейщиков меньше (т.к. они немного выше ростом), поэтому следующий разряд достанется именно им.
Последний раз редактировалось AlexSpl 01 сен 2013, 18:47, всего редактировалось 2 раз(а).
Вернуться к началу

offlineАватара пользователя
Владимир  
Эксперт
Эксперт
 
Сообщения: 1031
Зарегистрирован: 30 окт 2012, 18:37
Пол: Не указан
Награды: 3
Высшая медаль (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (1)
Поблагодарили: 614 раз.

Re: Интересные факты

Сообщение Владимир » 01 сен 2013, 18:31

AlexSpl писал(а):

...или отразившие его (гномы).

 
Хотя нужно ещё уточнить, что будет в том случае, если гномы отразят разряд молнии. Будут ли они помечены как "уже получившие разряд" или нет? Если нет, то гномы могли бы обрывать "Цепь молний" путём неоднократного сопротивления заклинанию, что, насколько я знаю, встречается на практике.


Насколько я понимаю... если неверно - поравьте, гномы обрывают цепь молний сразу, жОстко, резко. По ощущениям, достаточно однократного срабатывания сопротивления - и цепь обрывается полностью
AlexSpl писал(а):

Расстояние между отрядами измеряется в целых числах (пикселях): [sqrt((x1 - x2)^2 + (y1 - y2)^2)], поэтому при совпадении расстояний решает порядок обхода, что, скорее всего, имеет место быть в приведённом мной примере с "Крестоносцами - Копейщиками - Крестьянами". Если расставить войска так, как описано в примере, и направить "Цепь молний" на отряд Копейщиков, то следующий разряд "Цепи молний" необязательно пройдёт через Крестоносцев. Если Крестьяне в начальной расстановке будут стоять выше Крестоносцев, разряд молнии достанется отряду Крестьян, а не отряду Крестоносцев! Видимо, расстояния до обоих отрядов равны, поэтому выбирается тот отряд, который при переборе расстояний встречается раньше.

Ну, корень-то зачем? Минимум ведь ищем всего-лишь. ;)
Полагаю, расстояния измеряются по центрам гексов, для двухгексовых отрядов - не знаю как, надо смотреть. Ну не по спрайтам точно.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5540
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2155 раз.

Re: Интересные факты

Сообщение AlexSpl » 01 сен 2013, 18:44

Цитата:
Насколько я понимаю... если неверно - поравьте, гномы обрывают цепь молний сразу, жОстко, резко.

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

Цитата:
Ну, корень-то зачем? Минимум ведь ищем всего-лишь.

Так есть в игре. А корень нужен для отрисовки дуг молнии.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5540
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2155 раз.

Re: Интересные факты

Сообщение AlexSpl » 01 сен 2013, 19:57

Есть предположение, что высота отрядов на поле боя считается равной высоте соответствующих кадров MONH00??.ICN.

Опытные данные (координаты "средней точки" отряда, находящегося в левом верхнем гексе):

Peasant: (111; 73) при Height("MONH0000.ICN") = 64
Archer: (111; 72) при Height("MONH0001.ICN") = 66
Ranger: (111; 71) при Height("MONH0002.ICN") = 68
Pikeman: (111; 68) при Height("MONH0003.ICN") = 74
Veteran Pikeman: (111; 68) при Height("MONH0004.ICN") = 74

Т.е. координата Y "средней точки" для отрядов, стоящих в первом горизонтальном ряду, равна Y = 105 - [Height(ICN) / 2].

Проверим:
73 = 105 - [64 / 2] - true
72 = 105 - [66 / 2] - true
71 = 105 - [68 / 2] - true
68 = 105 - [74 / 2] - true

Тогда общая формула для ординаты средней точки отряда должна выглядеть так: Y[middle] = 63 + 42 * y - [Height(ICN) / 2], где у - порядковый номер горизонтали (для удобства счёт горизонталей начинаем с 1).

Можно проверить координаты Y из предыдущего поста:
Peasants: Y[middle] = 63 + 42 * 1 - [64 / 2] = 73
Archers: Y[middle] = 63 + 42 * 3 - [66 / 2] = 156
Rangers: Y[middle] = 63 + 42 * 5 - [68 / 2] = 239
Pikemen: Y[middle] = 63 + 42 * 7 - [74 / 2] = 320
Veteran Pikemen: Y[middle] = 63 + 42 * 9 - [74 / 2] = 404

Как видим, всё сходится. Что касается абсциссы средней точки, то тут всё проще: она не зависит от размеров кадра ICN и равна:

X[middle] = 67 + 44 * x, где x - номер гекса для нечётных рядов (счёт ведём слева направо, начиная с 1). Число 44 я нашёл так:
(551 - 111) / (11 - 1), где 11 - число гексов в ряду.

Осталось найти X[middle] для чётных рядов и посмотреть, как находится абсцисса средней точки для двухклеточных отрядов.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5540
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2155 раз.

Re: Интересные факты

Сообщение AlexSpl » 01 сен 2013, 20:55

Итак, координаты средней точки отряда, участвующей в алгоритме выбора минимального расстояния между отрядами при направлении "Цепи молний":

X[middle] = 67 + 44 * x для нечётных рядов;
X[middle] = 45 + 44 * x для чётных рядов, где x - номер гекса в ряду (считаем слева направо, начиная с 1).

Для двухклеточных отрядов к X[middle] необходимо добавить или отнять полклетки: 44 / 2 = 22 (в зависимости от стороны).

Y[middle] = 63 + 42 * y - [Height(ICN) / 2], где y - номер горизонтали (считаем сверху вниз, начиная с 1).

Например, найдём центральную точку отряда Всадников, расположенных в 5-м ряду на 4-м гексе:
X[middle] = 67 + 44 * 4 + 22 = 265
Y[middle] = 63 + 42 * 5 - [89 / 2] = 229

UPD: Проверил опытным путём, что для Всадников, стоящих на 4-м гексе в 5-м ряду, X[middle] действительно будет равна 265, но Y[middle] = 225 (!), а не 229. Посмотрел на соответствующий кадр Всадников (MONH0007.ICN) и заметил, что он немного обрезан (копьё частично не влезло). Значит, нужно искать необрезанный вариант MONH00??.ICN. В любом случае, для большинства существ Height(ICN) - есть высота соответствующего кадра MONH00??.ICN. Почему Всадники и Чемпионы не влезли в кадр пока не понятно.

UPD2: У четырёх отрядов реальная высота отличается от высоты соответствующего кадра MONH00??.ICN:

Height(Cavalry) = 97
Height(Champion) = 97
Height(Zombie) = 70
Height(Mutant Zombie) = 70

Остальные вроде как совпадают.

Если теперь найти Y[middle] (см. пример выше), то всё сходится: Y[middle] = 63 + 42 * 5 - [97 / 2] = 225.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5540
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2155 раз.

Re: Интересные факты

Сообщение AlexSpl » 01 сен 2013, 23:26

Вот пример того, как гномы отражают разряд "Цепи молний":

Гномов было по 100 в стеке. "Цепь молний" была направлена на первый отряд. Четвёртый отряд отразил заклинание, и урон получил следующий отряд гномов. Однако если целевой отряд гномов сопротивляется заклинанию, то "Цепь молний" не срабатывает вообще. В нашем случае, если бы у верхнего отряда гномов сработало сопротивление магии, то никто бы не получил урона вовсе. Также следует отметить, что отряды гномов, успешно отразившие разряд "Цепи молний", больше не рассматриваются в качестве цели для оставшихся ударов молнии.
Последний раз редактировалось AlexSpl 23 окт 2022, 02:37, всего редактировалось 1 раз.
Вернуться к началу

offlineАватара пользователя
dragun97yu  
Посвященный
Посвященный
 
Сообщения: 87
Зарегистрирован: 03 окт 2012, 13:41
Пол: Не указан
Награды: 1
Цветы (1)
Поблагодарили: 43 раз.

Re: Интересные факты

Сообщение dragun97yu » 02 сен 2013, 09:56

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

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5540
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2155 раз.

Re: Интересные факты

Сообщение AlexSpl » 02 сен 2013, 11:22

Цитата:
Отряд-фантом живёт столько ходов, сколько у героя единиц силы магии (естественно, если его не убьют раньше).

Как "Берсерк" и "Гипноз", если кто не в курсе.
Вернуться к началу

offlineАватара пользователя
dragun97yu  
Посвященный
Посвященный
 
Сообщения: 87
Зарегистрирован: 03 окт 2012, 13:41
Пол: Не указан
Награды: 1
Цветы (1)
Поблагодарили: 43 раз.

Re: Интересные факты

Сообщение dragun97yu » 11 сен 2013, 18:43

Решил посмотреть заклинание стражей стихий (воды, огня, воздуха, земли).
Описание, да, соответствтует реальности -- работает на шахты. Но когда я просто так кастую его, Герои пишут что-то наподобие "Встаньте у входа шахты (лесопилки, лаборатории алхимика)..." Вопрос: неужто планировалось сделать заклинание доступным и на не-шахтовые ресурсодобывалки? Иначе, почему такой текст?
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5540
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2155 раз.

Re: Интересные факты

Сообщение AlexSpl » 11 сен 2013, 20:08

Вряд ли. Простое предупреждение, чтобы не кастовали где попало :)
Вернуться к началу

Пред.След.

Вернуться в Общий раздел

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

cron