Запускаем Mini AI Cup #3. Битва машин в тесных закрытых пространствах
С 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»