Объявления

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

Улучшение ИИ

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5547
Зарегистрирован: 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)
Поблагодарили: 2162 раз.

Re: Улучшение ИИ

Сообщение AlexSpl » 27 май 2020, 19:06

Вообще-то новый Disguise - это ваша идея, которая мне понравилась. Заклинание есть в оригинале и его нужно как-то возвращать, не говоря уже о том, что это бы разнообразило игру онлайн. В шахматах же тоже не всё на строгом расчёте, но ещё и на эмоциях. А в игре эмоции - это как раз то, что больше всего запоминается после партии.

Типа в отчётах: я решился проверить его героя лошком и не пожалел! Так и знал, что сукин сын под Маскировкой :smile1:
Вернуться к началу

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

Re: Улучшение ИИ

Сообщение Ben80 » 27 май 2020, 19:11

Ну, кстати, Маскировка в оригинале то тоже не бесполезное заклинание по своей сути - все-таки она не дает узнать истинный состав/численность армии. А по факту заклинание оказывается бесполезным из-за того что 1) не действует на ИИ 2) герои в игре слишком дешевы и лошком проверить можно.
Я то кстати большой любитель шахмат. А вы в них играете ?
Вернуться к началу

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

Re: Улучшение ИИ

Сообщение AlexSpl » 27 май 2020, 19:15

Раньше играл и неплохо.

Disguise можно довести до ума. Рандомные коэффициенты, защита от Видения и т.п. Я никогда не ставил одну-единственную партию во главу угла. Поэтому риск всегда интересен. Но он должен стоить больше маны, чем оригинальный "риск" :smile1:

Плюс "раскусить" Disguise уже маленькая победа.
Вернуться к началу

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

Re: Улучшение ИИ

Сообщение Ben80 » 27 май 2020, 20:08

AlexSpl писал(а):

Да, но дело в том, что когда-то я начинал, даже не имея базы WoG и декопмилятора. Читал чистый asm-код. It's not the rocket science, как пишут ребята из Hex-Rays :smile2: Ты почитай старые темы на DF2. Каких, казалось бы, примитивных вещей тогда не знали. Это сейчас раздолье. Сейчас не в почёте брейкпоинты даже.


Предположу даже, что то, как сейчас обстоит дело в моддинге, вам нравится меньше, чем как было раньше. То есть вот когда ничего нет, кроме этого самого чистого асма, а также этих ваших любимых компиляторов и декомпиляторов :smile1: - вот это вас полностью устраивает.

***
Я когда был старшеклассником, ходил в шахматный клуб и немного удивлялся на старичков, которые нормальным шахматам предпочитали блиц. А сейчас сам на chess.com играю только блиц - оказалось, что при видимом напряге это как раз самый щадящий для мозгов режим игры.
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: Улучшение ИИ

Сообщение as239 » 12 июн 2020, 09:13

А есть понимание как работает AICalculateMapPosWeight?
Там уже приведенный к расстоянию вес возвращается или нет?
Не совсем понятная точная логика, например я ставлю объекту вес 100000000 и ИИ к нему не идет.
Ставлю в два раза меньше - 50000000, и он идет.
Хочется однозначно уметь отправлять ИИ в заданную точку, а не примерно как сейчас получается.
Вернуться к началу

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: Улучшение ИИ

Сообщение RoseKavalier » 13 июн 2020, 13:49

I don't think it's just a simple move-to-highest weight system, NWC used several specialized algorithms to accomplish things.
There are several vectors being used, it's another good reversal job(
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: Улучшение ИИ

Сообщение as239 » 27 июн 2020, 08:06

В функции sub_00431360 ИИ нанимает героя.
Но только одного за ход, чтобы это исправить сделал LoHook на 00428EAB:
Код: Выделить всё
_LHF_(IncreaceHeroesPerTurn){

   int ecxcopy = c->ecx;
   for (int i = 0; i < 6; i++)
   {
      FASTCALL_0(char, 0x431360);
      c->ecx = ecxcopy ;
   }
   return EXEC_DEFAULT;
}

Это работает, но иногда появляется вылет - файл во вложении.
Пробовал менять адреса хука, делал даже через HiHook A0_Tavern_CreateHero_sub_5C16E0, но все равно появляется плавающая ошибка по адресу 004E2987.
В каком месте можно корректно встроиться своим алгоритмом найма героев ИИ?
Вложения
HD_CRASH_LOG.TXT
(7.26 КБ) Скачиваний: 172
Вернуться к началу

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

Re: Улучшение ИИ

Сообщение AlexSpl » 27 июн 2020, 14:05

Как расследовать такие вещи? Видим:

Код: Выделить всё
Adress:      [ 0x004E2987 ]

Идём по этому адресу и видим, что инструкция пытается читать данные по несуществующему адресу. Там два регистра ebx и eax. Смотрим далее:

Код: Выделить всё
Context { EAX: 0x00000000, ECX: 0x00000000, EDX: 0x00000001, EBX: 0x8EA1EAE4, ESP: 0x001998BC, EBP: 0x00199934, ESI: 0x00000000, EDI: 0x00000000 }

Ага. Виноват регистр ebx. Теперь поднимаемся выше по коду и пытаемся понять, как в ebx оказывается это значение.
Вернуться к началу

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: Улучшение ИИ

Сообщение RoseKavalier » 27 июн 2020, 14:11

Function 0x431360 signature is incorrect.

Код: Выделить всё
char __thiscall AI_HireHeroes_00431360(void *this)


this argument is related to AI data array 0x6929A0, sorry don't have more info.
You should pass your ecx copy to the function for safety.
Последний раз редактировалось RoseKavalier 27 июн 2020, 14:14, всего редактировалось 1 раз.
Вернуться к началу

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

Re: Улучшение ИИ

Сообщение AlexSpl » 27 июн 2020, 14:13

Это же __thiscall?
Вернуться к началу

Пред.След.

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

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

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

cron