Comments 50
Эта статья может быть интересна… интересующимся тематикой AI
А где тут AI? Кучка if'ов?
Цитаты из вашей же ссылки:
Бот использует нечёткую логику, нейронные сети и машины конечных состояний для того чтобы «думать».
достаточно сложный бот будет неотличим от игрока, если он способен достигать целей, для которых не был запрограммирован.
Для менее сложных ботов, таким является любое событие, на которое они не запрограммированы реагировать.
Описанный вами бот способен делать только то, на что он запрограммирован, реагирует только на события, на которые он запрограммирован, причем только так, как он запрограммирован.
Описанный вами бот способен делать только то, на что он запрограммирован
Именно так — грубо говоря «использует машины конечных состояний». Боты для компьютерных игр в основном так и пишутся.
Буду даже рад (и не только я), если поделитесь ссылкой на такое событие.
Использовать наработки с прошлых чемпионатов: это всякие утилитные классы вроде точки, вектора, отрезка, всякие самописные математические функции.
Справедливости ради стоит заметить, что в большинстве игр тоже кучка if-ов. Исходники не посмотреть, но готов поставить, что редко где встретится даже минимакс или автоматы.
Мда уж, такое количество идей, стратегий, кода и времени — титанический труд.
Я то думал мои 20 классов: самописные корутины, драйвера, динамический ПП(от 16х16 до 512х512) + А* для поиска путей воизбежании коллизий + часов 30 времени — это слишком много. В очередной раз убеждаюсь, что нужно брать отпуск с 7 ноября и плотно подсаживать себя на РАИК
Причем если допустим имеется 2 танка с процентом прочности 0.5 оба, то симулятор боя просто суммирует все HP и считает что это 1 целый танк.
А почему так? Ведь это же 1 единица прочности, но 2 единицы урона!
Причем если в группе соперника имеется несколько типов юнитов, то стреляет по каждому типу по очереди.
Интересно, а как выбирается очередность?
Например, в реальном боевом налете, реальной авиацией, я имею ввиду — приоритетной задачей всегда является уничтожение ПВО противника, а уже потом — собственно нанесение ущерба противника. Т.е. ПВО давят не считаясь с потерями, и только когда оно подавлено — приступают к штурмовке. А здесь как?
А почему так? Ведь это же 1 единица прочности, но 2 единицы урона!
Совершенно верно! Когда пытался учесть не только суммарное hp, но и колличество юнитов — внезапно начал выходить за лимит времени. Поэтому бросил эту затею. Похоже текущая боевая система оказалась хорошим компромиссом между быстродействием и точностью, и позволила выделить больше времени на другие вещи.
Интересно, а как выбирается очередность?
В финальной версии есть стратегия управление истребителями c высоким приоритетом, и одно из её заданий — это погоня за вражескими вертолетами, которые в данном конкурсе пресдтавляли наибольшую опасность.
Бот на с++?
Напомнило
if (goingToCrash) {
dont();
}
Не проморгать начало, лучше начать сразу с беты.
Что верно то верно. Получил письмо за 5 дней до первого раунда, посмотрел условия, пару игр соревнующихся в песочнице, да закрыл.
Помню как ходил около часа по квартире кругами, и перебирал в голове разные способы организации кода.прямо за душу взяло. Я хоть и не тратил на соревнования отпуск, но тоже помучился с организацией кода. Еще в магах придумал использовать понятие «миссии» — сходить за руной, похилиться, дефать базу, атаковать. Правда топ был далек, но все равно интересно время провел :)
Откуда столько интересных решений по ИИ?) Читаешь книги какие?) Можешь посоветовать, как к теме игрового ИИ подбираться на примере текущего AI Cup?)
Ещё конечно было-бы интересно узнать, использовал ли кто-то подходы вроде Reinforcement Learning (машинное обучение в целом) в этом чемпионате)
И позвольте вопрос: если я правильно понял, Альфа-бета не использовался. Почему? Это классический подход ИИ для антагонистических игр.
Минимакс, который используется в пошаговых играх, где соперники делают ход поочередно. Данная задача не относится к такому типу игр.См. Википедию:
Критерий минимакса первоначально был сформулирован в теории игр для игры двух лиц с нулевой суммой в случаях последовательных и одновременных ходов, впоследствии получил развитие в более сложных играх и при принятии решений в условиях неопределённости.
Минимакс в данном случае достаточно сложно применить в виду большой ветвистости. Другими словами слишком много вариантов действий (атаковать, отступать, куда атаковать, куда отступать, кидать ли бомбу, объединять ли в отряд). Т.е. как минимум нужны эвристики или другие способы уменьшить ветвистость. Но глубина просчета всеравно наврятли будет достаточно большой. Возможно в данном раскладе тут мог подойти MCTS лучше.
Тем не менее, в игровом ИИ достачно большое разнообразие подходов, которые имеют свои плюсы и минусы в разных задачах (в т.ч. не стоит забывать про сложность имплементации, т.к. время ограниченно и участие идивидуальное). Данный конкурс показал, что в текущих условиях разработки и игрового мира подход автора статьи оказался наиболее оптимальным из всех, которые опробовали другие участники.
Минимакс в данном случае достаточно сложно применить в виду большой ветвистости.А в шахматах не сложно? Понятно, что нужно отсекать ветви.
Тем не менее, в игровом ИИ достачно большое разнообразие подходов, которые имеют свои плюсы и минусы в разных задачах (в т.ч. не стоит забывать про сложность имплементации, т.к. время ограниченно и участие идивидуальное). Данный конкурс показал, что в текущих условиях разработки и игрового мира подход автора статьи оказался наиболее оптимальным из всех, которые опробовали другие участники.Какое отношение ИИ к сложности имплементации? Никто не спорит, что автор статьи отлично справился с заданием. А вот что касается организаторов, то ИМХО можно было сделать функции более высокого уровня, чтобы участники занимались ИИ, а не организацией элементарных действий юнитов.
несложно просчитать достаточно глубокоВ шахматах «достаточно» зависит от силы противника (человека или программы). Гарантированно достаточно удается посчитать в крестиках и ноликах 3х3 — там у программы невозможно выиграть. А в Го, нпр., я играю настолько плохо, что простые программы из «интернетов» меня легко обыгрывают.
В этом году был такой необычный способ управления (нет возможности микроконтроля) что я надеялся кто-нибудь попробует бота на нейронке сделать.
Было бы очень любопытно посмотреть на что он способен был бы и смог ли бы тягаться с такой серьезной ручной реализацией.
можно ли было бы сделать что-то похожее на бота TouchAI с применением машинного обученияИ обучения нет… Где же ИИ? Отсутсвие ИИ заслуг победителя не умаляет, а вот устроители ИМХО быстрого и удобного выхода на AI не обеспечили. Жаль :(
ИИ перед вами (имхо). Довольно часто в этом соревновании возникают дискуссии по поводу того, что если в решениях нет машинного обучения или нейронок "хотя бы", то это не ИИ. "Что считать ИИ?" — тема достаточно философская. Мое личное мнение, что, в контексте данных соревнований, искуственным интелектом можно назвать программу, которая выполняет задачи, которые традиционно считаются прерогативой человека (играет в игру), не привязываясь к внутреннему устройству.
А уж победит тот бот, который лучше подстроился под условия игрового мира и критерии оценки.
А уж победит тот бот, который лучше подстроился под условия игрового мира и критерии оценки.А м.б. в первую очередь под условия недостатка времени? М.б. было бы больше времени при иной задаче — не возникало бы вопроса «где ИИ»?
Представленный ИИ тоже делает различные переборы и моделирование. Разница только в количестве того что автоматически подбирается а что было подобрано вручную программистом.
Конечно это очень специализированное решение и из него турдно что-то взять для написания ИИ для другой игры. Но это не повод принижать ценность или интересность данного решения. Для такой игры вообще очень трудно придумать что-то универсальное, перебор и моделирование не работают при таких масштабах и количестве рандома.
Но это не повод принижать ценность или интересность данного решенияНикто не принижает. Никто не говорит, что ИИ лучше. Важно решить задачу, а будет это ИИ-решение или нет не столь важно. Поэтому вопрос в классификации. Нет смысла валить все в одну кучу и все сложные задачи называть ИИ.
Он должен генерировать притягивающее потенциальное поле. Волнующие вопросы:
1) Как подбирать значения эмиттера? Ставить какие-нибудь 10000, чтоб затухая на 1 по клетке волна гарантировано дошла до края карты? Возможно, просто что-то не так понимаю.
2) Надо держать сразу несколько потенциальных полей и обновлять их все параллельно? Для одних юнитов может строиться по одному закону, для других (дальнобойных, союзных, лечащих, ...) по-другому.
Заранее огромное спасибо, тема очень интересная.
2) Да, под каждый тип юнитов может быть свое множество потенциальных полей которые суммируются.
История победы на ежегодном соревновании Russian AI Cup 2017