С 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 и группа ВКонтакте.

Полезные статьи — разборы с прошлого чемпионата:


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

Комментарии (20)


  1. Grinrill
    27.08.2018 19:16
    +2

    Немного не понятно про пользовательские/рейтинговые игры: как тестить фичи для рейтинга, если их не будет в пользовательских играх?
    Имеет ли смысл тогда пилить старты для пользовательских игр?


    1. sannikovdmitry Автор
      27.08.2018 19:19
      +1

      Мы будем постепенно включать рейтинговые фичи в пользовательские игры на основании сложности и интересов сообщества. Будем стараться проверить все гипотезы и запустить новые фичи в бете, поэтому имеет смысл.


  1. PokerMagnat
    27.08.2018 20:56
    +1

    Есть ли видео с прошлого чемпионата?


    1. sannikovdmitry Автор
      27.08.2018 20:57

      Чемпионат проводится онлайн. Есть видеообзоры от участников (ссылки выше), а также игры, показанные в нашем визуализаторе. Вот прошлые aicups.ru/round/3/#ranked-games


  1. extensionsapp
    28.08.2018 00:31

    На сколько интересная в плане ИИ была в прошлом году игра, и на сколько «убогая» в этом. Что вообще подтолкнуло выбрать эту игру?


    1. bsniam
      28.08.2018 11:39

      А вот пока не понятно насколько «взлетит». Если Агарик можно было на чистых ПП написать, то здесь понадобится полный расчет физики и анализ последствий каждого действия. Может и зрелищно получится.
      + есть ощущение, что здесь можно пошалить и нейронщикам.


    1. sannikovdmitry Автор
      28.08.2018 11:40

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


  1. UA3MQJ
    28.08.2018 12:37
    +3

    Я не буду участвовать. Подобрался коллектив таких монстров, что не протолкнуться. Некоторые отпуска берут.


    1. sannikovdmitry Автор
      28.08.2018 12:41

      Зря вы так, недооцениваете себя :( Должно быть всем интересно.


      1. Eugene713
        28.08.2018 13:04

        Согласен с UA3MQJ насчет коллектива монстров)

        На самом деле порог вхождения в такие чемпионаты достаточно высок, и велик фактор подготовки к ним. Если уже заготовлены либы, которые делают определенные вещи (работа с векторами, углами, примитивами геометрии + работа с картой, миром) то задача упрощается.

        А вот с первого раза там надо написать это все, да еще и саму задачу решить)

        Возможно неплохо было бы при скоринге иметь «лиги», например, по объему кода. Например, 1Кб, 3Кб, 10Кб, 10Кб+

        Так конечно порождается несправедливость — 1Кб на Си и на питоне это совсем разное. С другой стороны ограничение на CPU и память сейчас тот же питон придавливают значительно


        1. anprs
          28.08.2018 14:33

          sannikovdmitry, а доступна ли прошлогодняя инфраструктура для тренировки/написания бота Agar.io?


          1. sannikovdmitry Автор
            28.08.2018 14:40

            Да, но во время основных раундов песочницы прошлых чемпионатов будут временно отключены.


        1. MikailBag
          28.08.2018 15:53

          По-моему наоборот, сишный код можно скомпилировать у себя и заслать бинарник.


    1. dlatikov
      28.08.2018 16:15

      Эти монстры были и год назад и два. Что изменилось в этот раз?)


      1. sannikovdmitry Автор
        28.08.2018 18:17

        Выросло монстров еще больше!)


      1. UA3MQJ
        28.08.2018 18:58

        В этот раз я знаю об их существовании. Тогда не знал. В позапрошлом соревновании хотя бы футболку заработал, хоть и косвенно. В этом ничего. Ну и вижу, что участвуя в соревновании я проседаю по работе, по дому, в замен не вырастаю, как разработчик (хотя, наверное, мог бы). Получается, что участие для меня не эффективно и фана не приносит, поэтому и отказываюсь от участия.
        В принципе, было соревнование по хайлоаду. Вот там было интересно применить используемый в работе Erlang. Или там, где зеленые процессы могли бы развернуться. Тут же, как я понял, симуляция физики. Рулит компиляция в натив — си и компания, Erlang очень не подходит.


        1. sannikovdmitry Автор
          28.08.2018 20:50

          Разные соревнования — разные подходы. Чтобы стать монстром, нужна практика


  1. perlexed
    28.08.2018 20:42

    А почему на сайте aicups.ru всё еще информация о прошлом конкурсе?


    1. sannikovdmitry Автор
      28.08.2018 20:46

      Уже завтра будет сайт обновлен :)


  1. Speakus
    29.08.2018 20:04

    В предложении

    Пока боты в буквальном смысле жрали друг друга, участники и зрители съедали ведра попкорна.
    Не хватает ссылки на видео какого-либо интересного боя.