С 2012 года проводим ежегодное соревнование по программированию искусственного интеллекта Russian AI Cup. В этом году оно начнётся немного позже — не в ноябре, а в середине декабря. А для тех, кто хочет подготовиться или оценить свой уровень, регулярно проводим мини-соревнования Mini AI Cups. Задачи немного проще предлагаемых на RAIC, но ничуть не менее захватывающие.
И сегодня открываем регистрацию на Mini AI Cup #3 по мотивам Drive AHEAD.
Коротко о предыдущем Mini AI Cup
Прошлый Mini AI Cup был реализован как аналог полюбившейся многим игры Agar.io, адаптированный под запуск автономных ботов, сражающихся за возможность выжить. Получилось довольно масштабно — зарегистрировалось более 1200 новых участников, а количество активных игроков превысило 300 человек. Пока боты в буквальном смысле жрали друг друга, участники и зрители съедали ведра попкорна. То, как бот пытается уворачиваться, хитрить, нападать из самых выгодных позиций, как он опасается за свою жизнь и прячется от противников, невольно вызывает опасение за свою жизнь через десятки лет.
В конце статьи вы найдёте пять полезных ссылок на разборы стратегий от участников.
Отдельно благодарим всех за обратную связь, а также наших контрибьюторов за помощь в доработке технических моментов. Ценим наше сообщество и с каждым разом стараемся делать чемпионаты интереснее.
Игровые правила нового чемпионата
Идейным вдохновителем соревнования в этот раз стала игрушка под названием Drive Ahead — зубодробительная мобильная аркада про битву на машинках в тесных закрытых пространствах. Механика боёв в этой игре показалась интересной и нетривиальной, и решили попытаться повторить её для чемпионата.
Вот так выглядит одна из карт игрового поля. Игроку предлагается написать стратегию для ИИ, который будет управлять автомобилем и пытаться вывести из строя автомобиль соперника нажатием специальной кнопки на его корпусе. Звучит просто? Удачи в сражении с Бешеной Буханкой!
Всего доступно три машинки: Буханка, ВАЗ 2108 и еще одна секретная машина, которую вы увидите в бета-тесте с разными скинами.
У машины есть множество параметров, которые можно поменять. Например: привод, максимальная скорость, вес, параметры колес (вес, размер, положение), параметры пружин подвески. На данный момент доступно 6 различных карт.
Игры идут до 5 смертей, тот, кто выжил — победитель. Возможны ничьи. Было поставлено ограничение сверху на одну игровую сессию. Если в течение 600 тиков (тик — единица времени в игровом мире) победитель так и не будет выявлен, то на карте начнет расти количество мусора. До чьей кнопки мусор доберется первым, тот и проиграет.
Физический движок
Чтобы минимизировать риски при разработке основных механик игры, решили взять за основу физический движок Chipmunk. Это популярный кроссплатформенный движок с открытым исходным кодом, написанный на C, он используется во множестве мобильных игрушек, и на нём построены другие движки, такие как Cocos2D, Apportable и Marmalade.
Chipmunk позволяет биндиться к другим языкам программирования. Полный список представлен на официальном сайте. Мы обкатали движок вдоль и поперек, нам он показался довольно приятным.
Механика
Механика написана на Python 3.4 с использование движка Pymunk и визуализатора Pyglet. В момент запуска чемпионата localrunner (локальный симулятор) будет сразу доступен в репозитории Github, но надо будет поставить для него все зависимости и сам Python. Localrunner загружается полностью из консоли, поддерживает запись игр, вывод отладочной информации и игру с помощью клавиатуры.
Для вас создан API, в соответствии с которым стратегия игрока, написанная на любимом языке, в цикле читает (из STDIN) изменения в состоянии мира и отправляет (в STDOUT) свои действия. Таким образом пользователь взаимодействует с игрой.
В ходе соревнования участники могут создавать игровые сессии двух типов: рейтинговые (игра на очки, от которых зависит список финалистов) и нерейтинговые (игра «просто так», чтобы попробовать свою стратегию в действии).
Управление машинами будет простым только на первом этапе: влево, вправо и отключить двигатель. В рейтинговых и финальных играх для увеличения количества стратегий будут добавлены новые возможности.
Технические особенности
Поддерживаем работу с Go 1.10, Java 1.8, C# Mono 4.3, NodeJS 9, C++11, C++17, Python 2.7/3.5, php7, Kotlin, Haskell, Scala, Rust и Elixir.
Мы постарались сделать добавление новых языков максимально простым — нам понадобится лишь Docker-файл по определенному шаблону. Если вы захотите, чтобы ваш любимый язык появился в списке поддерживаемых, просто сделайте pull request, а мы его протестируем.
На сегодняшний день максимальный объем исходного кода для одной стратегии — 20 мегабайт в архивированном виде. Помимо этого, у нас стоит еще одно ограничение на количество отправляемых решений в сутки — 20 штук.
Полные правила чемпионата будут выложены в этом репозитории в момент запуска соревнования.
Расписание
30 августа — начинается бета-тестирование соревнования, игроки пишут первые решения, чтобы освоиться и быть готовыми к рейтинговым играм;
6 сентября — открываются рейтинговые игры;
20 сентября — останавливаются рейтинговые игры, N участников с лучшими решениями проходят в финал и получают небольшую передышку на доработку своих решений (как раз в выходные);
24 сентября — финальные матчи между решениями топовых игроков.
Призы
Первое место — новенький MacBook Air;
Второе и третье место — Apple iPad;
Четвертое, пятое, шестое места — Samsung Gear S3.
Мы считаем, что участник имеет право попросить взамен другой подарок эквивалентной стоимости. Если у вас есть идеи, как проапгрейдить список призов, оставьте их в комментах под статьей, будем признательны.
Кроме того, наше такси Ситимобил сделает комплимент ТОП10 участникам соревнования на скидку в 250 рублей * 20 поездок / месяц.
Все игроки, прошедшие в финал, получат фирменные футболки нашего чемпионата.
Поехали?
Регистрация открыта: aicups.ru. Для тех, кто хочет стать частью нашего дружного сообщества, у нас есть чат в Telegram — @aicups, официальный информационный канал чемпионатов — @mrgchamps и группа ВКонтакте.
Полезные статьи — разборы с прошлого чемпионата:
- Алексей Дичковский (@DragoonXen) — «Mini ai cup 2 или почти AgarIO — что можно было сделать для победы»
- Александр Гусев (@Geotyper) — «Создание бота для участия в AI mini cup 2018 на основе рекуррентной нейронной сети», « (часть 2)», « (часть 3)»
- Александр Гусев (@Geotyper) — «Создание бота для участия в AI mini cup. Опыт применения GPU»
Комментарии (20)
PokerMagnat
27.08.2018 20:56+1Есть ли видео с прошлого чемпионата?
sannikovdmitry Автор
27.08.2018 20:57Чемпионат проводится онлайн. Есть видеообзоры от участников (ссылки выше), а также игры, показанные в нашем визуализаторе. Вот прошлые aicups.ru/round/3/#ranked-games
extensionsapp
28.08.2018 00:31На сколько интересная в плане ИИ была в прошлом году игра, и на сколько «убогая» в этом. Что вообще подтолкнуло выбрать эту игру?
bsniam
28.08.2018 11:39А вот пока не понятно насколько «взлетит». Если Агарик можно было на чистых ПП написать, то здесь понадобится полный расчет физики и анализ последствий каждого действия. Может и зрелищно получится.
+ есть ощущение, что здесь можно пошалить и нейронщикам.
sannikovdmitry Автор
28.08.2018 11:40Не согласен с Вами. Нам драйв понравился + порог вхождения в бете ниже, что и нужно для новичков и любителей.
Игруха масштабируется новыми фичами, таким образом увеличивается и сложность.
UA3MQJ
28.08.2018 12:37+3Я не буду участвовать. Подобрался коллектив таких монстров, что не протолкнуться. Некоторые отпуска берут.
sannikovdmitry Автор
28.08.2018 12:41Зря вы так, недооцениваете себя :( Должно быть всем интересно.
Eugene713
28.08.2018 13:04Согласен с UA3MQJ насчет коллектива монстров)
На самом деле порог вхождения в такие чемпионаты достаточно высок, и велик фактор подготовки к ним. Если уже заготовлены либы, которые делают определенные вещи (работа с векторами, углами, примитивами геометрии + работа с картой, миром) то задача упрощается.
А вот с первого раза там надо написать это все, да еще и саму задачу решить)
Возможно неплохо было бы при скоринге иметь «лиги», например, по объему кода. Например, 1Кб, 3Кб, 10Кб, 10Кб+
Так конечно порождается несправедливость — 1Кб на Си и на питоне это совсем разное. С другой стороны ограничение на CPU и память сейчас тот же питон придавливают значительноanprs
28.08.2018 14:33sannikovdmitry, а доступна ли прошлогодняя инфраструктура для тренировки/написания бота Agar.io?
sannikovdmitry Автор
28.08.2018 14:40Да, но во время основных раундов песочницы прошлых чемпионатов будут временно отключены.
MikailBag
28.08.2018 15:53По-моему наоборот, сишный код можно скомпилировать у себя и заслать бинарник.
dlatikov
28.08.2018 16:15Эти монстры были и год назад и два. Что изменилось в этот раз?)
UA3MQJ
28.08.2018 18:58В этот раз я знаю об их существовании. Тогда не знал. В позапрошлом соревновании хотя бы футболку заработал, хоть и косвенно. В этом ничего. Ну и вижу, что участвуя в соревновании я проседаю по работе, по дому, в замен не вырастаю, как разработчик (хотя, наверное, мог бы). Получается, что участие для меня не эффективно и фана не приносит, поэтому и отказываюсь от участия.
В принципе, было соревнование по хайлоаду. Вот там было интересно применить используемый в работе Erlang. Или там, где зеленые процессы могли бы развернуться. Тут же, как я понял, симуляция физики. Рулит компиляция в натив — си и компания, Erlang очень не подходит.sannikovdmitry Автор
28.08.2018 20:50Разные соревнования — разные подходы. Чтобы стать монстром, нужна практика
Speakus
29.08.2018 20:04В предложении
Пока боты в буквальном смысле жрали друг друга, участники и зрители съедали ведра попкорна.
Не хватает ссылки на видео какого-либо интересного боя.
Grinrill
Немного не понятно про пользовательские/рейтинговые игры: как тестить фичи для рейтинга, если их не будет в пользовательских играх?
Имеет ли смысл тогда пилить старты для пользовательских игр?
sannikovdmitry Автор
Мы будем постепенно включать рейтинговые фичи в пользовательские игры на основании сложности и интересов сообщества. Будем стараться проверить все гипотезы и запустить новые фичи в бете, поэтому имеет смысл.