Wake of Gods Forum | Форум Во Имя Богов
AI - искусственный интеллект (ИИ) - Printable Version

+- Wake of Gods Forum | Форум Во Имя Богов (http://wforum.heroes35.net)
+-- Forum: Герои Меча и Магии 3.5 WoG/ERA (/forumdisplay.php?fid=99)
+--- Forum: Моды (/forumdisplay.php?fid=104)
+---- Forum: Теория, идеи, обсуждение (/forumdisplay.php?fid=184)
+---- Thread: AI - искусственный интеллект (ИИ) (/showthread.php?tid=2580)


AI - искусственный интеллект (ИИ) - GhostManSD - 10.07.2010 16:17

(10.07.2010 16:07)Efrit Wrote:  
Quote:Интересно, можно ли заставить ИИ либо трястись возле монстра, либо отважно нападать, едва его увидев?
Ты про глобальную карту? Тогда ресивера !!AI вполне хватит...

Но это привязка вроде к опр. объекту (сейчас точно не помню, хелпа нет). А я про страх или смелость перед всеми монстрами типа #.


RE: Ваши вопросы по ERM-скриптам - Efrit - 10.07.2010 16:29

Ну и в чём проблема? Пробеги в начале игры циклом по каждой клетке карты и проверь, стоит ли там нужный тебе монстр...


RE: Ваши вопросы по ERM-скриптам - GhostManSD - 10.07.2010 16:46

Efrit, и правда. Ab Прости дурака, не допер.


RE: Ваши вопросы по ERM-скриптам - Sav - 10.07.2010 17:15

Не так всё просто. Есть ещё недели монстров.


RE: Ваши вопросы по ERM-скриптам - DracoLich - 10.07.2010 18:44

а еще есть полная ненадежность команды AI как таковой


RE: Ваши вопросы по ERM-скриптам - GhostManSD - 10.07.2010 18:47

Была б она надежна, можно было бы каждую неделю пробегать циклом, который предложил Efrit. Но ботинок себя повел странно: когда я не дал ему города, включив бессмертие, а затем натравил его на армию крестьян, ботинок стремглав понесся к незахваченному городу. Shit happens.
Добавлено:
Похоже, любовь к захватыванию городов привита ботинку в подсознание еще в раннем детстве. Тут уже ERM бессилен: психология ИИ - весьма безблагодатная вещь.


RE: Ваши вопросы по ERM-скриптам - Berserker - 10.07.2010 18:58

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


RE: Ваши вопросы по ERM-скриптам - DracoLich - 10.07.2010 19:10

вот знать бы ценность объектов на карте для ИИ. Есть где такая таблица или все в екзе?


RE: Ваши вопросы по ERM-скриптам - Berserker - 10.07.2010 19:14

DracoLich, не находит среди тхт файлов даже подобия. Значит в ехе.


RE: Ваши вопросы по ERM-скриптам - GhostManSD - 10.07.2010 21:07

Bers, соль в том, что я дал бессмертие ему без города, а он вошкается. Нужно силой заставить ботинка бомжевать! Пусть привыкает к жизни богатого образованного московского жителя. У меня, может, город весь на скриптах, и боту туда нельзя под угрозой расстрела.
Хотя, конечно, можно элементарно поставить непроходимость объекта для ИИ. Ну, то есть при флаге -1000 клетка будет непроходимой. Я обычно так и поступаю с объектами, которые для ботинка не предназначены.


RE: Ваши вопросы по ERM-скриптам - Berserker - 10.07.2010 21:44

GhostManSD, ты не дал бессмертие, а просто установил значение переменной. Алгоритм на ней не завязан вообще.


RE: Разрушенный замок - Efrit - 01.09.2010 19:09

Интересно, а AI вообще умеет города разрушать?


RE: Разрушенный замок - Berserker - 01.09.2010 19:22

Нет. Зато строит в родной замок зашедшего героя.


RE: Разрушенный замок - sh4d0ff - 01.09.2010 19:25

хм.. сколько раз играл, ни разу с подобным не сталкивался... вряд ли... он фишками вроде изумрудной башни или жилища мистических существ (фич чисто воговских, в.т.ч. и митрила) не пользуется, кажется... исключение - сундуки и заброшенные храмы, но это связано с прошивкой стандартного аи имхо.


RE: Разрушенный замок - Berserker - 01.09.2010 19:38

ИИ вообще не трогался вогом никак. Скрипты зачастую обрабатывают ИИ-игроков отдельно: Событие - если ИИ - ...


RE: Обсуждение - обо всём - Berserker - 08.06.2012 16:28

Смех и слёзы. У ИИ несколько отрядов могут под бешенством убить мой единственный. Я ставлю на самый сильный берсерк, ИИ колдует бешенство на него же и этот сильный отряд убивает своих друзей )))


RE: Обсуждение - обо всём - Efrit - 09.06.2012 07:46

(01.09.2010 19:22)Berserker Wrote:  
Quote:Интересно, а AI вообще умеет города разрушать?
Нет. Зато строит в родной замок зашедшего героя.

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


(08.06.2012 16:28)Berserker Wrote:  У ИИ несколько отрядов могут под бешенством убить мой единственный. Я ставлю на самый сильный берсерк, ИИ колдует бешенство на него же и этот сильный отряд убивает своих друзей )))

Особенно весело ложить берсерк на Гидр Хаоса - бывает, пол-армии компа погибает сразу. А уж если им удача улыбнётся...


RE: ERA Scripts 1.20 Rus - Ivor - 05.02.2016 00:58

(02.02.2016 22:59)Algor Wrote:  Контрольный вопрос: как этот функционал использует ИИ?
А как ИИ-игрок использует демонологию? Никак.
Кстати, это можно исправить. Если в начале дня / перед боем в армии ИИ есть существа 1го уровня или гномы (единственные, НЯП, войска 2го уровня, которые выгодно переводить в демонов), пит-лорды и свободный стек/отряд демонов, то эти "жертвенные" войска переводятся в демонов по стандартной формуле ОКРУГЛ(кол-во питлордов*35/hp жертвы)


RE: ERA Scripts 1.20 Rus - Algor - 05.02.2016 01:27

Ivor, только если под демонологией понимается именно целенаправленная конвертация в демонов, то да, никак.
Однако при первой же возможности в бою ИИ демонов поднимает. И, по моим наблюдениям, это действие весьма приоритетно.

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


RE: ERA Scripts 1.20 Rus - Ivor - 05.02.2016 01:56

(05.02.2016 01:27)Algor Wrote:  Ivor, только если под демонологией понимается именно целенаправленная конвертация в демонов, то да, никак.
Именно она, да.

Quote:Но, во-первых, демонология слишком задротская штука, чтобы целенаправленно заниматься ею всю игру. У меня лично никогда не хватало терпения, ток периодически, крупными кусками.
У меня тоже, но если начать героем - спецом по пит-лордам, у которого в начале есть пит-лорд, то уже в конце 2ой недели можно набрать достаточно демонов, чтобы ломать некрупные утопии.

Quote:Однако при первой же возможности в бою ИИ демонов поднимает. И, по моим наблюдениям, это действие весьма приоритетно
...
Что уже очень похоже на ситуацию с ИИ.
А вот тут не соглашусь. Демонология начинает ролять, как и некромантия, только на больших количестве боёв. Т.е. ей надо заниматься целенаправленно, иначе и смысла нет. Единичные восстановления демонов из погибших стеков роли не играют.

(05.02.2016 01:27)Algor Wrote:  Ну и во вторых, любой недостаточно хорошо используемый ИИ аспект игры не есть повод эти аспекты плодить, или на этом спекулировать.
На мой взгляд - это не спекуляция, а чаемое многими усиление Инферно штатными средствами, без лишнего увеличения параметров войск.

Как вариант сделать демонологию не такой задротской - заменить дьявольское жертвоприношение на кастование пит-лордами жертвы и подъем демонов


RE: ERA Scripts 1.20 Rus - Ethereal - 05.02.2016 09:50

Камрады, учить ИИ целенаправленно заниматься демонологией, что учить кота играть на скрипке. Лучше пусть пихает в резервные слоты войска с наименьшим FV, а при наличии свободных слотов в основной армии, достаёт.

А демонологию, на мой взгляд, надо вообще переделать на манер Жертвоприношения, что бы не ждать уничтожения слота. Тогда и ИИ сможет адекватно этим пользоватся, то есть определить конкретно, какие юниты ИИ в демонов перерабатывает (или FV от и до). В свете этого и строение в городе не помешало бы... Rolleyes (Некроманты плачут от зависти 148)


Усовершенствование ИИ - Heromant - 19.05.2017 17:20

(19.05.2017 14:28)Algor Wrote:  Если сомневаешься, попытайся формализовать. В любом случае, именно это - начало работы.
1) Посчитать кратчайший по количеству очков перемещения путь героя до точки карты с заданными координатами в мувипойнтах этого героя.
...
Продолжение следует. Первый пункт самый важный и незаменимый. Здесь, вероятно, можно взять уже готовый алгоритм поиска оптимального пути, который применяется, например, для всяких там разнородных вязких сред в физике, и запилить его на ERM.


RE: ERA Scripts 1.27 - Algor - 19.05.2017 18:32

Heromant, ты не понял.
Расстояние (в днях или в МП) между героями - это только один из параметров. И это не начало задачи.
Для начала надо сформировать наборы условий, при которых необходимо устроить встречу. И только потом уже смотреть, как получить необходимые параметры, в т.ч. указанное тобой расстояние между героями.

Пример, для случая обмена опытом:

Если
Герой A имеет минимум N очков для передачи (для передачи малого кол-ва не имеет смысл тратить ОД, даже если это прокачает уровень героя B)
И
Герой B при получении N очков опыта повысит свой уровень минимум на 1 (или не на 1, в зависимости, например, от уровня героя B)
И
Расстояние между героями A и B меньше или равно сумме ОД героев А и B (это если мы ходим за один день их встретить, или определять как множитель допустимое кол-во затраченных дней)
И
.... учесть, что подходящих "героев B" может быть несколько и выбрать "оптимального" (тут отдельная подзадача по оценке, да)
И
... учесть, что у героя A могут быть более приоритетные задачи (рядом вражеский герой/город/ценный лут или объект)
И
... учесть еще дофига всяких "И", чтобы в результате не складывались ситуации безбожного тупежа ИИ (а отлавливать и дебажить такие моменты - отдельный "ну его нах")
То
Устроить встречу героев, т.е. провести героя A на X% МП (чтобы в точке встречи передалось макс. кол-во опыта) и провести героя Б к герою А
где X - отношение расстояния между героями к их суммарному запасу хода.

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


RE: ERA Scripts 1.27 - Heromant - 21.05.2017 17:58

(21.05.2017 14:34)Algor Wrote:  Лень искать и линкать посты, в которых я уже писал, что мод ориентирован на случайные карты...
   А если вдруг действительно собираешься использовать этот скрипт в кампаниях, просто убери из него ИИ-секцию.

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

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


RE: ERA Scripts 1.27 - Algor - 21.05.2017 19:42

(21.05.2017 17:58)Heromant Wrote:  Закопать то артефакт в поле можно, а вот получить опыт за это - сомнительная идея.
Не согласен. Сомнительная идея - уничтожать что-то ничего не получая взамен. Это почти так же, как получать что-то из ничего.
В героях даже увольнение отряда это не бесполезное уничтожение, а мера позволяющая повысить мораль или скорость передвижения героя. И то, я предпочитаю отправлять лишних юнитов в батрачество.

(21.05.2017 17:58)Heromant Wrote:  Если кратко по формализации:
"Кратко" - это ни о чем. Если хочешь реализовать, нужен полный алгоритм. В описанном тобою случае движения второстепенных к главному в пределах одного хода упущена трата ОД обоих героев при обучении. А т.к. для обучения при любом раскладе будут тратиться ОД главного, простого алгоритма определения целесообразности уже не получится. Я не зря выше расписывал, что я - человек - возможностью передачи опыта не пользуюсь в 90% случаев. Потому, что в 90% случаев это по моим ощущениям, по моему игровому опыту - нецелесообразно.

(21.05.2017 17:58)Heromant Wrote:  Естественно, в этом случае необходимо будет сделать, чтобы очередность их ходов была не случайной, а слабые герои ходили раньше сильных в случае, если им надо осуществить встречу.
Ну это то точно не большая проблема, ты же в начале дня перед всеми действиями ИИ можешь как угодно распорядиться его героями и их ОД.

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


RE: ERA Scripts 1.27 - Heromant - 21.05.2017 20:14

(21.05.2017 19:42)Algor Wrote:  "Кратко" - это ни о чем. Если хочешь реализовать, нужен полный алгоритм.
Нужна минимально работоспособная версия (MVP), которую потом можно было бы развивать. Мы же не лаборатория РАН. Как рассчитать 2 числа, на основе сравнения которых должно приниматься решение о встречи - я сказал. Ну естественно, что касается передачи войск и артефактов - нужно считать не по ценности передаваемых, а по разнице, между ценностью передаваемых сильному от слабого и слабому от сильному если новые войска и артефакты идут на слоты более слабых. Для заклинаний не так, так как заклинания, передаваясь, остаётся у передавшего. По-сути для MVP из аналитики остаётся только подобрать коэффициенты ценности.

(21.05.2017 19:42)Algor Wrote:  В описанном тобою случае движения второстепенных к главному в пределах одного хода упущена трата ОД обоих героев при обучении...
Я не пользуюсь скриптом "передача опыта". Я не думаю, что это нужно учитывать в MVP. Дело то в другом. ИИ на текущий момент практически не использует существующий навык "грамотность", по моим наблюдениям. Также, он не создаёт мощного "ударного" героя и практически никогда не передаёт войска и артефакты между героями в пользу сильного.


RE: ERA Scripts 1.27 - gamecreator - 21.05.2017 22:15

(21.05.2017 20:14)Heromant Wrote:  Также, он не создаёт мощного "ударного" героя и практически никогда не передаёт войска и артефакты между героями в пользу сильного.
А если героев заставить встречаться, то передаёт?


RE: ERA Scripts 1.27 - Heromant - 21.05.2017 23:50

(21.05.2017 22:15)gamecreator Wrote:  
(21.05.2017 20:14)Heromant Wrote:  Также, он не создаёт мощного "ударного" героя и практически никогда не передаёт войска и артефакты между героями в пользу сильного.
А если героев заставить встречаться, то передаёт?
Ну в этом то и задумка. Сейчас бродят по карте герои ИИ с однонедельным приростом. На ферзе у копа бонусы офигенные, а играть всё равно просто. Доходит до абсурда. Даёшь ИИ 3 одинаковых артефакта. В паре клеток другие герои со свободным слотом для этого артефакта. Не передаёт, скотина.
То же самое с заклинаниями, при наличие у кого то из них грамотности и у кого то заклинаний. По сути не пользуется сейчас ИИ грамотностью. То же самое с однотипными войсками. Ну не хочешь ты отдавать все войска и оставаться с голым задом - забери у него гномов с дендроидами и беги замок охранять. Нет, блин, не встречаются и не перегруппируются.

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


RE: ERA Scripts 1.27 - Algor - 22.05.2017 12:45

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


RE: ERA Scripts 1.27 - Heromant - 22.05.2017 13:00

(22.05.2017 12:45)Algor Wrote:  Heromant, не против выноса этого обсуждения в отдельную тему? Т.к. к ES оно не относится и со временем просто тут затеряется, а так там можно было бы предлагать различные варианты усиления ИИ.
Конечно не против. Только надо бы обозначить, что в этой теме предлагаются, обсуждаются, разрабатываются усиления "сообразительности" ИИ, а не усиление ИИ бонусами и прочими бенефитами.


RE: Усовершенствование ИИ - gamecreator - 22.05.2017 14:08

(21.05.2017 23:50)Heromant Wrote:  Ну в этом то и задумка.
Нет. Если просто вызвать для каждой пары героев событие встречи. Без всяких расчётов и условий, раз в ход все герои ИИ встречаются друг с другом. Если и при этом они не передают войска и артефакты, то тут уже проблема не во встречах.
(22.05.2017 13:00)Heromant Wrote:  Конечно не против. Только надо бы обозначить, что в этой теме предлагаются, обсуждаются, разрабатываются усиления "сообразительности" ИИ, а не усиление ИИ бонусами и прочими бенефитами.
Отделил. Так пойдёт?


RE: Усовершенствование ИИ - Heromant - 22.05.2017 15:28

(22.05.2017 14:08)gamecreator Wrote:  
(21.05.2017 23:50)Heromant Wrote:  Ну в этом то и задумка.
Нет. Если просто вызвать для каждой пары героев событие встречи. Без всяких расчётов и условий, раз в ход все герои ИИ встречаются друг с другом. Если и при этом они не передают войска и артефакты, то тут уже проблема не во встречах.
Я хотел полностью контролировать встречу героев, которая инициирована скриптом. То есть запланировали в ERM встречу (назначили слабому целью сильного), записали в глобальные переменные этих героев (w) номера тех героев, с которыми предстоит встреча. Также записываем дату, когда должна произойти эта встреча. Обработчики встреч для всех героев перенаправляем в единую функцию. В этой функции проверяем дату и проверяем у каждого героя, что произошла встреча с тем самым героем, с которым запланировали. Если true, то полностью берём на себя (на наш ERM) обработку встречи. Тогда вопрос выше не имеет смысла, так как повторюсь, для случаев когда мы запланировали встречу - мы полностью переопределяем обработку этой встречи. Хотя проверить, как бы классический ИИ сам поступил, если принудить героев встретиться всё таки надо. Существует очень маленькая призрачная вероятность, что он сделает всё правильно. Если что-то не правильно - переделываем.
(22.05.2017 14:08)gamecreator Wrote:  
(22.05.2017 13:00)Heromant Wrote:  Конечно не против. Только надо бы обозначить, что в этой теме предлагаются, обсуждаются, разрабатываются усиления "сообразительности" ИИ, а не усиление ИИ бонусами и прочими бенефитами.
Отделил. Так пойдёт?
Да, отлично.


RE: Усовершенствование ИИ - Algor - 22.05.2017 19:51

Вариант усиления ИИ при игре в команде:


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


RE: Усовершенствование ИИ - Heromant - 24.05.2017 00:42

Пришла разумная мысль по поводу усиления ИИ за счёт встреч героев. Можно вполне безболезненно сделать, чтобы слабый герой гарантированно встречался с сильным, если первому до второго 2 дня пути, а не один. Для этого необходимо:
1) В начале каждого дня проверять, может ли слабый герой дойти до сильного за 1 текущий день, если по расчетам им есть смысл встречаться. Если да - назначаем сильного героя местом встречи, сначала ходит слабый.
2) Если не может за 1 день, начинаем ход с сильных героев.
3) Если после хода сильного героя до него может с пользой дойти слабый герой за 2 дня - назначаем сильного героя местом встречи.
4) Завершаем ход слабым героем. Приближаемся.
5) Начинаем следующий день со слабого героя, которому остался 1 день пути до сильного. Догоняем его, встречаемся, обмениваемся всем, что надо.
6) Продолжаем день, проверяем могут ли слабые герои, дойти до сильного, кроме того, который уже дошёл в текущий день.
7) См. п. 2.
И т. д.
Есть подводные камни? Мы же можем ведь очередностью хода ИИ управлять как-то?


RE: Усовершенствование ИИ - Algor - 24.05.2017 10:14

Алгоритм в общем-то нормальный. Фактически, перемещения сильного мы не регулируем, только очередность.
Это хорошо. Только не отменяет первостепенность "если по расчетам им есть смысл встречаться" Sm


RE: Усовершенствование ИИ - Heromant - 26.05.2017 14:40

Расчётная формула для встречи
Для удобства предоставляю excel файл расчёта целесообразности встречи.
По файлу всё понятно.
https://yadi.sk/i/J_jH9xFD3JYNmM
Пояснение:
"Сила армии, арт, закл до", "Сила армии, арт, закл после" считается следующим образом:
1)Каждый юнит, артефакт, включая машины, и заклинание имеет свою ценность. Чтобы узнать суммарную ценность - нужно перемножить ценность каждого элемента (юнита) на количество используемых элементов и суммировать. Артефакты, которые не работают (в рюкзаке) в расчете общей силы участия не принимают.
2) После встречи самые ценные артефакты надеваются на сильного героя, вторые по ценности артефакты надеваются на слабого героя, остальные передаются в рюкзак сильного героя (здесь и далее сила героя это его уровень). Ценность тех артефактов, которые не были надеты, а стали одеты на какого либо из героев начинают учитываться.
3) Не всегда все лучшие по расчётной силе отряды существ передаются сильному герою а те которые не уместились у сильного - слабому. Из таблицы видно, что учитывается влияние скорости существ на скорость героев на карте, а также комбинации существ на его мораль. Необходимо подобрать такую конфигурацию отрядов у двух героев, при котором полезность встречи будет максимальной, по ней проверять целесообразность встречи и её в конечном итоге при встрече и реализовывать.

У кого-то есть желание реализовать сей скрипт? У меня проблемы со свободным временем и скоростью реализации из-за малого опыта в ERM... И деньгами (на донат не рассчитывайте). Если никто не хочет - реализую сам. На пенсии.:D


RE: Усовершенствование ИИ - Algor - 26.05.2017 15:41

Heromant, отличная возможность подтянуть свой ERM, не упусти её 118
И малый опыт, поверь, не помеха. Я, например, BattleHeroes начал писать через 3 месяца после написания своего первого скрипта на ERM.


RE: Усовершенствование ИИ - Heromant - 26.05.2017 15:56

(26.05.2017 15:41)Algor Wrote:  Heromant, отличная возможность подтянуть свой ERM, не упусти её 118
И малый опыт, поверь, не помеха. Я, например, BattleHeroes начал писать через 3 месяца после написания своего первого скрипта на ERM.
Какие-нибудь комментарии по алгоритму принятия решения о необходимости встречи есть?
Можно ли менять менять порядок хода героев ИИ, при этом чтобы никакие из них не пропускали хода?
Есть ли возможность проверить, разведана ли конкретная клетка на карте игроком конкретного цвета?


RE: Усовершенствование ИИ - Algor - 26.05.2017 16:12

(26.05.2017 15:56)Heromant Wrote:  Какие-нибудь комментарии по алгоритму принятия решения о необходимости встречи есть?
Не вникал, все равно это будет 100 раз меняться в процессе отладки, а навскидку сказать сложно.

(26.05.2017 15:56)Heromant Wrote:  Можно ли менять менять порядок хода героев ИИ, при этом чтобы никакие из них не пропускали хода?
По-хорошему, нужна возможность перехвата и отмены передачи хода - эт к реверсерам нашим. Возможно это им поможет/напомнит:

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


(26.05.2017 15:56)Heromant Wrote:  Есть ли возможность проверить, разведана ли конкретная клетка на карте игроком конкретного цвета?
!!TR:V


RE: Усовершенствование ИИ - Heromant - 30.05.2017 13:27

Итак, как я ранее и говорил начинать реализацию "встреч героев ИИ" в любом случае придётся с расчёта расстояния между героями.
Ситуация следующая. Реализовывать алгоритм поиска оптимального пути на ERM с нуля достаточно сложно. Ситуация осложняется отсутствием переменных типа массивов в ERM. Но данный алгоритм уже реализован в базовом ИИ игре, но как извлечь его, отделив от перемещения - я не знаю, да и вряд ли кто-то здесь мне поможет это сделать.
В связи с этим возникает следующая идея. А что, если не пытаться отделить расчёт длины пути от самого хода героя ИИ. Алгоритм ниже не предусматривает встреч героев в радиусе больше, чем ход одного героя, так как на мой вопрос выше ещё не дан ответ. Итак:
1) В начале хода каждого героя ИИ фиксируем клетку на карте его местоположения. Проверяем положение других героев этого же игрока. Находим линейное расстояние до них в MP, как если бы у героя была способность "полёт" на глобальной карте. Сразу же вопрос, в ERM же нет корня, а как тогда вычислить гипотенузу?148
2) Для тех героев, до которых герой мог бы добраться по прямой за свой ход, проверяется необходимость встречи по формуле.
3) Для каждого из героев, встреча с которым была бы необходима при движении по прямой производится проверка реальной достижимости встречи за ход, исходя из ландшафта, почв и. т. д. Для этого:
3.1) Картинка героя (на лошади с флагом), являющегося инициатором встречи, на глобальной карте заменяется невидимой картинкой.
3.2) Точка на карте, где расположен герой, являющийся целью встречи, назначается максимально приоритетной целью для героя-инициатора встречи.
3.3) После окончания хода или при достижении героя-цели либо при попытке совершения им по ходу движения какого-либо другого действия, кроме перемещения или встречи с целевым героем (действие отменяется), герой-инициатор возвращается на исходную позицию (как в начале дня) с возвращением ему полного запаса хода, которое у него было в начале дня. В случае достижения героя-цели запоминается реальное количество очков хода, затраченное до встречи.
3.4) Данный цикл повторяется для всех героев-целей, с которыми была бы необходима встреча, если бы герой-инициатор двигался по прямой без штрафов.
3.5) Картинка героя меняется обратно на нормальную.
3.6) Для тех героев-целей, которые были достигнуты, заново рассчитывается необходимость встречи, исходя уже из реально затраченных очков перемещения.
3.7) Заново назначается оптимальный герой-цель для встречи с максимальной значимостью этой встречи.

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


RE: Усовершенствование ИИ - Algor - 30.05.2017 13:39

(30.05.2017 13:27)Heromant Wrote:  Реализовывать алгоритм поиска оптимального пути на ERM с нуля достаточно сложно...Но данный алгоритм уже реализован в базовом ИИ игре, но как извлечь его, отделив от перемещения - я не знаю, да и вряд ли кто-то здесь мне поможет это сделать.
Вообще, надо просто найти существующую функцию и использовать ее. Это к "реверсерам". По-поводу "вряд ли кто-то здесь мне поможет" - а ты просил?

(30.05.2017 13:27)Heromant Wrote:  Ситуация осложняется отсутствием переменных типа массивов в ERM.
SN:W вполне подходит для работы с массивами.

По-поводу остального ниже:
1) вопрос с нужной очередностью хода (как вариант, с перехватом передачи хода) вроде не закрыт еще.
2) Точки значимости для героев наверняка будут работать совершенно не так, как тебе хотелось бы. Во всяком случае, когда цель находится не в паре шагов.
3) Если все упрощать и дальше, можно прийти к дистанционной передаче войск/артефактов/опыта/заклинаний и уменьшению ОД.


RE: Усовершенствование ИИ - Heromant - 30.05.2017 14:29

(30.05.2017 13:39)Algor Wrote:  Вообще, надо просто найти существующую функцию и использовать ее. Это к "реверсерам". По-поводу "вряд ли кто-то здесь мне поможет" - а ты просил?
...
Вопрос с нужной очередностью хода (как вариант, с перехватом передачи хода) вроде не закрыт еще.
Именно потому, что вопрос с очерёдностью хода не решен, я сделал предположение, что сложности возникнут и с реверсом функции оценки очков перемещения героя до перемещения (построение зелёно-коричневой стрелочки пути до пункта на карте, безотносительно её отображения).
Ладно, перемещу этот вопрос, может быть это проще, чем с очерёдностью хода.

(30.05.2017 13:39)Algor Wrote:  2) Точки значимости для героев наверняка будут работать совершенно не так, как тебе хотелось бы. Во всяком случае, когда цель находится не в паре шагов.
Да, поэтому я и хочу ориентироваться на фактически затраченное количество MP. Тут ещё нужно учитывать, что если 2 раза из одной и той же позиции с одинаковыми начальными условиями назначить одну и ту же точку даже с максимальным приоритетом, то далеко не факт, что 2 раза подряд он пойдёт по одинаковому пути и вообще в обоих случаях её достигнет.
Если это реализовывать по-другому, то опять возвращаемся к реверс-инженеренгу с построением стрелочки на карте без её отображения и движения по ней.

(30.05.2017 13:39)Algor Wrote:  3) Если все упрощать и дальше, можно прийти к дистанционной передаче войск/артефактов/опыта/заклинаний и уменьшению ОД.
Нет - максимум к чему можно прийти, это к "телепортации" героя на место встречи с убавлением нужного количества очков движения у него. Но тогда изначально нужно вычислить количество вычитаемых очков движения. И опять, здравствуй, предыдущий пункт, с реверс инженерном вычисления затраченных очков движения из пункта A в пункт B. Но в случае такой "телепортации" мы теряем ценную анимацию на ходе противника, что не хорошо и может ввести в заблуждение относительно использования противником "двери измерений".


RE: Усовершенствование ИИ - gamecreator - 01.06.2017 14:25

(30.05.2017 13:27)Heromant Wrote:  Ситуация осложняется отсутствием переменных типа массивов в ERM.
SN:M же.
(30.05.2017 13:27)Heromant Wrote:  Сразу же вопрос, в ERM же нет корня, а как тогда вычислить гипотенузу?148
Тебе же только сравнить, возведи другую часть в квадрат, как это делается в воговском скрипте дистанционного посещения объектов.
(30.05.2017 13:39)Algor Wrote:  1) вопрос с нужной очередностью хода (как вариант, с перехватом передачи хода) вроде не закрыт еще.
А почему манипуляция ОД не подходит?


RE: Усовершенствование ИИ - Algor - 01.06.2017 14:34

(01.06.2017 14:25)gamecreator Wrote:  
(30.05.2017 13:39)Algor Wrote:  1) вопрос с нужной очередностью хода (как вариант, с перехватом передачи хода) вроде не закрыт еще.
А почему манипуляция ОД не подходит?

Объясни, как ты предлагаешь управлять очередностью хода ИИ?


RE: Усовершенствование ИИ - Heromant - 01.06.2017 15:51

(01.06.2017 14:34)Algor Wrote:  
(01.06.2017 14:25)gamecreator Wrote:  
(30.05.2017 13:39)Algor Wrote:  1) вопрос с нужной очередностью хода (как вариант, с перехватом передачи хода) вроде не закрыт еще.
А почему манипуляция ОД не подходит?

Объясни, как ты предлагаешь управлять очередностью хода ИИ?
Я похоже понял, что имел в виду gamecreator. В начале хода забирать ОД у всех героев кроме одного. При завершении хода этим героем и до завершения дня игроком выдавать изъятые очки движения следующему в нужной очерёдности.Ab


RE: Усовершенствование ИИ - gamecreator - 01.06.2017 16:12

Именно.


RE: Усовершенствование ИИ - Heromant - 01.06.2017 17:52

(01.06.2017 16:12)gamecreator Wrote:  Именно.
Какие триггеры следует использовать в начале и в конце хода конкретного героя? Не триггер шага героя же !?HM


RE: Усовершенствование ИИ - gamecreator - 01.06.2017 18:48

Почему бы и не HM?


RE: Усовершенствование ИИ - Algor - 01.06.2017 19:20

gamecreator, больно уж тормозно с !?HM (по опыту ВоГ-скрипта разведки с шансом нахождения на каждом шагу).
Я его поэтому сразу же и не рассматривал.

Да и к тому же, кто мешает ИИ передать ход не израсходовав все мувы "разалоченного" игрока (завёл на ночевку). Тогда мувы остальных, которые должны были ходить после, пропадут. Собсно, для этого перехват пердачи хода и нужен.


RE: Усовершенствование ИИ - gamecreator - 01.06.2017 20:02

(01.06.2017 19:20)Algor Wrote:  gamecreator, больно уж тормозно с !?HM (по опыту ВоГ-скрипта разведки с шансом нахождения на каждом шагу).
Генерация случайного числа в ЕРМ и получение существующего из памяти, имхо, отличаются как минимум в 2 раза.


RE: Усовершенствование ИИ - Elzivir - 02.07.2017 03:33

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

Вопрос: кто-нибудь решил эту проблему?

P/S: игра при 200% сложности.


RE: Усовершенствование ИИ - Ethereal - 02.07.2017 10:13

(02.07.2017 03:33)Elzivir Wrote:  Довольно часто в игре возникает ситуация, когда герой игрока высокого уровня и с раскачавшимся командиром (но без армии) останавливается совсем рядом с городом ИИ, в гарнизоне которого на страже находятся пара инвалидов. Но несмотря на то, что у ИИ есть в запасе целый ход, и невыкупленные в замке юниты, и необходимое на них золото (много золота), он не предпринимает никаких оборонительных действий, не видя никакой потенциальной угрозы для себя в герое без армии. Причем, как только с помощью кодов добавить герою воинов, то ИИ сразу начинает паниковать и скупает всех и вся в замке.

Вопрос: кто-нибудь решил эту проблему?

P/S: игра при 200% сложности.

ИИ оценивает Fight Value армии при оценке силы героя. Параметры героя - плюс проценты к FV армии. Нет армии - нет FV. FV командира в расчёт не идёт, ибо существует он только в бою. Решить это можно, лишь назначив FV "пустым" героям. Не знаю возможно ли это, зато знаю к чему это приведёт. К убер-дипломатии. Появится возможность присоединять нейтральные отряды равные, или даже превосходящие, по силе армию героя, поскольку расчёт будет: FV армии + FV героя * параметры героя.


RE: Усовершенствование ИИ - Elzivir - 02.07.2017 14:47

(02.07.2017 10:13)Ethereal Wrote:  Появится возможность присоединять нейтральные отряды равные, или даже превосходящие, по силе армию героя, поскольку расчёт будет: FV армии + FV героя * параметры героя.

Во-первых, в WoG-меню есть опция "Увеличенный размер нейтральных отрядов" (для тех, кто с ней играет), включение которой сводит на "нет" убер-свойство дипломатии по присоединению странствующих монстров:
!!MOv1/v2/v3&y1>=0:R10/1; [Set all monster stacks to Savage]

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


RE: Усовершенствование ИИ - Ethereal - 02.07.2017 16:45

(02.07.2017 14:47)Elzivir Wrote:     в WoG-меню есть опция "Увеличенный размер нейтральных отрядов" (для тех, кто с ней играет), включение которой сводит на "нет" убер-свойство дипломатии по присоединению странствующих монстров:
!!MOv1/v2/v3&y1>=0:R10/1; [Set all monster stacks to Savage]

В принципе не люблю функции, которые делают бесполезным один из вторичных навыков, а эта функция делает Дипломатию менее полезной оригинального Орлеглаза. Есть масса других, более гуманных, способов увеличить размер нейтральных отрядов.

(02.07.2017 14:47)Elzivir Wrote:     ИИ уже начинает наводить в замке панику, даже если перед воротами стоит герой всего лишь с 1 троглодитом, т.е. большого значения FV "пустому" герою, как оказалось, присваивать и не нужно, а работу дипломатии можно оставить в обычном режиме.

Об этом я и писал. Для более адекватного расклада, можно запретить героям без армии захватывать что-либо. Это, как мне кажется, будет более логично.


RE: Усовершенствование ИИ - Elzivir - 02.07.2017 18:16

(02.07.2017 16:45)Ethereal Wrote:  Для более адекватного расклада, можно запретить героям без армии захватывать что-либо. Это, как мне кажется, будет более логично.

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


RE: Усовершенствование ИИ - Ethereal - 02.07.2017 20:12

(02.07.2017 18:16)Elzivir Wrote:  На поздних этапах игры армия представляет собой скорее баласт (нет потерь в быстрых битвах, дальность хода героя не снижается за счет медленных юнитов), чем подкрепление. Да и стратегию "командир-супермэн" никто не отменял. Поэтому установка данного запрета лично для меня не вариант. Ab

:D При моих настройках опыта существ, когда один прокаченный на максимум юнит сильнее четырёх-пяти таких же неопытных, этот номер не прокатывает. 5-6 асов-Архангелов, легко и непринуждённо расправляются с любым командиром. Сам небось знаешь, что у ИИ армия раскачивается в разы быстрее, чем у игрока, если равный процент ставить. Так что на поздних этапах, командир в лосинах с резиновыми ушами, как раз таки, ничего толком и не может.

Кстати, ты не прав, касательно скорости. Без войск базовая скорость (без Логистики и Поиска пути)1300, в то время как даже с гномами будет 1560.


RE: Усовершенствование ИИ - Elzivir - 02.07.2017 20:42

Ethereal, в моих настройках опыт существ отключен, так что номер с командиром очень даже прокатывает. И базовая скорость героя без существ (без Логистики и Поиска пути) у меня в клиенте не 1300, а 2000. Не знаю откуда ты взял 1300... Может мы используем разные модификации?

P/S: По-прежнему ищется решение проблемы... Kap


RE: Усовершенствование ИИ - Ethereal - 02.07.2017 22:07

(02.07.2017 20:42)Elzivir Wrote:  Ethereal, в моих настройках опыт существ отключен, так что номер с командиром очень даже прокатывает. И базовая скорость героя без существ (без Логистики и Поиска пути) у меня в клиенте не 1300, а 2000. Не знаю откуда ты взял 1300... Может мы используем разные модификации?

Это из MOVEMENT.TXT. 2000 там максимальная скорость, да. А я думал, что по минимуму, скорость 0, браться будет. Чит, однако.


RE: Вопросы по моддингу - Elzivir - 06.07.2017 05:25

Подскажите, пожалуйста, можно ли как-либо увеличить для ИИ значимость (FV) героя с одним лишь командиром (т.е. совсем без армии), чтобы компьютер начал предпринимать хоть какие-нибудь оборонительные действия (скупать войско в замке), если такой "пустой" герой остановиться перед его воротами. А то приходится иногда получать в наследство месячный прирост невыкупленных вражеских юнитов...


RE: Вопросы по моддингу - Algor - 06.07.2017 10:08

(06.07.2017 05:25)Elzivir Wrote:  И еще: можно ли как-либо увеличить для ИИ значимость (FV) героя с одним лишь командиром (т.е. совсем без армии), чтобы компьютер начал предпринимать хоть какие-нибудь оборонительные действия (скупать войско в замке), если такой "пустой" герой остановиться перед его воротами.
Если не сложно, проверь, как будет действовать ИИ в ситуации, когда перед его воротами герой без войск, но с наложенной "маскировкой".
Если в этом случае ИИ закопошится, можно будет сделать патчик, накладывающий в конце хода маскировку на героев-человеков без армии.


RE: Вопросы по моддингу - Elzivir - 06.07.2017 17:49

(06.07.2017 10:08)Algor Wrote:  как будет действовать ИИ в ситуации, когда перед его воротами герой без войск, но с наложенной "маскировкой".

На маскировку ИИ не повелся... Ab


RE: Вопросы по моддингу - MOP - 07.07.2017 07:48

Я ставил хуки на функции вычисления Fight Value и AI value отрядов и умножал базовые показатели командира на треугольные числа по порядку его уровней.
Правда, я сам так и не понял, помогло ли это. Скорее всего, структура героя в ряде случаев копируется в стек и поэтому код её не ловит, потому что учитывает только основной блок структур героев.


RE: Вопросы по моддингу - Elzivir - 07.07.2017 08:09

MOP, если я правильно понял, то данная задача по степени сложности представляет собой нечто неординарное? В переводе на Era ее возможно реализовать так, чтоб было понятно простым смертным?

P/S: признаться, я мало что понимаю в "хуках", и уж тем более в "треугольных числах"...))


RE: Вопросы по моддингу - Elzivir - 08.07.2017 23:08

А такой вариант возможен?

Присваивать герою без армии (но с командиром) при передаче хода какого-нибудь быстрого, но слабого юнита (такого, чтобы это никак не отразилось на скорости героя на следующем ходу и не отпугнуло потенциального врага)? А с начала последующего дня или при нападении на этого героя в процессе хода других игроков/ИИ просто удалять этого юнита из стека...


RE: Вопросы по моддингу - gamecreator - 09.07.2017 13:12

Elzivir, ну попробуй:
Отсутствие опечаток или ошибок не гарантирую.


RE: Вопросы по моддингу - Elzivir - 09.07.2017 21:27

(09.07.2017 13:12)gamecreator Wrote:  Elzivir, ну попробуй:
Отсутствие опечаток или ошибок не гарантирую.

gamecreator, что-то не работает... 105
ИИ по-прежнему не впадает в панику при виде героя без армии у ворот замка.


RE: Усовершенствование ИИ - Heromant - 20.08.2018 02:01

(30.05.2017 13:39)Algor Wrote:  
(30.05.2017 13:27)Heromant Wrote:  Реализовывать алгоритм поиска оптимального пути на ERM с нуля достаточно сложно...Но данный алгоритм уже реализован в базовом ИИ игре, но как извлечь его, отделив от перемещения - я не знаю, да и вряд ли кто-то здесь мне поможет это сделать.
Вообще, надо просто найти существующую функцию и использовать ее. Это к "реверсерам". По-поводу "вряд ли кто-то здесь мне поможет" - а ты просил?

А кто-нибудь разбирался вообще, как работают баллы значимости. В ERM-Help написано следующее:
"В зависимости от установленной значимости точки, ИИ может отклонить от пути для сбора сокровищ, атаки более слабых монстров или героев, захвата шахты или городов." А в описании соответствующего параметра для AI:S
"$4 – значимость точки (500000 – значима, 5000000 – очень значима)"
Вопрос в следующем. Возможно, дальность и сложность доступа, не учитываются в баллах значимости, также, как и мощь героя с армией, для которого эта значимость точки устанавливается. Ведь наверняка же эти баллы для каких-нибудь мельниц не меняются в зависимости от того, какой герой с какой армией выбран и на каком расстоянии он от этой мельницы находится. Читаем дальше ERM-Help:
"Также можете связать координаты героя противника и координаты точки назначения, и герой ИИ будет неумолимо преследовать героя игрока."
А почему бы не связать таким образом координаты одного героя ИИ с координатами другого героя ИИ, армии/артефакты которых нуждаются в перераспределении. Ведь, как и в случае с мельницей, баллы значимости, которые мы будем задавать не должны будут меняться с расстоянием между героями а зависеть лишь от полезности встречи. Причем, очевидно, более слабый герой должен затрачивать больше мувипойтов для встречи, так как у сильного скорее всего будут задачи с большей значимостью, например пробивки.
Самая важная задача в этом случае правильно отмасштабировать баллы скоринга полезности встречи с задаваемыми баллами полезности встречи в ERM.


RE: Усовершенствование ИИ - Algor - 20.08.2018 14:29

У меня в опции "Не место для людей" для ИИ открываются города игрока-человека и им выставляется "повышенный интерес".
Но насколько влияют на посещаемость именно эти баллы - оценить сложно.

Что до "принуждения к встрече", то тут вполне себе можно опытным путем попробовать подобрать коэффициенты - ставишь 2х ИИ героев в окружении "вкусняшек", задаешь им страстное влечение друг к другу и смотришь куда побегут в первую очередь. Заодно и влияние расстояния до "вкусняшек" можно будет оценить.
Если что, не забудь потом поделиться результатами наблюдений, в Help'е информации действительно маловато.


RE: Усовершенствование ИИ - ModWizard - 21.08.2018 00:51

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

Если говорить о реализации нового ИИ, то в начале нужно определится со структурой его работы. После этого многое станет яснее, как формализовать то или иное условие.


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

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

Ход ИИ должен быть разбит на два этапа:

1. Стратегический.

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

2. Далее, для каждого героя, начинается тактическая фаза. Каждый герой соображает, какое тактическое действие он может совершить и происходит оптимизация по суммарной стоймости этих действий за ход.

К примеру, получена стратегия раш.

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

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

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

1. выдумывать список действий для начала.
2. формулировать условия выбора плана.
3. оценки ценности действий в нем.

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



RE: Усовершенствование ИИ - Elzivir - 05.10.2018 04:29

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


RE: Усовершенствование ИИ - Algor - 05.10.2018 14:55

Технически это не сложно. Можно в начале каждого хода ИИ игрока проходиться по его героям, далее по имеющимся артефактам и принудительно надевать арты с максимальной ценностью.
Но тогда нужно также заморочиться и с модификаторами ценности в зависимости от текущего состояния героев. Чтобы при отсутствии некромантии/стрельбы "обнулялись" ценности соотв. артов, при значительном кол-ве низкоуровневых существ повышалась ценность артов на +1 к здоровью, при отсутствии книги обесценивались арты на силу/знание, при выученном заклинании и выключенной опции "живые свитки" соотв. свитки не надевались бы в "разное" и т.д. Вот этих нюансов достаточно много.


RE: Усовершенствование ИИ - Noel - 05.10.2018 16:38

Хотите, чтобы ИИ вас дрючил? Ставьте себе мод "Конкистадор" от валери. Прекрасная штука


RE: Усовершенствование ИИ - Elzivir - 05.10.2018 21:11

(05.10.2018 14:55)Algor Wrote:  Технически это не сложно. Можно в начале каждого хода ИИ игрока проходиться по его героям, далее по имеющимся артефактам и принудительно надевать арты с максимальной ценностью.
Но тогда нужно также заморочиться и с модификаторами ценности в зависимости от текущего состояния героев. Чтобы при отсутствии некромантии/стрельбы "обнулялись" ценности соотв. артов, при значительном кол-ве низкоуровневых существ повышалась ценность артов на +1 к здоровью, при отсутствии книги обесценивались арты на силу/знание, при выученном заклинании и выключенной опции "живые свитки" соотв. свитки не надевались бы в "разное" и т.д. Вот этих нюансов достаточно много.

Algor, абсолютно согласен, что учесть все нюансы достаточно проблематично, т.к. их слишком много и не всегда очевидно, какие артефакты для ИИ более благоприятны в определенный отрезок времени. Поэтому, думаю, можно ограничиться, так сказать, базовой концепцией, предполагающей наиболее важные исправления, вызывающие наименьшие сомнения.

- Чем выше класс/ценность артефакта, тем выше его приоритет для ИИ.
- ИИ автоматически экипируется Сборным артефактом при условии нахождения всех его комплектующих, даже если некоторые его части лежат в рюкзаке.
- Слоты Кольца, Плащ, а также слоты под Разное для одиночных артефактов (т.е. не сборников) не учитываются, за исключением случаев, когда свиток с уже известным для ИИ заклинанием помещается из "разного" в рюкзак (кстати, последним пунктом вполне можно дополнить скрипт ESR "Разрушение артефактов, свитков и знамен").
- Амулет гробовщика, Мантия вампира, Сапоги мертвеца учитываются лишь при наличии у героя вторичного навыка Некромантии.
- Сапоги левитации, Ожерелье морского проведения, Шляпа морского капитана учитываются лишь при наличии на карте воды не менее 15%.

Далее пробегусь по оставшимся 6-ти слотам (от минимума до максимума).

Оружие: Секира кентавра - Меч правосудия.
Щит: Щит гномов - Щит львиной храбрости.
Шлем: Шлем белого единорога - Шлем небесного просвещения, либо Шляпа оратора для тех, у кого она не запрещена.
Доспехи: Доспехи из окаменелого дерева - Латы титана (в качестве альтернативы Латам тут можно назвать Доспехи из чешуи дракона, но последние по стоимости уступают первым, хотя и могут в некоторых случаях оказаться более полезными для ИИ класса "Воин").
Амулеты: тут заморачиваться насчет оберегов (учитывать для кого и когда они полезны) особого смысла не вижу, поэтому как всегда: чем выше класс/ценность артефакта, тем выше его приоритет для ИИ. Максимальный предел - Ожерелье божественной благодати.
Обувь: Наколенники из драконьей кости - Сандалии святого.

P/S: Понимаю, что исправление данного аспекта поведения ИИ хоть и не сделает из него гения тактики и стратегии, но что несколько усилит его и без того обделенный природой искусственный мозг уж точно. Yes


RE: Усовершенствование ИИ - Berserker - 05.10.2018 23:25

Очень ценные замечания для любого реального ИИ мода.


RE: Усовершенствование ИИ - daemon_n - 07.10.2018 04:16

   Амулет гробовщика, Мантия вампира, Сапоги мертвеца учитываются лишь при наличии у героя вторичного навыка Некромантии
В Эре пофиксили "поднятие 1 скелета" для ИИ?


RE: Усовершенствование ИИ - Berserker - 07.10.2018 20:57

Нет, скорее всего (


RE: Усовершенствование ИИ - Ben - 27.10.2018 20:44

Инфа из Физмига:

"ИИ-игрок не нанимает новых героев, если на карте в общей сложности 21 или более героев (включая героев других игроков)"

Это для сложности 200%. Для сложности 160% лимит героев - 18. Возможно, в те далекие годы это было сделано для экономии ресурсов процессора.

Кто-нибудь знает, по какому адресу можно поменять эти лимиты ?


RE: Усовершенствование ИИ - igrik - 29.10.2018 10:21

(27.10.2018 20:44)Ben Wrote:  Кто-нибудь знает, по какому адресу можно поменять эти лимиты ?
0x66052C


RE: Усовершенствование ИИ - Ben - 29.10.2018 20:47

(29.10.2018 10:21)igrik Wrote:  0x66052C

Спасибо !


RE: Усовершенствование ИИ - Elzivir - 03.01.2021 04:04

(02.07.2017 03:33)Elzivir Wrote:  Довольно часто в игре возникает ситуация, когда герой игрока высокого уровня и с раскачавшимся командиром (но без армии) останавливается совсем рядом с городом ИИ, в гарнизоне которого на страже находятся пара инвалидов. Но несмотря на то, что у ИИ есть в запасе целый ход, и невыкупленные в замке юниты, и необходимое на них золото (много золота), он не предпринимает никаких оборонительных действий, не видя никакой потенциальной угрозы для себя в герое без армии. Причем, как только с помощью кодов добавить герою воинов, то ИИ сразу начинает паниковать и скупает всех и вся в замке.

Вопрос: кто-нибудь решил эту проблему?

P/S: игра при 200% сложности.

Всех приветствую! Заранее извиняюсь за поднятую ранее тему, но она до сих пор не дает мне покоя, т.к. из всех запланированных мною к исправлению моментов игры этот, пожалуй, самый приоритетный. Прошу посильной помощи в решении данной проблемы... 119


RE: AI - искусственный интеллект (ИИ) - Raistlin - 03.01.2021 04:46

Можно в конце дня циклом пробегаться по всем героям, высчитывать условную силу их командиров и накидывать им армию в таком количестве, а вначале каждого дня, соответственно, забирать ее обратно. Опыт, вероятно, тоже придётся учитывать. Для хранения информации я бы посоветовал использовать w-переменные. Вполне возможно, кстати, что чего-то подобное я в обозримом будущем напишу сам. Ab


RE: AI - искусственный интеллект (ИИ) - daemon_n - 03.01.2021 05:35

Raistlin, моё уважение)
Если будет возможность, опиши потом, пожалуйста, как все эти w-vars работают, а то для меня это потёмкиDash1


RE: AI - искусственный интеллект (ИИ) - Elzivir - 03.01.2021 13:24

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

И кстати, у меня уже была подобная идея, чтобы в конце хода присваивать героям без армии (под управлением человека) одного быстрого, но слабого юнита (чтобы не отпугнуть ИИ от нападения на данного героя). И gamecreator даже написал на скорую руку по этому поводу скрипт (за что ему еще раз спасибо):

Но подозреваю, что здесь имеют место опечатки, а довести его до рабочего состояния без посторонней помощи мне не представляется возможным... Kap

P/S: Кстати, до сих пор сижу на версии Era 2.46 Unsure


RE: AI - искусственный интеллект (ИИ) - igrik - 03.01.2021 13:53

В плагине game bug fixes давным давно добавлено вычисление силы командиров для героев ИИ (код)
Формула AI_Value = ( атака * урон * скорость * (1: не стреляет, 2: стреляет) + защита * здоровье ) / 4


RE: AI - искусственный интеллект (ИИ) - Elzivir - 03.01.2021 14:21

igrik, просто в ранних версиях плагина "game bug fixes" этого еще нет, а использование более поздних в Era v2.46 несовместимо. Если сможешь помочь с адаптацией пусть не всего плагина, а хотя бы одного этого нюанса к 2.46 (думаю, что я далеко не единственный, кто еще придерживается старой версии Era и кому было бы крайне полезно исправление этого момента), буду очень и очень признателен.
Ab


RE: AI - искусственный интеллект (ИИ) - helgtla - 03.01.2021 15:31

igrik, А как давно была добавлена подобная формула значимости командиров для ИИ? И действует ли ЭТО только на карте приключений или для боевых ИИ приоритетов тоже работает (мне казалось, что для боя было Fight_Value)? Если только на карте, то есть ли схожая правка для боевых ситуаций?
   Я это к тому, что было бы хорошо (возможно это только мне так кажется), если бы ИИ учитывал не только первичные пар-ры существ/командиров, но и их особенности (спецабилки с опыта, установленные флаги. Я про такие как двойной удар/выстрел, безответный удар, смертельный взгляд и т.д. )
   Сейчас есть реакция ИИ на то есть ли у существа сама абилка (к примеру если есть удар по кругу, то токого юнита ИИ старается не атаковать всеми), но вот значимость в плане Важности для победной стратегии, юнитов с подобными абилками, по сравнению с "грубым" Fight_Value, построенном на сумме первичных параметров существ в стаке- полностью отсутствует.
   К примеру: у ИИ есть командир прокачанный с взглядом, безответным двойным ударом/выстрелом, блоком и имеется стак- два стака зомби (300-500 штук). Но прокачанный командир по Fight_Value - проигрывает в ценности зомбакам и ИИ при выборе кого именно стоит поднять (воскрешение/поднятие нежити), отдаёт предпочтение зомби, хотя командир - гораздо выше по боевой мощи существо и в первую очередь ИМЕННО из-за абилок.
   И это касается всех монстров. Я к тому, что если бы это было бы возможно, в фиксе для расчёта значимости боевого веса для ИИ сделать учёт в формуле с поправками на приобретённые спецумения/ флаговые умения. Так как в Вог/ЭРА именно эти параметры и являются решающими.
   Одна горгона с абилками блока, безответного двойного удара - гораздо важнее, чем тысяча троглодитов в битве против десятка Лазуриков.