Current time: 22.08.2017, 10:31 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Усовершенствование ИИ
Author Message
Algor Online
Forum Moderators

Posts: 2279
Post: #16

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


26.05.2017 15:41
Visit this user's website Find all posts by this user Quote this message in a reply
Heromant Offline

Posts: 216
Post: #17

(26.05.2017 15:41)Algor Wrote:  Heromant, отличная возможность подтянуть свой ERM, не упусти её 118
И малый опыт, поверь, не помеха. Я, например, BattleHeroes начал писать через 3 месяца после написания своего первого скрипта на ERM.
Какие-нибудь комментарии по алгоритму принятия решения о необходимости встречи есть?
Можно ли менять менять порядок хода героев ИИ, при этом чтобы никакие из них не пропускали хода?
Есть ли возможность проверить, разведана ли конкретная клетка на карте игроком конкретного цвета?
26.05.2017 15:56
Find all posts by this user Quote this message in a reply
Algor Online
Forum Moderators

Posts: 2279
Post: #18

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

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


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


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


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

Posts: 216
Post: #19

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

Данный алгоритм можно упростить в пользу большей линейности отказа от выбора оптимального и сортировок, что в рамках ERM затруднительно. Таким образом все пункты будут выполняться линейно по очереди для каждого героя-цели. При этом первый же герой-цель, целесообразность движения к которому подтверждена назначается целевой точкой для реального движения.
30.05.2017 13:27
Find all posts by this user Quote this message in a reply
Algor Online
Forum Moderators

Posts: 2279
Post: #20

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

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

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


30.05.2017 13:39
Visit this user's website Find all posts by this user Quote this message in a reply
Heromant Offline

Posts: 216
Post: #21

(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. Но в случае такой "телепортации" мы теряем ценную анимацию на ходе противника, что не хорошо и может ввести в заблуждение относительно использования противником "двери измерений".
30.05.2017 14:29
Find all posts by this user Quote this message in a reply
gamecreator Online
Administrators

Posts: 7113
Post: #22

(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) вопрос с нужной очередностью хода (как вариант, с перехватом передачи хода) вроде не закрыт еще.
А почему манипуляция ОД не подходит?


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
01.06.2017 14:25
Find all posts by this user Quote this message in a reply
Algor Online
Forum Moderators

Posts: 2279
Post: #23

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

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


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

Posts: 216
Post: #24

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

Объясни, как ты предлагаешь управлять очередностью хода ИИ?
Я похоже понял, что имел в виду gamecreator. В начале хода забирать ОД у всех героев кроме одного. При завершении хода этим героем и до завершения дня игроком выдавать изъятые очки движения следующему в нужной очерёдности.Ab
01.06.2017 15:51
Find all posts by this user Quote this message in a reply
gamecreator Online
Administrators

Posts: 7113
Post: #25

Именно.


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

Posts: 216
Post: #26

(01.06.2017 16:12)gamecreator Wrote:  Именно.
Какие триггеры следует использовать в начале и в конце хода конкретного героя? Не триггер шага героя же !?HM
01.06.2017 17:52
Find all posts by this user Quote this message in a reply
gamecreator Online
Administrators

Posts: 7113
Post: #27

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


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
01.06.2017 18:48
Find all posts by this user Quote this message in a reply
Algor Online
Forum Moderators

Posts: 2279
Post: #28

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

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


01.06.2017 19:20
Visit this user's website Find all posts by this user Quote this message in a reply
gamecreator Online
Administrators

Posts: 7113
Post: #29

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


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

Posts: 212
Post: #30

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

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

P/S: игра при 200% сложности.
02.07.2017 03:33
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