Перейти к содержанию

Сообщения от Алгоритм на поле боя ИИ

Пока нет оценок — будьте первым!
Аватар пользователя
12 лет назад
Добрый день. Просмотрел форум, ответа (вопроса) не нашел.

По какому принципу нейтралы агрятся на поле боя? Есть ли какой то алгоритм у ИИ на кого ранее бежать (стрелять)?. Или тупо бежать в перед , а потом до кого добегают, того и бьют.

Если не корректно выразился, можете пинать.
Аватар пользователя
12 лет назад
Посмотри Памятку по тройке в моей подписи - там есть раздел о поведении ИИ на поле боя.
В ответ пользователю dnaop-wr
Аватар пользователя
12 лет назад
dnaop-wr
Посмотри Памятку по тройке в моей подписи - там есть раздел о поведении ИИ на поле боя.

Спасибо большое. В памятке получил полный ответ. Тему можно закрывать.
В ответ пользователю dnaop-wr
11 лет назад
dnaop-wr
Посмотри Памятку по тройке в моей подписи - там есть раздел о поведении ИИ на поле боя.
В своё время, почти год назад, занимался подобным вопросом, но только при 1 на 1 отрядах. За пример было взято изучение, как ведёт себя стек виверн в нычке при её захвате гнолями. При их скорости вивы ходят раньше и имеют два варианта поведения - вейт и полёт полностью вперёд. Зависит это от того, боятся они получить по голове от гнолей или нет. В итоге шло сравнение значений, полученных по формуле ниже и от их соотношения можно было понять тактику ИИ.
Собственно, сама формула выглядела примерно так(FV - Fight Value из crtraits.txt):
K_стека = HP_юнита*(урон_стека/FV_юнита), где
FV_юнита = sqrt(((FV_базовое+(атака_героя*FV_базовое)/20 )^2)*((FV_базовое+(защита_героя*FV_базовое)/20)^2))
Впрочем, это не совсем всё, но примерное объяснение в том, что стек просто хочет нанести больший урон не по HP, а по HP*FV, при этом он отдельно учитывает атаку и защиту героя, то есть, при прочих равных стек с атакой и защитой 5/5 и героем 0/0 для него не то же самое, что 3/3 и 2/2, хотя и урон при этом одинаковый. При этом, вивы всегда подлетали, если соотношение (К_стека_гнолей/К_стека_виверн)>=2. То есть, они уже хоронили себя заранее. Так же и в случае, если соотношение <=0.07. Они считают, что уже победа.
Примерно так я всё это могу по старым записям описать, но вполне возможно, что в чём-то ошибся, всё-таки уже почти год прошёл. Если интересно - могу показать примеры расчёта и всё такое, но это надо вспоминать.
На практике же это - атака змиев в ульях, атака стрелков в начале раунда по выдвинутым кентам, а не по эльфам, страх получить по зубам от стека вив и удар в единичку.
P.S. И да, кстати, урон_стека - это средний урон. То есть, стек воздушек будет считать свой урон за 5 при уроне 2-8. В своё время хотел записать видео с выводом формулы такой, но таааак мне лень.
Аватар пользователя
11 лет назад
Ну да, это математическое обоснование поведения ИИ на поле боя. Одна беда - далеко не всегда можно быстро учесть, оценить и просчитать влияние всех факторов. Поведение ИИ можно определить как наиболее вероятное, но не значит, что он поступит именно так - он может поступить нелогично с точки зрения игрока, но логично по заложенному в него алгоритму. К тому же возможно и определенный рандом действий ИИ присутствует в некоторых ситуациях. Поэтому кратко и однозначно описать алгоритм поведения ИИ на поле боя не представляется возможным (без вскрытия кода).
Впрочем, хочу отметить, что "безмозглая" нежить ведет себя как и должна - она идет к ближайшему врагу, в то время как живые юниты могут игнорировать подставку и идти напрямую к главным силам врага.
В ответ пользователю dnaop-wr
11 лет назад
dnaop-wr
Ну да, это математическое обоснование поведения ИИ на поле боя. Одна беда - далеко не всегда можно быстро учесть, оценить и просчитать влияние всех факторов. Поведение ИИ можно определить как наиболее вероятное, но не значит, что он поступит именно так - он может поступить нелогично с точки зрения игрока, но логично по заложенному в него алгоритму. К тому же возможно и определенный рандом действий ИИ присутствует в некоторых ситуациях. Поэтому кратко и однозначно описать алгоритм поведения ИИ на поле боя не представляется возможным (без вскрытия кода).
Впрочем, хочу отметить, что "безмозглая" нежить ведет себя как и должна - она идет к ближайшему врагу, в то время как живые юниты могут игнорировать подставку и идти напрямую к главным силам врага.
Не уверен, что есть разница между типом существа, так как во время тестов у меня и скелеты присутствовали. Вели себя в точности, как и другие. При этом, учитывая отсутствие морали, не могу и утверждать, что поведение идентично. А ещё насчет поведения - мой тест в улике 12 могу привести.
Герой - Аин 0/0 (СП и знание не учитываются ИИ при расчете ходов). Армия - только гнолики. Пробуем две расстановки гнолей:
422+6 единичек и 423+6 единичек. В первом случае змии бьют по единичкам. Во втором бросаются на большой стек. Разница в уронах тут мало значения имеет. Считая FV стеков можно заметить, что FV змиев = 250*60 = 15000, в свою очередь FV 428 гнолей = 70*428 = 29960. 429й гнолик выступает как раз тем граничным гноликом, который заставляет змиек понять, что им ничего не светит. Увеличивает FV гнолей настолько, что соотношение становится >=2. Итог - удар первых змиек по большому стеку. Далее же змийки видят 7 стеков, один из который ответку не даст, но при ударе по нему будет больше потерь HP*FV у врага. Поэтому все остальные пинают так же большой стек.
Таким вот образом добавляя одного гноля, можно увеличить потери, имея бОльшую армию.
Кстати, однажды у меня в игре всё пошло неправильно в склепе из-за большего количества гнолей. Оказалось, что убитый ящерами вампир унизил FV противника настолько, что соотношение вышло за рамки, от чего тряпки уже понеслись убивать большие стеки, а не гонялись за мухой. Как-то так было примерно, точно уже не вспомнить.
P.S. При 428 гнолях, если большой стек дефится в первом раунде, то вторым раундом получит по башке, даже если есть ещё 1 гнолика. Прибавленная единичка дефа, похоже, считается не от существа, а от героя, и в итоге стек получает гнолей с несколько бОльшим FV, что и заставляет ударить их.
Аватар пользователя
11 лет назад
Я не тестировал поведение различных монстров на поле боя - просто заметил типичное поведение определенных видов монстров.
В ответ пользователю dnaop-wr
Аватар пользователя
6 лет назад
Формула определения Велью стека не верная не много или криво записана, вот точная формула

FV_юнита=floor((sqrt( Fight_Value+(Fight_Value*(Атака_Героя+ Бонус_Атаки )/20)*(Fight_Value+(Fight_Value*Защита_Героя+Бонусы_Защиты/20) ))

И если выражение Fv_юнита* Сумма_Юнитов > 2*Fight_Value * N верно, то АИ будет бить по мейн стекам, если не верна, то будет избегать их и бить по единичкам.
floor - округление полученного числа в меньшую сторону.
Где бонусы это сумма бонусов за родную землю(+0 или +1) и бонус юниту от героя спеца по этому юниту в единицах. К примеру Галтран +1 на 1 уровне даст скелетам. Fight_Value велью юнита.

Данной формулой можно пользоваться при нападении на Черные Башни с черным или Золотым драконом.

Так же более общая формула для смешанной армии для определения в какой момент алгоритм Аи изменяется в бою

Σ(Ni*floor(sqrt(V(vi,ha,b1)*V(ai,hd,b1))) > 2*vj*Nj,
где V(vi,ha,b1)=FV_юнита.
Если формула не верна то АИ будет стараться закрывать стрелков, бить по тем кто меньше ответный удар нанесет, держаться на расстоянии от удара мейн стека, бить по существу с которого снят ответный удар, и который ранен. И вообще много разных коэффициентов, в общем урон будет по Велью_Юнита*Урон/ХП_Юнита
10 месяцев назад
Вопрос, который давно хотел задать. В трешке рандом не вполне себе рандом. Он буквально предсказуем, вплоть до того, что если вы рестартанули сценарий и в сундуке рядом с городом подобрали допустим 1000 золота, то в рядом в могиле воина окажется допустим перчатки всадника, а если в сундуке будет 1500 то в могиле что-то другое. Но если вы опять рестартанёте и в сундуке будет 1000, то в могиле опять будут перчатки. Также и с деревом прокачки героев, благодаря чему работает тулза LMOracle. 
Интересно, что в какие бы версии я не игра, откуда бы их не скачивал и на какой бы комп не ставил, ровно также у меня работает и в бою. Если я повторяю одну и ту же последовательность действий, то ровно в те жу моменты боя у меня/ у компа будет выпадать мораль, удача, те же касты джинов или чародеев и т.д. Однако часто в обсуждении прохождений в оффлайн встрачются такие замечания, что мол нельзя строить прохождение на том, что должна выпасть мораль, она ведь может и не выпасть и т.д. То есть, чувствю, что так рандом как работает у меня, будто бы работает только у меня. 
Может быть дело в HD моде или в чем-то еще? Подскажите у кого как работает рандом в бою, потому что у меня 100% воспроизводимые события при пошаговом повотрении.
В ответ пользователю Plotnick
10 месяцев назад
Plotnick
Вопрос, который давно хотел задать. В трешке рандом не вполне себе рандом. Он буквально предсказуем, вплоть до того, что если вы рестартанули сценарий и в сундуке рядом с городом подобрали допустим 1000 золота, то в рядом в могиле воина окажется допустим перчатки всадника, а если в сундуке будет 1500 то в могиле что-то другое. Но если вы опять рестартанёте и в сундуке будет 1000, то в могиле опять будут перчатки. Также и с деревом прокачки героев, благодаря чему работает тулза LMOracle. 
Интересно, что в какие бы версии я не игра, откуда бы их не скачивал и на какой бы комп не ставил, ровно также у меня работает и в бою. Если я повторяю одну и ту же последовательность действий, то ровно в те жу моменты боя у меня/ у компа будет выпадать мораль, удача, те же касты джинов или чародеев и т.д. Однако часто в обсуждении прохождений в оффлайн встрачются такие замечания, что мол нельзя строить прохождение на том, что должна выпасть мораль, она ведь может и не выпасть и т.д. То есть, чувствю, что так рандом как работает у меня, будто бы работает только у меня. 
Может быть дело в HD моде или в чем-то еще? Подскажите у кого как работает рандом в бою, потому что у меня 100% воспроизводимые события при пошаговом повотрении.

Видимо разные сиды генерируются при рестартах. Это на Hota или SOD? Просто в бою в Hota рандом строго детерминированный (повторяемость полная), а в SOD/Complete все как раз таки почти хаотично (тут рандом покадровый). 
В ответ пользователю Nameless Hero
10 месяцев назад
Nameless Hero

Это на Hota или SOD?

SOD разных версий пробовал. GOG, Complete, SOD english. Всегда получается 100% воспроизводимость.
В ответ пользователю Plotnick
10 месяцев назад
Plotnick

SOD разных версий пробовал. GOG, Complete, SOD english. Всегда получается 100% воспроизводимость.
Понял. Я как-то встречал видео в одном из тредов Реддита про воспроизводимость/смену раскладов при различных рестартах, где автор расписывал примерные паттерны. На примере кампании "Руби и Кромсай". Но к сожалению не могу найти это самое видео. На хота тоже самое , наверное, не знаете?
В ответ пользователю Nameless Hero
10 месяцев назад
Nameless Hero
Я как-то встречал видео в одном из тредов Реддита про воспроизводимость/смену раскладов при различных рестартах, где автор расписывал примерные паттерны. На примере кампании "Руби и Кромсай".

В прохождениях раньше было на ag.ru в геройском уголке, но сейчас и уголка такого нет. В общем там прямо говорилось в началах разных кампаний, что рестартами добиваться комбинаций вторичных скилов. По сути, наборы этих комбинаций были статичны, то есть выпадало несколько вариантов. Притом, после какого-то из рестартов они могли зациклиться до двух. После чего надо было перезапускать игру. Так же происходит со стартовым артом, можно попытаться сгенерировать что-то приличное, на иногда рестарты уходят в цикличность, так и не родив ничего приличного ))
Но бои это другое дело, там можно сделать пропуск хода или какое-то действие, чтобы воздействовать на рандом. Допустим, можно сидеть и считать ходы вражеского отряда и заметить что на 5 ходу у него выпадает мораль. Чтобы этого не случилось надо как-то поменять расклад, например, походить своим отрядом или наоборот пропустить ход. Иначе мораль опять случится на 5 ходу. Вот об этом я говорю. Это у меня работает всегда, а причины такого поведения мне непонятны.
В хоту не играл.

Статистика

Приветствуем новейшего участника: recijeb

Сейчас на сайте 9 пользователей 1359 гостей