[ОБСУЖДЕНИЕ] Подпираем AI костылями - Форум HeroesWorld-а

Быстрая навигация по основным разделам форума:
Турниры
КАРТЫ
Heroes 6
Heroes 5
Heroes 4
Heroes 3
Heroes 2
Heroes 1
Might&Magic

Герои Меча и Магии 5 - Картостроительство (Редактор карт) В этом разделе можно обсуждать все что касается редактора карт для Heroes of Might and Magic V. Так же здесь обсуждаем картостроительство.

Ответ
 
Опции темы
#1
Старый 21.03.2022, 15:36
  #1
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 106
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 106
Jewily#4267
Лампочка
[ОБСУЖДЕНИЕ] Подпираем AI костылями

Всем добрый день!

В процессе создания мультиплеерной карты столкнулся с таким животрепещущим вопросом, как поведение искусственного интеллекта в искусственно созданных условиях.
На карте с помощью скриптов реализовано достаточное количество активностей, результатом которых становится получение игроком определённого преимущества: ресурсов, опыта и тому подобных благ.
Естественно, бот не сможет использовать такой функционал, отсюда (По результатам некоторых тестов), он начинает проигрывать в хлам на любой сложности ниже Героя.
Понимаю, что далеко не всем интересно играть на "Герое", ведь часто игра - отдых, а не вызов. Но и играть в "иди попинай бота" - очень скучно.
Поэтому прошу всех, кому в общем-то не лень, подарить мне свой игровой опыт(Или чисто аналитические рассуждения) на тему того, как можно заменять, или усилять бота на карте с множеством скриптов,
не влияя на бота напрямую,(то есть не задавая ему приоритетов и тому подобного, как это делают авторы Одиночных сценариев, коим моя карта не является).
Основные наработанные тезисы и условия, в рамках которых следует мыслить:
1)Не используются моды на ИИ, в виду их несовместимости с большинством важных, незаменимых скриптов.
2)Скрипты(фундаментальная их часть) основаны на волевых решениях игрока, на выборе и предпочтениях.
3)На данный момент существует система "Автовыбора" которая выбирает за бота сама.
Например:
За цену в 50 ед.ресурса получить 5000 опыта или 10000 золота? -> Считается средний уровень всех героев на карте, если бот отстает - берется опыт, если бот не остаёт, и не имеет лидирующего числа золота - берётся золото.
Такая система хоть и работает, однако она крайне несбалансирована. Почему? Потому что бот, как известно, имеет преимущество по ресурсам, да и битвы он проводит "своеобразно". Отсюда теперь, с таким подходом, уже терпит игрок,
причем терпит неинтересно, нечестно, просто за счёт вражеского мяса.

Жду от вас абсолютно любых мыслей, потому как из всех подчерпну какое-то рациональное зерно(а может и несколько). Буду очень благодарен каждому за его мнение.
Важно: прошу отписываться при возможности и тех, кто считает, что он очень плохо играет. Мне очень важно комплексное мнение хотя бы 1 5 человек.
__________________




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       
Jewily вне форума
Ответить с цитированием
#2
Старый 21.03.2022, 17:06
  #2
^
Долгий
 
Аватар для Долгий
📖
Регистрация: 23.04.2019
Сообщения: 56
Регистрация: 23.04.2019
Сообщения: 56
По умолчанию
Re: [ОБСУЖДЕНИЕ] Подпираем AI костылями

JewillНа карте с помощью скриптов реализовано достаточное количество активностей, результатом которых становится получение игроком определённого преимущества: ресурсов, опыта и тому подобных благ.
Естественно, бот не сможет использовать такой функционал, отсюда (По результатам некоторых тестов), он начинает проигрывать в хлам на любой сложности ниже Героя.

Если вы имеете ввиду новые строения (жилища,сокровищницы и т. д.), то ИИ можно задать приоритет посещения данных построек с помощью функций SetAIHeroAttractor и SetAIPlayerAttractor. Например если это сокровищница, по логике должен быть чек посетившего героя на принадлежность к игроку или ИИ. Если игрок - человек, то выдаётся QuestionBoxForPlayers с предложением пройти бой и т.д. Если игрок - ИИ, то банальная выдача награды и опыта без всплывающих окон и боя. Допустим, опытный игрок человек может взять эту сокровищницу на 20й день.И если цель - сильный ИИ, то можно задать приоритет на посещение данной сокровищницы на 20+ день героем максимального уровня функцией SetAIHeroAttractor, где он придёт, и сделает имитацию зачистки(а по факту получит награду на халяву).

Добавлено через 10 минут
Если же, приоритеты не вариант, то всегда можно написать функцию на банальную выдачу n количества армии герою максимального уровня.
Долгий вне форума
Ответить с цитированием
#3
Старый 21.03.2022, 17:06
  #3
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 106
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 106
Jewily#4267
По умолчанию
Re: [ОБСУЖДЕНИЕ] Подпираем AI костылями

ДолгийЕсли вы имеете ввиду новые строения (жилища,сокровищницы и т. д.), то ИИ можно задать приоритет посещения данных построек с помощью функций SetAIHeroAttractor и SetAIPlayerAttractor. Например если это сокровищница, по логике должен быть чек посетившего героя на принадлежность к игроку или ИИ. Если игрок - человек, то выдаётся QuestionBoxForPlayers с предложением пройти бой и т.д. Если игрок - ИИ, то банальная выдача награды и опыта без всплывающих окон и боя. Допустим, опытный игрок человек может взять эту сокровищницу на 20й день.И если цель - сильный ИИ, то можно задать приоритет на посещение данной сокровищницы на 20+ день героем максимального уровня функцией SetAIHeroAttractor, где он придёт, и сделает имитацию зачистки(а по факту получит награду на халяву).
Ваша мысль интересная, в плане приоритетов в нужный момент. Другой вопрос стоит в том, как же определить эти преславутые 20 дней? Технически я знаю достаточно способов, как обрабатывать ИИ, и его интеракты(Как я писал выше, у меня на тестовых объектах работает система, вполне сносная). Конечно, можно путём тестов - но тогда большинство людей, которые подвергнутся тяжкому испытанию играть в первую версию карты будут испытывать боль в разных местах.
Вопрос: бот как-то реагирует на QuestionBoxForPlayers,если он был ему отправлен?Или там эксепшн при вызове на бота?. Если игра сама ему жмёт "Ok", то это было бы неплохим подспорьем. Должен же быть путь разрешения этой проблемы, не встанет же бот из-за сообщения.
__________________




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       
Jewily вне форума
Ответить с цитированием
#4
Старый 21.03.2022, 17:08
  #4
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 25165
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 25165
По умолчанию
Re: [ОБСУЖДЕНИЕ] Подпираем AI костылями

АвторПоэтому прошу всех, кому в общем-то не лень, подарить мне свой игровой опыт(Или чисто аналитические рассуждения) на тему того, как можно заменять, или усилять бота на карте с множеством скриптов,
не влияя на бота напрямую,(то есть не задавая ему приоритетов и тому подобного, как это делают авторы Одиночных сценариев, коим моя карта не является).
Мне казалось относительно неплохой тактикой выдавать героям ИИ повышенный опыт со старта (и чуть-чуть войск дополнительных ещё можно). Хотя сам я играю мало, не тестировал особо, но по идее должно повысить скорость развития и агрессивность.
Ещё неплохо использовать MakeHeroReturnToTavernAfterDeath, или как-то так функция называлась. Чтобы после потери главного героя бот не становился грушей для битья, а оставался какой-никакой угрозой. Хотя эта функция и раздражает чутка, если несколько раз такой возврат происходит )
АвторЗа цену в 50 ед.ресурса получить 5000 опыта или 10000 золота? -> Считается средний уровень всех героев на карте, если бот отстает - берется опыт, если бот не остаёт, и не имеет лидирующего числа золота - берётся золото.
Это всё мне кажется, не в ту сторону, так как явное переусложнение. Проще сделать триггер нового дня и потихоньку боту доначислять -- тот же опыт, если он нужен. А золото ему, как понимаю, и вовсе бесполезно -- бот в пятых героях читер и скупает юнитов/строит здания условно-бесплатно.
То есть я о том, что для противника-человека нет никакой разницы, по-настоящему бот на квестах качается, или у него просто есть фора.
__________________
Времена года прошли
Не оставив часа на плач.
Вспомни их, чтоб победить,
Довольно неудач!





Стикеры GBF в Telegram
Времена года прошли
Не оставив часа на плач.
Вспомни их, чтоб победить,
Довольно неудач!





Стикеры GBF в Telegram
Ment вне форума
Ответить с цитированием
#5
Старый 21.03.2022, 17:43
  #5
^
Долгий
 
Аватар для Долгий
📖
Регистрация: 23.04.2019
Сообщения: 56
Регистрация: 23.04.2019
Сообщения: 56
По умолчанию
Re: [ОБСУЖДЕНИЕ] Подпираем AI костылями

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

Можно задать приоритет посещения относительно сложности. Чем ниже сложность, тем позже выдаётся приоритет.

Добавлено через 3 минуты
JewillВопрос: бот как-то реагирует на QuestionBoxForPlayers,если он был ему отправлен?Или там эксепшн при вызове на бота?. Если игра сама ему жмёт "Ok", то это было бы неплохим подспорьем. Должен же быть путь разрешения этой проблемы, не встанет же бот из-за сообщения.

Только что проверил работу QuestionBoxForPlayers. Походу она просто игнорируется ИИ игроком. И функции ответы, активирующиеся по нажатию кнопок "ОК" или "Отмена", просто не выполняются.
Долгий вне форума
Ответить с цитированием
#6
Старый 21.03.2022, 19:51
  #6
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1531
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1531
Выставка наград
По умолчанию
Re: [ОБСУЖДЕНИЕ] Подпираем AI костылями

QuestionBoxForPlayers выдаётся конкретному игроку (отсюда и название)... И если выдается игроку 1-человеку, то никому другому не прилетит
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#7
Старый 21.03.2022, 19:59
  #7
^
Долгий
 
Аватар для Долгий
📖
Регистрация: 23.04.2019
Сообщения: 56
Регистрация: 23.04.2019
Сообщения: 56
По умолчанию
Re: [ОБСУЖДЕНИЕ] Подпираем AI костылями

}{0TT@6bI4QuestionBoxForPlayers выдаётся конкретному игроку (отсюда и название)... И если выдается игроку 1-человеку, то никому другому не прилетит

Я именно проверил выдачу QuestionBox'а компьютерному игроку. Результат - полное игнорирование функции.
Долгий вне форума
Ответить с цитированием
#8
Старый 21.03.2022, 23:34
  #8
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 106
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 106
Jewily#4267
По умолчанию
Re: [ОБСУЖДЕНИЕ] Подпираем AI костылями

ДолгийМожно задать приоритет посещения относительно сложности. Чем ниже сложность, тем позже выдаётся приоритет.

Добавлено через 3 минуты

Только что проверил работу QuestionBoxForPlayers. Походу она просто игнорируется ИИ игроком. И функции ответы, активирующиеся по нажатию кнопок "ОК" или "Отмена", просто не выполняются.
Спасибо, Долгий, за проверку. В таком случае, наверное даже проверки на то, что игрок не бот ставить необязательно.
С приоритетами возьму действительно на заметку, потому как у меня есть на карте объекты, которые работают по принципу шахты, и оставлять их все игроку будет очень нечестно.

Добавлено через 5 минут
MentМне казалось относительно неплохой тактикой выдавать героям ИИ повышенный опыт со старта (и чуть-чуть войск дополнительных ещё можно).
Большое спасибо за расписаные мысли. Да, переусложнение, я с вами согласен. Я часто этим грешу, это тёмная грань перфекционизма.
Я неоднократно разглядывал внутренности ваших карт, и уже не помню на какой, может даже на всех, вами описанный принцип видел. Думаю давать небольшую надбавку вполне сносная идея, думаю попробую еженедельно давать боту небольшие плюшки, а там уже посмотрю, как он будет себя вести.
Ment Ещё неплохо использовать MakeHeroReturnToTavernAfterDeath, или как-то так функция называлась..
 
Это тоже идея хорошая, только вот карта большая, и качаться там можно хорошо, даже если ты ниваловский барашек.
Поэтому, возможно, сделаю ограниченное число смертей для бота, а затем у него будет отрубаться эта возможность. Нервы игроков нужно ведь как-то беречь!
__________________




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       
Jewily вне форума
Ответить с цитированием
#9
Старый 22.03.2022, 00:28
  #9
^
Долгий
 
Аватар для Долгий
📖
Регистрация: 23.04.2019
Сообщения: 56
Регистрация: 23.04.2019
Сообщения: 56
По умолчанию
Re: [ОБСУЖДЕНИЕ] Подпираем AI костылями

JewillВ таком случае, наверное даже проверки на то, что игрок не бот ставить необязательно.

Обязательно. Как уже выше сказано, функции по нажатии кнопок "ОК и "Отмена" компьютром не выполняются. Придётся делать проверку героя на принадлежность к ИИ, и если он ИИ, то сразу направлять его к функции кнопки "ОК".

Добавлено через 10 минут
Или особой функции для ИИ
Долгий вне форума
Ответить с цитированием
#10
Старый 22.03.2022, 00:59
  #10
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 106
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 106
Jewily#4267
По умолчанию
Re: [ОБСУЖДЕНИЕ] Подпираем AI костылями

ДолгийОбязательно. Как уже выше сказано, функции по нажатии кнопок "ОК и "Отмена" компьютром не выполняются. Придётся делать проверку героя на принадлежность к ИИ, и если он ИИ, то сразу направлять его к функции кнопки "ОК".

Добавлено через 10 минут
Или особой функции для ИИ
Я аппелирую к тому, что написал Ment , по поводу того, что можно вообще боту ничего не давать. А если не давать, то в целом и неважно, что он сообщение проигнорирует, ведь всё равно нас не интересуют его действия. 
Конечно, если обрабатывать касание бота, то там нужны проверки, это безусловно. 
__________________




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       
Jewily вне форума
Ответить с цитированием
#11
Старый 23.03.2022, 14:55
  #11
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 106
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 106
Jewily#4267
По умолчанию
Re: [ОБСУЖДЕНИЕ] Подпираем AI костылями

В итоге, всем, кто отписался спасибо. 
Выкатываю "финальную" систему поощрения бота за его храбость и героизм. Кто заинтересован - тыкните в глупость. Если не тыкнет никто, буду делать так.
1)Ограничиваю число героев для бота до 4. Если больше - он начинает усиленно проводить разбиение своей армии в интегральную сумму и получается битье дурачков.
А четверо ему хватает чтобы устраивать "паровозы", кошмарить всевозможные направления.
2)Каждую неделю бот будет получать восьмую часть от скопленного за неделю игроком опыта. Если их несколько, то максимальное число из всех. Так, получится, что бот даже если и будет почему-то слаб мясом(чего не будет), то статов у него будет достаточно. Так получится, что бот - всегда серьёзный.
3)Дабы не унижать того, кто в игре 3 игрока против 1 бота побежит выносить компьютер, все интерактивные скриптовые занятия будут по прежнему доступны, чтобы так скажем реабилитировать игрока после сражения, дать стимул вообще первым нападать.
4)Все важные объекты будут получать приоритет по вступлению бота в регион, то есть если он оказывается недалеко от нужного места, то обязательно захочет в него зайти.
5)Когда карта будет выложена, в теме будет красным шрифтом выделен тезис : Играйте с кем угодно, только не с компами - так намного интереснее. Не сценарий же, в конце-концов.
__________________




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       
Jewily вне форума
Ответить с цитированием
Ответ


Опции темы



Часовой пояс GMT +4, время: 12:52.


vBulletin v3.5.0, Copyright ©2000-2022, Jelsoft Enterprises Ltd. (Русский)

Яндекс цитирование    Top.Mail.Ru