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


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

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

Обсуждаем, делимся впечатлениями, новой информацией
offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1316
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

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

Сообщение Ben80 » 10 ноя 2020, 14:03

Насчет коробки согласен :smile1:
Но геймплей у игры настолько хороший, что она и с багами хорошо игралась. Мне тоже жалко, что фиксы будут, но для кого....

***

Можно не сомневаться, что не один баг можно найти в самых разных программных процедурах. Но большого смысла торопиться их найти не вижу.

Отвлекаясь немного от багов и переходя к особенностям геймплея - примерно прикинул, что ИИ недооценивает вес ударных спеллов раза в полтора (не из-за багов, а просто такая система). Ну и я бы еще ввел коэффициент, повышающий их вес для случаев, когда сила противостоящих армий сильно различается - по таблице.
Эх, как представлю, что ИИ будет регулярно подтачивать мои войска ударной магией - так хорошо становится :smile12: Только не подумайте, что я мазохист.
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1316
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

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

Сообщение Ben80 » 10 ноя 2020, 19:07

AlexSpl писал(а):

игра с этим минусом становится такой, какой её хотели видеть


Смотрел, кстати, бегло ваш список изменений для TE Единички. Не запускал ни разу ни оригинал, ни TE, но, по-моему, вы отлично справились с задачей - не подмешали в игру своих гениальных/"гениальных" идей, и, в то же время, значительно повысили качество игры.
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1316
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

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

Сообщение Ben80 » 28 ноя 2020, 17:41

Насколько я понял, ИИ в Тройке неоткрытую часть карты не видит (за исключением случая потери всех замков + видит угрозы со стороны героев противника даже сквозь неоткрытое пространство), но при выборе цели своего движения анализирует все/почти все открытые клетки карты. А в Двойке он всю карту видит, но анализирует только ближайший к герою кусочек карты.
Если кому надо, в Двойке можно увеличить этот анализируемый кусочек карты - изменить 800, скажем, на 1800 по адресу 0x4AC7C4+1 (PoL 2.1 Eng). Слишком сильно я бы, пожалуй, не стал добавлять - игра может стать менее интересной.
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1316
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

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

Сообщение Ben80 » 06 дек 2020, 13:13

В алгоритме для расчетных битв (0x4AF410 для PoL Eng 2.1) расчетная сила войск перед сравнением с оппонентом возводится в степень 2,75 и дополнительно делается поправка, еще уменьшающая вероятность выиграть битву для атакующей стороны, если она слабее. Однако симметрично поправка почему-то не учитывается для случая, когда атакующий сильнее, хотя это даже более важно, поскольку нападает обычно сильнейший. Неоднократно видел, как ИИ исчезает с карты после боя с не очень сильными нейтралами.
Стоит ли считать это багом и не ввести ли фикс ?

Код: Выделить всё
int __stdcall fixQuickBattle(LoHook* h, HookContext* c)
{
   if(*(float*)(*(float**)(c->ebp + 0x28)) >= (float)0.92)
      *(float*)(*(float**)(c->ebp + 0x28)) = (float)1.0;
   else
      if(*(float*)(*(float**)(c->ebp + 0x28)) >= (float)0.88)
         *(float*)(*(float**)(c->ebp + 0x28)) += (float)0.07;
      else
         if(*(float*)(*(float**)(c->ebp + 0x28)) >= (float)0.80)
            *(float*)(*(float**)(c->ebp + 0x28)) += (float)0.05;
         else
            if(*(float*)(*(float**)(c->ebp + 0x28)) >= (float)0.70)
               *(float*)(*(float**)(c->ebp + 0x28)) += (float)0.04;
            else
               if(*(float*)(*(float**)(c->ebp + 0x28)) >= (float)0.60)
                  *(float*)(*(float**)(c->ebp + 0x28)) += (float)0.02;

   return EXEC_DEFAULT;
}
...
_PI->WriteLoHook(0x4AF738, fixQuickBattle);


***

Хотя, пожалуй, на баг это не тянет. Возможно, оригинальная поправка для атакующей стороны, если она слабее, это что-то вроде наказания за наглость :smile1:
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1316
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

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

Сообщение Ben80 » 06 дек 2020, 18:20

Есть подозрение, что ИИ поднимает скелетов в расчетных битвах только против героев, а против нейтралов - нет. Проверю это. К сожалению, мне иногда проще опытным путем проверить (распечаткой из хуков), чем дать однозначный ответ, глядя на код. Квалификация хромает :smile1: Степень 2,75 в посте выше тоже опытным путем определял, не смог сориентироваться по ассемблерному коду.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5555
Зарегистрирован: 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)
Поблагодарили: 2165 раз.

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

Сообщение AlexSpl » 07 дек 2020, 08:45

Я в своё время детально разбирал расчётные битвы для Героев 1 в связи с прецедентом на турнире, когда победа была достигнута путём багоюза слива компов. Этот алгоритм большей частью перекочевал в Герои 2 (теория слива). Для меня было откровением узнать, как непрофессионально* реализована битва компов (пункт, когда уровень существа не влияет на вероятность его потери). Интересно, в Героях 2 так же или всё-таки доработали алгоритм?

* Хотя причины могут быть разными: от банального "спешили, забыли и не доработали" до "сделали поблажку игрокам из-за недостаточного тестирования, чтобы даже самые трудные карты проходились". Это мы теперь годами :smile1: можем разбирать алгоритмы игры, а писались они за год или даже меньше.

Фиксить расчётные битвы, думаю, теперь не имеет смысла. Раньше они были нужны для экономии в вычислениях. Но их было бы здорово заменить реальным невидимым автобоем, как в HotA.
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1316
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

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

Сообщение Ben80 » 07 дек 2020, 09:21

AlexSpl писал(а):

(пункт, когда уровень существа не влияет на вероятность его потери).


А что в этом такого ? :smile1: Конкретно по этому пункту не вижу проблемы - в битве может быть какой угодно расклад. Самый сильный стек вполне может понести наибольшие потери.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5555
Зарегистрирован: 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)
Поблагодарили: 2165 раз.

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

Сообщение AlexSpl » 07 дек 2020, 09:22

Как что такого? Расклад известен в начале битвы.

ОК. Вы не читали. Дело в том, что вероятность потерять 1 крестьянина равна, например, вероятности потерять одного дракона. Вот, о чём я говорю.
Последний раз редактировалось AlexSpl 07 дек 2020, 09:27, всего редактировалось 1 раз.
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1316
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

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

Сообщение Ben80 » 07 дек 2020, 09:25

AlexSpl писал(а):

Для меня было откровением узнать, как непрофессионально* реализована битва компов


Конечно, в коде Героев 2 много чего, скажем так, неидеального.
Однако... возможно, я настолько профнепригоден, но у меня часто бывают ситуации, когда я подумываю поменять оригинальный код в какую-то сторону, но смотрю повнимательнее - и, оказывается, там уже это есть, причем даже ( :smile1: ) более проработанно, чем по моей задумке.
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1316
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

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

Сообщение Ben80 » 07 дек 2020, 09:26

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

Пред.След.

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

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

Сейчас этот форум просматривают: Yandex [bot] и гости: 4

cron