Current time: 29.06.2017, 14:12 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Усовершенствование ИИ
Author Message
Heromant Offline

Posts: 215
Post: #1

(19.05.2017 14:28)Algor Wrote:  Если сомневаешься, попытайся формализовать. В любом случае, именно это - начало работы.
1) Посчитать кратчайший по количеству очков перемещения путь героя до точки карты с заданными координатами в мувипойнтах этого героя.
...
Продолжение следует. Первый пункт самый важный и незаменимый. Здесь, вероятно, можно взять уже готовый алгоритм поиска оптимального пути, который применяется, например, для всяких там разнородных вязких сред в физике, и запилить его на ERM.
19.05.2017 17:20
Find all posts by this user Quote this message in a reply
Algor Offline
Forum Moderators

Posts: 2241
Post: #2

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

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

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

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


19.05.2017 18:32
Visit this user's website Find all posts by this user Quote this message in a reply
Heromant Offline

Posts: 215
Post: #3

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

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

Кстати, что касается идеи фикса ИИ в плане более частых встреч.
Если кратко по формализации:
Нужно ввести некоторую величину, которая будет пропорциональна количеству очков перемещения героя * на силу армии героя * уровень героя.
Далее в этих же единицах нужно оценить каждый бенефит, который герои могут дать друг другу. В этих единицах можно оценить армию, артефакты, заклинания и в случае твоего скрипта менторинга - опыт.
Причём, чтобы не сбивать цели сильному герою - пускай слабые бегут к сильному, а не наоборот. Для простоты на первом этапе сделать, чтобы слабый герой бежал к сильному, если одного его хода хватит для встречи. Естественно, в этом случае необходимо будет сделать, чтобы очередность их ходов была не случайной, а слабые герои ходили раньше сильных в случае, если им надо осуществить встречу.
21.05.2017 17:58
Find all posts by this user Quote this message in a reply
Algor Offline
Forum Moderators

Posts: 2241
Post: #4

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

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

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

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


21.05.2017 19:42
Visit this user's website Find all posts by this user Quote this message in a reply
Heromant Offline

Posts: 215
Post: #5

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

(21.05.2017 19:42)Algor Wrote:  В описанном тобою случае движения второстепенных к главному в пределах одного хода упущена трата ОД обоих героев при обучении...
Я не пользуюсь скриптом "передача опыта". Я не думаю, что это нужно учитывать в MVP. Дело то в другом. ИИ на текущий момент практически не использует существующий навык "грамотность", по моим наблюдениям. Также, он не создаёт мощного "ударного" героя и практически никогда не передаёт войска и артефакты между героями в пользу сильного.
(This post was last modified: 21.05.2017 21:38 by Heromant.)
21.05.2017 20:14
Find all posts by this user Quote this message in a reply
gamecreator Online
Administrators

Posts: 7099
Post: #6

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


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
21.05.2017 22:15
Find all posts by this user Quote this message in a reply
Heromant Offline

Posts: 215
Post: #7

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

Я видел в этом моде скрипт "не место для людей". Но там же по факту не усиление ИИ, а добавление ему всяческих бонусов. В частности, в виде разведанных замков человеческого соперника и дополнительного опыта.
21.05.2017 23:50
Find all posts by this user Quote this message in a reply
Algor Offline
Forum Moderators

Posts: 2241
Post: #8

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


22.05.2017 12:45
Visit this user's website Find all posts by this user Quote this message in a reply
Heromant Offline

Posts: 215
Post: #9

(22.05.2017 12:45)Algor Wrote:  Heromant, не против выноса этого обсуждения в отдельную тему? Т.к. к ES оно не относится и со временем просто тут затеряется, а так там можно было бы предлагать различные варианты усиления ИИ.
Конечно не против. Только надо бы обозначить, что в этой теме предлагаются, обсуждаются, разрабатываются усиления "сообразительности" ИИ, а не усиление ИИ бонусами и прочими бенефитами.
22.05.2017 13:00
Find all posts by this user Quote this message in a reply
gamecreator Online
Administrators

Posts: 7099
Post: #10

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


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
22.05.2017 14:08
Find all posts by this user Quote this message in a reply
Heromant Offline

Posts: 215
Post: #11

(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:  Конечно не против. Только надо бы обозначить, что в этой теме предлагаются, обсуждаются, разрабатываются усиления "сообразительности" ИИ, а не усиление ИИ бонусами и прочими бенефитами.
Отделил. Так пойдёт?
Да, отлично.
(This post was last modified: 22.05.2017 15:39 by Heromant.)
22.05.2017 15:28
Find all posts by this user Quote this message in a reply
Algor Offline
Forum Moderators

Posts: 2241
Post: #12

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


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


22.05.2017 19:51
Visit this user's website Find all posts by this user Quote this message in a reply
Heromant Offline

Posts: 215
Post: #13

Пришла разумная мысль по поводу усиления ИИ за счёт встреч героев. Можно вполне безболезненно сделать, чтобы слабый герой гарантированно встречался с сильным, если первому до второго 2 дня пути, а не один. Для этого необходимо:
1) В начале каждого дня проверять, может ли слабый герой дойти до сильного за 1 текущий день, если по расчетам им есть смысл встречаться. Если да - назначаем сильного героя местом встречи, сначала ходит слабый.
2) Если не может за 1 день, начинаем ход с сильных героев.
3) Если после хода сильного героя до него может с пользой дойти слабый герой за 2 дня - назначаем сильного героя местом встречи.
4) Завершаем ход слабым героем. Приближаемся.
5) Начинаем следующий день со слабого героя, которому остался 1 день пути до сильного. Догоняем его, встречаемся, обмениваемся всем, что надо.
6) Продолжаем день, проверяем могут ли слабые герои, дойти до сильного, кроме того, который уже дошёл в текущий день.
7) См. п. 2.
И т. д.
Есть подводные камни? Мы же можем ведь очередностью хода ИИ управлять как-то?
(This post was last modified: 24.05.2017 00:58 by Heromant.)
24.05.2017 00:42
Find all posts by this user Quote this message in a reply
Algor Offline
Forum Moderators

Posts: 2241
Post: #14

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


24.05.2017 10:14
Visit this user's website Find all posts by this user Quote this message in a reply
Heromant Offline

Posts: 215
Post: #15

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

У кого-то есть желание реализовать сей скрипт? У меня проблемы со свободным временем и скоростью реализации из-за малого опыта в ERM... И деньгами (на донат не рассчитывайте). Если никто не хочет - реализую сам. На пенсии.96
26.05.2017 14:40
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2017 MyBB Group