Уже несколько лет подряд мы проводим Russian AI Cup — нехилый такой конкурс для всех неравнодушных к программированию в целом, к построению ИИ, просто к написанию ботов для игр или автоматизации чего бы то ни было. Естественно, и этот год не будет исключением. Итак, Mail.Ru Group в сотрудничестве с Саратовским государственным университетом официально объявляют о дате старта Russian AI Cup 2017 и счастливы предложить задачу этого года. Жёсткие битвы, макбуки за первые места и минус полтора месяца из жизни разработчика — всё на месте, всё как вы любите. Добро пожаловать под кат за подробностями!


Суть чемпионата


Очень проста. Мы создаём для вас игровой мир, действующий по определённым правилам, и даём вам API. Вы же пишете на любимом языке стратегию поведения своих юнитов в этом игровом мире. В результате две стратегии разных участников запускаются в один мир и бьются друг с другом. Кто выиграл — молодец, кто нет — улучшает стратегию и ждёт реванша.


Расписание чемпионата


  1. Песочница: 7 ноября — 25 декабря
  2. Первый раунд: 25—26 ноября
  3. Второй раунд: 9—10 декабря
  4. Финал: 16—17 декабря

Чемпионат открывается тестовой неделей. В это время возможны серьёзные изменения баланса, а команда оперативно работает с пожеланиями участников и найденными ошибками. В рамках четвёртой недели чемпионата (перед финалом) также могут появиться изменения в правилах.


Перед каждым новым раундом сложность игры возрастает, а сама игра становится интереснее: добавляются новые условия и ограничения.


Всё время чемпионата (с 7 ноября по 25 декабря) работает песочница, из которой и отбираются стратегии для первого раунда.


Поучаствовать в песочнице очень просто: вы пишете код, реализующий определённую стратегию игры, и загружаете. Всё, готово. Рано или поздно система подберёт вам соперника и столкнёт вас лбами. В случае победы рейтинг растёт, в случае проигрыша — наоборот, уменьшается.


В рамках первого раунда лучшие по рейтингу стратегии переходят во второй раунд, а из второго — в финал. Кроме того, и во второй раунд, и в финал добираются лучшие стратегии из песочницы, а значит, шанс есть всегда! По результатам финала мы выясняем, кто же лучше всех, и дарим им призы.


Призы


Все победители финала получат:


  • 1-е место — MacBook Pro
  • 2-е место — MacBook Air
  • 3-е место — Apple iPad
  • 4-е место — Samsung Gear S3
  • 5-е место — WD My Cloud 6 TB
  • 6-е место — WD My Passport Ultra 4TB

Кроме того, для топ-6 победителей песочницы у нас заготовлены WD My Passport Ultra 2TB — каждому. По традиции всем участникам второго раунда на память достаются футболки, а участникам финала — толстовки.


Задача


В этом году мы решили реализовать RTS. Настоящую большую RTS — много юнитов, много тактических решений в канве общей стратегии боя. Задача получилась довольно вкусной. Кстати, обратите внимание: всё, что ниже, — это не полные правила, а просто описание игрового мира, так сказать, для затравки. Полные правила, как и всегда, будут выложены в день старта соревнования — 7 ноября 2017 года.


Данное соревнование ставит перед участниками задачу управления большим количеством юнитов — техники (от 500 и более). Управление сильно упрощено по сравнению с играми прошлых лет; также есть возможность отдать приказ сразу группе юнитов. Действие происходит на прямоугольной карте. Координаты юнитов — вещественные числа. Вся карта разбита на квадратные области, в каждой из которых может быть один из трёх типов местности (равнина, лес, болото) и один из трёх типов погоды (ясно, облачно, дождь). Вся техника делится на пять типов (танк, БМП, ударный вертолёт, истребитель и БРЭМ) и две группы: наземная и воздушная. Тип местности влияет на скорость перемещения, дальность обзора и незаметность наземной техники; тип погоды влияет на те же самые параметры воздушной техники.



Не приводя точных характеристик, отметим, что первые три типа техники соотносятся друг с другом по принципу «камень > ножницы > бумага > камень», а именно «танк > БМП > ударный вертолёт > танк». Цель истребителя — завоевать превосходство в воздухе, однако он не может атаковать наземные юниты. БРЭМ медленно восстанавливает прочность находящейся поблизости дружественной техники. Скорость перемещения воздушной техники значительно выше, чем наземной, однако только наземная техника может захватывать сооружения, о чём подробнее далее.


Юниты в игре — это круги. У юнитов нет направления (с точки зрения симулятора игры; в рендерере, разумеется, модельки «смотрят» туда, куда перемещаются/стреляют), они могут мгновенно менять направление скорости перемещения, а также стрелять в любую сторону. Юниты автоматически атакуют противника, находящегося в радиусе стрельбы, если прошло достаточно времени после предыдущей атаки (cooldown). Игровой симулятор не допускает пересечения наземных юнитов друг с другом и пересечения воздушных юнитов одного игрока, воздушные юниты разных игроков могут пролетать друг сквозь друга.


Возможности управления игровой стратегии максимально приближены к управлению обычных компьютерных игр с большим количеством юнитов, например серии Total War и других. За одно действие можно выделить прямоугольную область (со сбросом имеющегося выделения или с добавлением к нему), снять выделение с прямоугольной области, назначить юнитов в группу с порядковым номером (для быстрого выделения), отправить группу перемещаться вдоль прямой линии или повернуть формацию относительно точки на заданный угол, также доступны некоторые другие вспомогательные действия и настройки действий.


Время в игре дискретное и состоит из тиков. С точки зрения игрового симулятора нет никакой взаимосвязи между тиками и реальным временем, однако для удобства и визуализации мы считаем, что секунда состоит из 60 тиков. Стратегия участника будет получать информацию о мире каждый тик, однако её возможности управления техникой ограничены несколькими действиями в секунду (что в некотором роде служит аналогом действий человека).


В раунде 1 турнира условия максимально просты. Каждому игроку даётся одинаковое количество техники. Нужно максимально эффективно использовать своих юнитов, чтобы уничтожить юнитов противника.


В раунде 2 турнира в игру вводятся сооружения. Сооружения — это прямоугольные области. Игрок может захватывать сооружения, просто перемещая в них свою наземную технику. Захват происходит не мгновенно. Скорость захвата пропорциональна количеству юнитов в области сооружения. Есть два типа сооружений: завод по производству техники (может производить любой тип техники по выбору игрока) и центр управления (немного увеличивает лимит количества действий стратегии в секунду).


В финале в игру вводится туман войны. Радиус обзора юнитов достаточно большой. Таким образом, изменение правил не должно сильно сказаться на локальном тактическом управлении. Однако для получения информации об отдалённых участках карты стратегии будет необходимо отправлять часть техники в разведку. Туман войны распространяется только на технику противника. Таким образом, стратегии всегда доступна информация обо всех сооружениях и полная карта местности/погоды.


Все игры происходят в формате дуэлей. Основная цель игры — набрать как можно больше баллов. За уничтожение каждой единицы техники противника начисляется немного баллов. Гораздо больше можно получить за захват сооружения. За полное уничтожение противника даётся значительное количество баллов. Сохраняется теоретическая возможность уничтожить противника, но в то же время проиграть по баллам, однако на практике это почти невозможно (если только обе стратегии не будут действовать как взаимосвязанные: одна поддаётся другой).


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


Нравится?


В рамках HighLoad Cup, Russian AI Cup и ML Boot Camp мы обещали, что будет интересно, и не подвели. Не обманем и в этот раз — будет действительно отлично! А теперь самое время пойти и подписаться. Мы напомним о старте чемпионата, чтобы вы точно его не пропустили.
Кроме того, у нас есть telegram-чат, telegram-канал и группа в VK, welcome!


Удачи на поле боя!

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


  1. ScratchBoom
    20.10.2017 15:26
    +1

    Какие языки будут поддерживаться? Надеюсь в 2017 котлин завезли по умолчанию?)


    1. sat2707 Автор
      20.10.2017 15:40

      Пока нет. Но обычно в первую неделю он появляется :)


      1. sat2707 Автор
        20.10.2017 16:11

        а вот C++, C#, Java, Pascal, Python 2/3 будут точно с самого начала


        1. rubyrabbit
          20.10.2017 17:59

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

          2. возможно ли сделать HTTP API, чтобы технология реализации не имела значение? правда, тогда придётся какую-то виртуалку выделять, а участники тогда должны загружать образ системы целиком. но вот тут действительно была бы битва платформ.


          1. sat2707 Автор
            20.10.2017 18:09

            Можно глянуть в 2016.russianaicup.ru, в раздел документации, механизм сотрудничества клиента и мира из года в год меняется довольно мало, так что можно на него опираться :)
            А с HTTP API мы уже вдоволь наигрались на highloadcup.ru :)


            1. VovanZ
              20.10.2017 20:35

              А с HTTP API мы уже вдоволь наигрались на highloadcup.ru :)

              Почитал. Жаль, что не слышал про него раньше.


              Собери его в docker-контейнер и залей в хранилище

              Это же очень круто! Почему бы не сделать так же в AI Cup? В прошлый раз крайне раздражало то, что:


              1. Нельзя использовать сторонние библиотеки.
              2. Невозможно нормально собирать приложение с зависимостями.
              3. По совершенно непонятной причине, невозможно хранить код в папках (!!!!). Можно только в плоской структуре файлов.

              Если бы вы принимали в качестве решения докер-контайнер, а не код, все эти неудобства были бы решены.
              Для тех, кто не может в докер, можно было бы сделать fallback: автоматическую собиралку контейнеров для каждого языка. Это сделать весьма несложно и обратная совместимость бы не сломалась...


              P. S. Насколько я помню, во всех прошлых RAIC, стратегия и так подключалась к раннеру по сети, так что, чтобы запускать всё в докере даже раннер модифицировать не надо


              1. sat2707 Автор
                20.10.2017 20:55

                Мы к этому постепенно идём (попытки можно увидеть на http://aicups.ru/, там только что закончился тестовый чемпионат), но пока что окончательно не пришли :)


        1. third112
          20.10.2017 22:33

          Очень хорошо, что Pascal «точно с самого начала»! Т.к. если решу участвовать, то буду повторно использовать код на Delphi-7 своих игровых ботов. Предпочитаю работать на старых Виндах XP SP3 — это не вызовет проблемы?


          1. prospero78su
            24.10.2017 10:37

            Там в предыдущих вариантах был заявлен FreePascal.


      1. 889878465
        21.10.2017 01:29

        404 NotFind :)


  1. sazerex
    20.10.2017 15:33
    -1

    Очень нравиться!

    П.С. А караваны можно будет грабить?))


    1. sat2707 Автор
      20.10.2017 15:38

      Кто знает… :)


    1. aim17
      21.10.2017 01:30

      «корованы» же… без этого весь смысл теряется :)


      1. bigfatbrowncat
        21.10.2017 17:18

        Если «очень нравитЬся», значит, пожалуй, должны быть караваны. По инверсной логике.


  1. myxo
    20.10.2017 16:16

    Здорово! Не планируется ли включить в локал раннер дебажное отображение? Или как всегда ждать модификации от участников? =)


    1. JustAMan
      20.10.2017 17:27
      +4

      Думаю, я и в этом году обновлю :)


      1. bigfatbrowncat
        21.10.2017 17:18

        Значит, от участников


  1. ivlevAstef
    20.10.2017 16:22
    +1

    Как я давно этого ждал, ну всмысле стратегию…
    Осталось swift поддержать быстренько и будет лучший RAIC из всех :)


  1. solver
    20.10.2017 16:51

    Надеюсь по дефолту уже Java 9 будет? )


  1. DSLow
    20.10.2017 17:43
    -1

    макбуки за первые места

    А нормальные призы будут?


    1. sat2707 Автор
      20.10.2017 17:43
      +5

      Нет, простите, только всякая ерунда :)
      А каких «нормальных» призов вам хотелось бы?


      1. quantum
        20.10.2017 18:04
        +9

        Ааавтомобиль

        image


    1. laerreal
      20.10.2017 20:52

      А ЧСВ за первое место чем не приз?


  1. laerreal
    20.10.2017 17:43
    -8

    Бомбануло…
    1. Причём здесь StarCraft, C&C и Total War?! Только одно общее — RTS, любые другие сравнения — оскорбление упомянутых игр. Кстати, на фоне BW API для Starcraft BW это как-то, мягко говоря, не смотрится.
    1.1 Если бы вы прикрутили рейтинговую систему к BWAPI, и то лучше бы вышло.
    2. Зачем симулировать живого игрока (ограничение по действиям)? Это соревнование ботов между собой или с людьми?! Выглядит так, что разработчики реализовали управление для ручного режима локалранера, а потом просто не стали заморачиваться с API для бота.
    3. Отсутствие разнообразия игрового мира и упрощённое управление ещё можно понять… Время же ограничено. Но, кажется, сильно упростили.


    1. sat2707 Автор
      20.10.2017 17:46
      +9

      1. Не ожидал, что всё так серьёзно! Извините, если обидели!
      1.1. Может быть. А может быть и нет. Наверное стоит подождать самого чемпионата перед тем, как делать выводы
      2. Нам захотелось симулировать действия живого игрока. Простите, если вам это не понравилось :) Технические ограничения тут не при чем
      3. А по-моему, получится просто отлично! Приходите, пробуйте, не понравится — уйдёте :)


      1. laerreal
        20.10.2017 20:47
        -1

        1. Обижаются пусть разработчики тех игр, если вообще это заметят. А так, всё понятно: нужно же привлечь внимание ярким заголовком.
        1.1 Уже в 3 участвовал, даже входил в любимое число тракториста, а такое впечатление впервые.
        2. На соревнованиях про программированию бота симулировать действия живого игрока… ну, ок… (это, кстати, тоже впервые на моей памяти в этих соревнованиях)
        3. Сам себя не похвалишь, никто не похвалит!

        З.Ы. А вообще, что имеем, то имеем. Уже ничего не поделаешь. Верю, в следующем году команда разработчиков проявит больше оригинальности.


        1. sat2707 Автор
          20.10.2017 21:08

          Я так и не понял вашего посыла — лишние упоминания известных rts в виду простоты задачи, получается так?


          1. laerreal
            20.10.2017 21:19

            Хотелось чего-то эпичного. Разумно ожидать, что каждое новое соревнование чем-то лучше предыдущего. А это меркнет на фоне CodeWizards и предшественников. Тем более, повторюсь, что есть аналоги.

            З.Ы. Не в тему: но, почему у Вас на картинке ёлки желтые? =)


            1. sat2707 Автор
              21.10.2017 01:34

              Да ну прям там, эпичного. Всё жанры уже изобретены, мы просто пытаемся дать возможность почувствовать себя в шкуре каждого из них:
              P.S. Эпичное будет в следующих aicups, если получится договориться :)
              P.P.S. А елки желтые нипочему, мы сами только что заметили :)


      1. jet-black
        21.10.2017 01:56

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


        1. VovanZ
          21.10.2017 11:51

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

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


    1. VovanZ
      20.10.2017 20:49

      Зачем симулировать живого игрока (ограничение по действиям)? Это соревнование ботов между собой или с людьми?! Выглядит так, что разработчики реализовали управление для ручного режима локалранера, а потом просто не стали заморачиваться с API для бота.

      Без этого будет рулить весьма примитивный микроконтроль, а так придётся больше думать о тактике и стратегии.


    1. tyamgin
      20.10.2017 23:44

      Причём здесь StarCraft, C&C и Total War?

      Написано "Поклонникам StarCraft и C&C посвящается". Это значит тем, кому нравится эта игра или жанр, скорее всего понравится. Похоже, что так и есть. Никто не говорил, что будет именно StarCraft.


      Но, кажется, сильно упростили.

      Опять же, давайте подождём полного описания. Написано же, что это не полные, только для затравки.


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

      В смысле придумать своё, без пародий на что-то существующее? Кажется, уже выросли из размеров карт для танчиков и хоккейного поля, и свои собственные изобретения многие могут не понять.


      1. Destros
        21.10.2017 19:18

        Написано «Поклонникам StarCraft и C&C посвящается». Это значит тем, кому нравится эта игра или жанр, скорее всего понравится. Похоже, что так и есть. Никто не говорил, что будет именно StarCraft.


        Ничего подобного, я, как игрок в Starcraft, не увидел никакой связи между конкурсом и данной вселенной. С таким же успехом — сапер тоже для поклонников Starcraft. Обычная замануха заголовком.


        1. sat2707 Автор
          22.10.2017 17:50
          +1

          Ну, вы не увидели, а кто-то увидел. Вы ведь не единственный игрок в StarCraft и C&C, правда? :)
          И конечно я имел в виду жанр задачи, а не уровень реализации игры. Чесгря не ожидал, что фанаты старика будут аггриться. Думал, наоборот, порадуются, что в этом году предлагаем rts


          1. stychos
            23.10.2017 01:27

            Ваш оппонент где-то прав — фанаты старкрафта слишком любят эту игру, чтобы делать сравнения с чем-либо. К тому же, упомянутые ограничения фанатов старкрафта огорчают (ибо они не по наслышке знают о том, что в некоторых ситуациях человек вполне может делать десяток действий в секунду, а не единицы). Но в целом, модель баланса x>y>z>x, ну и сам жанр, должны это нивелировать.


          1. JustAMan
            23.10.2017 12:45

            Я, как любитель SC, рад :)


  1. ewgRa
    20.10.2017 18:17
    +1

    горшочек не вари…

    а если серьезно то побольше бы паузу между соревнованиями. backend, потом лифты, теперь стратегия, на все времени совсем не хватает, да и вы мне кажется не успеваете подготовиться нормально.

    ps. за backend до сих пор не пришла футболка


    1. sat2707 Автор
      20.10.2017 18:44
      +1

      Если речь о highloadcup.ru, то мы их вот сейчас высылаем. Футболки — это то, что мы делаем долго :)


  1. erwins22
    20.10.2017 18:50
    +5

    Было бы прикольно, если бы вы подключали сразу тензорфлоу.


    1. QtRoS
      21.10.2017 12:49

      Присоединяюсь к оратору выше — будет ли возможность поиграть с сетками, либо входные ограничения на входе подрежут все возможности (это я про размер файлов, помнится даже без сеток некоторые участники с трудом пушили решения)?


  1. Terras
    20.10.2017 19:54

    Когда уже mail.ru сам возьмется и сделает нормальную RTS? После того, как близзарды отыграли свое с SC2 — думаю, отечественная RTS выглядела бы интересно.


    1. oxidmod
      21.10.2017 09:31

      А что не так с СК2?


  1. erwins22
    20.10.2017 20:31

    Есть ли дружественный огонь?
    Хорошо бы выстрелы по линии (несколько целей) и сплеш.


    1. laerreal
      20.10.2017 20:53

      И грабить корованы! Без этого никак!


  1. znsoft
    20.10.2017 22:56

    интересно как в этом году поведут себя стратегии на нейронках? попадут ли в топ. или ПП опять всех победит?


    1. vova_cons
      21.10.2017 14:17

      они вообще участвовали?


      1. znsoft
        21.10.2017 14:42

        нейронка вот habrahabr.ru/post/319518,

        а на потенциальных полях (ПП) так это как раз 1 место статья на tproger
        и 2 место тоже ПП habrahabr.ru/post/318878
        в гоночках 2015 года победил алгоритм чем то напоминающий ГА


  1. Lerg
    21.10.2017 21:06

    Сколько действий можно сделать за один тик? Одно?


    1. sat2707 Автор
      22.10.2017 17:52

      Менее одного :)
      Мы планируем ограничивать кол-вом действий в секунду (60 тиков)


      1. erwins22
        22.10.2017 18:16

        А что о тензорфлоу?


  1. tyrus
    23.10.2017 14:33

    NodeJS будет уже из коробки или ждать фан-плагина всю тестовую неделю?


    1. tyrus
      24.10.2017 10:20

      Я намекаю на то, что мб вам попросить помощи у консорциума (прогеров, как бывших участников на ноде, так и среди местных) NodeJS, чтобы до старта тестового режима была хоть какая-нибудь версия?

      PS: Готов сам поучавствовать в этом.


  1. mbait
    23.10.2017 22:34

    Возможно ли будет хранить внутренее состояние программы, или решение нужно будет принимать на каждой итерации, исходя только из состояния игрового мира? Если можно, то каким образом, при каких ограничениях?


    1. znsoft
      24.10.2017 04:36

      В рамках одного боя можно хранить в static свойствах


  1. meandr
    24.10.2017 02:22

    Похоже на Panzer General 2, только real time


  1. MoreBeauty
    24.10.2017 06:45

    Жду с нетерпением :)