Как стать автором
Обновить

Разработка хитрого ИИ в тактической игре на основе эвристик и мутаций

Время на прочтение 17 мин
Количество просмотров 16K
Всего голосов 26: ↑26 и ↓0 +26
Комментарии 17

Комментарии 17

Классная статья.


Почему вы противопоставляете "компьютерный стиль" и "мгновенный ход"?


Для уменьшения «компьютерного стиля» у противника были применены некоторые хитрости:
Игрок после своего хода не ждёт, пока ИИ подумает над своим ходом. Враг «сразу» начинает делать свои передвижения (в действительности это иллюзия).

На мой взгляд, отличие компьютера как раз в том, что он способен выбрать стратегию за долю секунды. Время на подумать — отличительный признак человека.

Благодарю.
Потому что мой ПК затрачивает 4 секунды в серднем, чтобы сделать осмысленный ход одним юнитом (на каждого следующего еще по 4 секунды). Это просто незаметно.
За долю секунды средний/слабый компьютер не успеет сделать удовлетворительное число расчетов. Это компенсируют еще и другие подходы типа предварительных вычислений (и здесь они тоже есть в виде кэширования в таблицах типовых расчетов).
НЛО прилетело и опубликовало эту надпись здесь
Ну у меня не было основной цели создавать однозначно побеждающего бота.
Хотя этот минус безусловно есть и его по хорошему нужно исправлять.
Кстати, на 3-ем уровне с преимуществом у бота удаётся Вашей стратегией его победить? (это возможно, я его загоняю в узкие коридоры, где он реже находит хорошие решения)
НЛО прилетело и опубликовало эту надпись здесь
Это уже бесконечный рандомный режим. Это вместо награды.
НЛО прилетело и опубликовало эту надпись здесь
Я еще пробовал отображать хитпоинты полосками или палочками (как в Fire Emblem), но по факту это делало анализ игрового поля сложнее для меня (может я просто не так это внедрял).
НЛО прилетело и опубликовало эту надпись здесь
Вот теперь в нормальной игре я обязательно учту необходимость пиктограмм. Изначально я вообще не планировал делать нормальный интерфейс и обойтись без сюжета. Но когда затраченные часы перевалили за 100, то решил их добавить.
НЛО прилетело и опубликовало эту надпись здесь
Интересная статейка, спасибо!
По мне так бот слишком захардкоден, что вы сами признаете и вы его побеждаете зная эти моменты. Причина тоже понятна, но ведь есть тонна методов для оптимизации и боту не придется брутфорсить стратегии. Взять тот же Greedy search или Монте-Карло, можно сделать преобучение, которое таки займет некоторое время, а уже непосредственно при игре с мясом немного подруливать веса.
Для меня с преобучением проблема заключалась в том, что комбинации игрового поля и состава команд каждый раз разные. Не смог справиться с этими сложностями.
Я победил всухую («сковывай и побеждай»), правда перед этим 2 раза перезапустил пока осваивался (плохо оценивал разбег юнитов, «незаметно» для себя вставал в линию, лупил по своим из-за уравления).
Что я заметил: первый ход действительно важен и ИИ далеко не всегда здесь успешен.
Оценка «фигур»: тк я запер ИИ в узком проходе с пространством для маневра для себя сзади. ИИ разумно поставил туда сначала Файтера, после того как он огреб, выставил мага (без преимущества групповой атаки, хотя мог Файтера), который понятно сразу умер.
Комбинации: у ИИ они больше опосредованные, хотя можно заранее пытаться двигать юниты так, чтобы атаковой лесенкой лучниками и магом, а затем добивать Файтером для замыкания (если позволяет диспозиция).
Если хочется более сложного противника, то можно попробовать на максимально пустом поле (обновить карту с помощью reset). В открытых пространствах ИИ действует лучше.
Что то у вас комп прямо таки очень долго ходит, возможно это проблема того что джаваскрипт работает медленно, но для поля такой малой размерности как-то все равно очень долго. Я вижу что в статье вы занимаетесь оптимизациями, но непонятно, что же все таки потребляет столько времени…
upd: поиграл немного, первым бросается в глаза то, что ИИ совершенно не бережет своих магов и лучников, и хотя я считаю что лучники достаточно слабый юнит, но когда ИИ сливает магов, это по сути поражение для него.
Кроме того, ИИ очень часто встает в линию, позволяя моему магу ударить по нескольким юнитам.
Ну вообще-то у вас на компьютере ИИ ходит ровно столько же времени — он тратит всё доступное время на расчеты: по 4 секунды на каждого юнита. Просто это происходит в воркерах, поэтому браузер не лагает.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории