Запускаем Mini AI Cup #3. Битва машин в тесных закрытых пространствах

f02992b87f5734d4189f61acd641bdc7.png

С 2012 года проводим ежегодное соревнование по программированию искусственного интеллекта Russian AI Cup. В этом году оно начнётся немного позже — не в ноябре, а в середине декабря. А для тех, кто хочет подготовиться или оценить свой уровень, регулярно проводим мини-соревнования Mini AI Cups. Задачи немного проще предлагаемых на RAIC, но ничуть не менее захватывающие.

И сегодня открываем регистрацию на Mini AI Cup #3 по мотивам Drive AHEAD.

Коротко о предыдущем Mini AI Cup


4af1c0dbbe2738568edfff93a4712ea9.png

Прошлый Mini AI Cup был реализован как аналог полюбившейся многим игры Agar.io, адаптированный под запуск автономных ботов, сражающихся за возможность выжить. Получилось довольно масштабно — зарегистрировалось более 1200 новых участников, а количество активных игроков превысило 300 человек. Пока боты в буквальном смысле жрали друг друга, участники и зрители съедали ведра попкорна. То, как бот пытается уворачиваться, хитрить, нападать из самых выгодных позиций, как он опасается за свою жизнь и прячется от противников, невольно вызывает опасение за свою жизнь через десятки лет.

В конце статьи вы найдёте пять полезных ссылок на разборы стратегий от участников.

Отдельно благодарим всех за обратную связь, а также наших контрибьюторам за помощь в доработке технических моментов. Ценим наше сообщество и с каждым разом стараемся делать чемпионаты интереснее.

Игровые правила нового чемпионата


Идейным вдохновителем соревнования в этот раз стала игрушка под названием Drive Ahead — зубодробительная мобильная аркада про битву на машинках в тесных закрытых пространствах. Механика боёв в этой игре показалась нам интересной и нетривиальной, и решили попытаться повторить её для нашего чемпионата.

af5eea59124ddad216688410d30a6e45.png

Вот так выглядит одна из карт игрового поля. Игроку предлагается написать стратегию для ИИ, который будет управлять автомобилем и пытаться вывести из строя автомобиль соперника нажатием специальной кнопки на его корпусе. Звучит просто? Удачи в сражении с Бешеной Буханкой!

3bd028ee43b61f622c7de8f95038669e.jpg

Всего доступно три машинки: Буханка, ВАЗ 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 6, C++11, Python 2.7/3.6, php7, Kotlin, Haskell, C++17, 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 и группа ВКонтакте.

Полезная информация


  1. Алексей Дичковский (@DragoonXen) — «Mini ai cup 2 или почти AgarIO — что можно было сделать для победы»
  2. Александр Гусев (@Geotyper) — «Создание бота для участия в AI mini cup 2018 на основе рекуррентной нейронной сети»,»(часть 2)»,»(часть 3)»
  3. Александр Гусев (@Geotyper) — «Создание бота для участия в AI mini cup. Опыт применения GPU»

© Habrahabr.ru