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

Сообщения от Подпираем AI костылями

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

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

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

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

Добавлено через 10 минут
Если же, приоритеты не вариант, то всегда можно написать функцию на банальную выдачу n количества армии герою максимального уровня.
В ответ пользователю Долгий
Аватар пользователя
4 года назад
Долгий

Если вы имеете ввиду новые строения (жилища,сокровищницы и т. д.), то ИИ можно задать приоритет посещения данных построек с помощью функций SetAIHeroAttractor и SetAIPlayerAttractor. Например если это сокровищница, по логике должен быть чек посетившего героя на принадлежность к игроку или ИИ. Если игрок - человек, то выдаётся QuestionBoxForPlayers с предложением пройти бой и т.д. Если игрок - ИИ, то банальная выдача награды и опыта без всплывающих окон и боя. Допустим, опытный игрок человек может взять эту сокровищницу на 20й день.И если цель - сильный ИИ, то можно задать приоритет на посещение данной сокровищницы на 20+ день героем максимального уровня функцией SetAIHeroAttractor, где он придёт, и сделает имитацию зачистки(а по факту получит награду на халяву).
Ваша мысль интересная, в плане приоритетов в нужный момент. Другой вопрос стоит в том, как же определить эти преславутые 20 дней? Технически я знаю достаточно способов, как обрабатывать ИИ, и его интеракты(Как я писал выше, у меня на тестовых объектах работает система, вполне сносная). Конечно, можно путём тестов - но тогда большинство людей, которые подвергнутся тяжкому испытанию играть в первую версию карты будут испытывать боль в разных местах.
Вопрос: бот как-то реагирует на QuestionBoxForPlayers,если он был ему отправлен?Или там эксепшн при вызове на бота?. Если игра сама ему жмёт "Ok", то это было бы неплохим подспорьем. Должен же быть путь разрешения этой проблемы, не встанет же бот из-за сообщения.
Аватар пользователя
4 года назад
Автор
Поэтому прошу всех, кому в общем-то не лень, подарить мне свой игровой опыт(Или чисто аналитические рассуждения) на тему того, как можно заменять, или усилять бота на карте с множеством скриптов,
не влияя на бота напрямую,(то есть не задавая ему приоритетов и тому подобного, как это делают авторы Одиночных сценариев, коим моя карта не является).
Мне казалось относительно неплохой тактикой выдавать героям ИИ повышенный опыт со старта (и чуть-чуть войск дополнительных ещё можно). Хотя сам я играю мало, не тестировал особо, но по идее должно повысить скорость развития и агрессивность.
Ещё неплохо использовать MakeHeroReturnToTavernAfterDeath, или как-то так функция называлась. Чтобы после потери главного героя бот не становился грушей для битья, а оставался какой-никакой угрозой. Хотя эта функция и раздражает чутка, если несколько раз такой возврат происходит )
Автор
За цену в 50 ед.ресурса получить 5000 опыта или 10000 золота? -> Считается средний уровень всех героев на карте, если бот отстает - берется опыт, если бот не остаёт, и не имеет лидирующего числа золота - берётся золото.
Это всё мне кажется, не в ту сторону, так как явное переусложнение. Проще сделать триггер нового дня и потихоньку боту доначислять -- тот же опыт, если он нужен. А золото ему, как понимаю, и вовсе бесполезно -- бот в пятых героях читер и скупает юнитов/строит здания условно-бесплатно.
То есть я о том, что для противника-человека нет никакой разницы, по-настоящему бот на квестах качается, или у него просто есть фора.
В ответ пользователю Jewily
Аватар пользователя
4 года назад
Jewill
Конечно, можно путём тестов - но тогда большинство людей, которые подвергнутся тяжкому испытанию играть в первую версию карты будут испытывать боль в разных местах.

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

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

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

Только что проверил работу QuestionBoxForPlayers. Походу она просто игнорируется ИИ игроком. И функции ответы, активирующиеся по нажатию кнопок "ОК" или "Отмена", просто не выполняются.
Аватар пользователя
4 года назад
QuestionBoxForPlayers выдаётся конкретному игроку (отсюда и название)... И если выдается игроку 1-человеку, то никому другому не прилетит
В ответ пользователю }{0TT@6bI4
Аватар пользователя
4 года назад
}{0TT@6bI4
QuestionBoxForPlayers выдаётся конкретному игроку (отсюда и название)... И если выдается игроку 1-человеку, то никому другому не прилетит
Я именно проверил выдачу QuestionBox'а компьютерному игроку. Результат - полное игнорирование функции.
В ответ пользователю Долгий
Аватар пользователя
4 года назад
Долгий

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

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

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

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

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

Добавлено через 10 минут
Или особой функции для ИИ
В ответ пользователю Долгий
Аватар пользователя
4 года назад
Долгий

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

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

Статистика

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