company_banner

Russian AI Cup 2020 — новая игра-стратегия для разработчиков



    Этот год трансформировал многие процессы, изменились традиции, привычки. Поменялся ритм, появилась дополнительная неопределенность и напряженность. Но душа IT-специалиста требует разнообразия, и многие разработчики нас спрашивали — будет ли ежегодный чемпионат Russian AI Cup? Будет ли анонс? Какая тема грядущего чемпионата? Брать ли отпуск?

    Не без изменений, но в лучших традициях. Накануне старта мы анонсируем один из крупнейших онлайн-чемпионатов современности по программированию искусственного интеллекта — Russian AI Cup. Приглашаем войти в историю!

    История чемпионата началась в 2012 году. Каждый год мы в Mail.ru Group совместно с Codeforces придумываем игровую задачу для разработчиков со всего мира. Цель — реализовать на любом языке программирования стратегию или бота, который будет играть в виртуальном мире за своего создателя против других ботов. Ежегодно в чемпионате участвует около 2 000 человек.

    Кто один раз участвовал, тот уже не может пропустить новое событие. Бывших участников не бывает. Поскольку между Russian AI Cup перерыв в один год, разработчики участвуют в других подобных инициативах, например, в Mini AI Cup или других международных платформах, таких как CodinGame. Сформирована уже целая культура. Про все прошлые чемпионаты вы можете вспомнить или прочитать в других статьях. Ссылки будут в конце.

    Теперь про Russian AI Cup (или RAIC): CodeCraft — соревнование этого года.

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


    Принять участие можно в любой день чемпионата, но есть этапы:

    1. Бета-неделя (28 ноября).
    2. Песочница (5 декабря и до конца соревнования).
    3. Первый раунд (12 — 13 декабря).
    4. Второй раунд (19 — 20 декабря).
    5. Финал (26 — 28 декабря).

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

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

    После каждого этапа сложность игры увеличивается. Добавляются дополнительные объекты, взаимосвязи между ними и правила. Всё это заранее описано в документации.

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

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

    Призы


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

    К сожалению, участники предыдущего RAIC получили футболки только почти через год (технику мы доставили). В пандемию мы были бессильны и не готовы.

    В связи с этим мы думали, чтобы отменить мерч в этом соревновании, но на нас обрушился шквал негодования. «Не нужны промокоды или другие виртуальные призы, нужны футболки и толстовки» — цитирую сообщество.

    Изменение 1: призы теперь не физические, а денежные. В этом году победители получат:

    • 1-е место — 250 000 руб.
    • 2-е место — 200 000 руб.
    • 3-е место — 150 000 руб.
    • 4-е место — 125 000 руб.
    • 5-е место — 100 000 руб.
    • 6-е место — 75 000 руб.

    Победители песочницы (тоже 6 человек) получат по 10 000 рублей каждый. Суммы указаны после вычета налогов. Мы значительно увеличили призовой фонд.

    Изменение 2: футболки и толстовки будут, но доставка будет не раньше февраля. Если вы не хотите ждать, то сможете обменять свой поощрительный подарок на промокод в сервисах Mail.ru Group (облако и др.).

    Все участники второго раунда получат футболки, а участники финала — толстовки.

    CodeCraft


    В 2017 году мы пытались сделать игру, похожую на StarCraft. Называлось соревнование тогда CodeWars. Сделали мы в итоге Total War с ядерными ударами по бутербродам (кто играл, тот поймет).



    Через два года вернулись к идее создать стратегию, но уже с элементами экономики. Я, например, вдохновлялся Stronghold Crusader, Empire Earth и другими классическими стратегиями.

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


    Полные правила игры будут доступны в момент открытия беты, поэтому здесь я опишу основной сценарий действий и ключевые объекты в игре.

    Игру можно будет скачать и поиграть локально. Версии доступны для Linux, MacOS и Windows.

    Программировать стратегии можно будет на большинстве ЯП: C#, C++, D, F#, Go, Java, JavaScript, Kotlin, Python, Ruby, Rust и Scala.

    Основные сущности


    Есть фиксированный набор типов сущностей в игре, и сущности одинаковых типов имеют одинаковые свойства:

    • Ресурс — единственная сущность, которой нельзя управлять. Её можно только собирать.
    • Юнит-строитель. Основная цель этого юнита — добывать ресурсы и строить здания.
    • Юнит ближнего боя. Базовый юнит, наносящий урон в ближнем бою.
    • Юнит дальнего боя. Наносит урон на расстоянии.
    • База строителей/юнитов ближнего боя/юнитов дальнего боя — эти здания позволят купить новых юнитов соответствующего типа. Могут быть построены строителем.
    • Стена — маленькое здание, блокирующее проход для противника.
    • Дом — здание, производящее еду.
    • Турель — здание, способное атаковать врагов. Не имеет возможности двигаться.

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

    Карта


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


    За расстояние между двумя клетками в игре принимается количество клеток, по которым нужно пройти, чтобы достичь цели, передвигаясь только по соседним клеткам.

    Вам может показаться, что у каждого объекта есть высота. Это не так. В этот раз тоже без 3D.

    Основная идея


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


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

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

    У каждого юнита или здания есть здоровье, а атакующие сущности имеют ограниченную дальность атаки.

    Население нужно кормить! Дом производит еду, а некоторые ее используют. Следите за этим.


    Ну и последнее — это дальность зрения. Если включен туман войны, ваша стратегия увидит лишь те сущности, которые расположены не дальше заданного расстояния от какой-то из сущностей, контролируемой вами.

    Специфика


    Туман войны будет доступен только в Раунде 2.

    В финале игры будут 1 на 1, а до него 1 против 3.

    Все правила и сущности будут доступны в Песочнице.

    И да — вспоминайте простой алгоритм A*. Он вам пригодится.

    Сообщество


    Присоединяйтесь к нашему дружному сообществу в Telegram. Мы общаемся и отвечаем друг другу на вопросы. Ждём вас!

    Игра, языковые пакеты и полные правила будут доступны 28 ноября в 00:00 МСК.

    Желаем веселья, интереса и удачи!

    Полезные ссылки

    2012 CodeTanks


    Статьи

    Путь к победе на Russian AI Cup 2012

    Путь к серебряной медали на Russian AI Cup 2012

    Танковые маневры на Russian AI Cup

    Видео

    Процесс написания стратегии

    Russian AI Cup. Tactics Field

    Russian AI Cup. Code of tanks

    Пример стратегии

    Пример стратегии

    2013 CodeTroopers


    Статьи

    Russian AI Cup: технические детали

    Золотая медаль на Russian AI Cup 2013 — как это все было

    Видео

    Пишем ИИ для Russian AI Cup

    2014 CodeHockey


    Статьи

    Russian AI Cup 2014: стратегия победителя

    Разработка стратегии игры хоккеистов в рамках конкурса Russian AI Cup

    Итоги Russian AI Cup 2014

    Видео

    Solit 2015. Иван Поляков «Russian AI Cup 2014: создание AI для игры реального времени»

    Быстрый старт: разбор от участника

    Обзор стратегии

    AI Cup 2015 News: выпуск 01, выпуск 02, выпуск 03, выпуск 04, выпуск 05, выпуск 06, выпуск 07.

    2015 CodeRacing


    Статьи

    История победы на ежегодном соревновании Russian AI Cup 2015

    История 5-го места на Russian AI Cup 2015

    Видео

    Пример стратегии

    Пример заезда

    2016 CodeWizards


    Статьи

    Дайджест AI Cup. Пять стратегий Code Wizards 2016

    Как создать лучшего бота для игры в стиле Dota — интервью с победителем соревнования Russian AI Cup

    История участия (и почти победы) в Russian AI Cup 2016

    Видео

    Deep Learning Agent for RussianAICup 2016

    2017 CodeWars


    Статьи

    История 3 места Russian AI Cup 2017

    Пример стратегии Russian AI Cup 2017

    Russian AI Cup: инструментарий участника

    Видео

    Быстрый старт: разбор от участника

    Пример стратегии

    Пример стратегии

    Game from Russian AI Cup 2017 CodeWizards

    2018 CodeBall


    Статьи

    История участия (и победы) в Russian AI Cup 2018 — CodeBall

    История второго места в Russian AI Cup 2018: CodeBall

    Russian AI Cup 2018, история 9 места

    Создание бота для участия в Russian AI Cup 2018 CodeBall

    Как я обучал нейросеть для реализации функции оценки положения на Russian AI Cup CodeBall 2018

    Видео

    Красивые моменты Russian AI Cup Codeball

    Russian AI Cup 2018: My Renderer

    Russian AI Cup 2018: CodeBall

    2019 CodeSide


    Статьи

    CodeSide. Новая игра для знаменитого соревнования Russian AI Cup

    Мой бот для Russian AI Cup 2019

    Участие и победа в Russian AI Cup 2019
    Mail.ru Group
    Строим Интернет

    Комментарии 24

      +2
      еее, дождались! с новым годом
        +2
        Норм! Успешного старта ;)
          +1
          Всем успешных сражений! (:
            –3
            А мне вот все интересно — почему организаторы не смогли осилить поддержку FreePascal для разрабатываемых стратегий? FreePascal бесплатный, поддерживает практически все ОС, прекрасно работает в докерах, при этом прост в установке. Но тем не менее не осилили…
              +2
              Возможно потому что им пользуются полтора человека.
                +2
                Вы можете сделать ПР в гитхаб с докером для своего любимого языка. Организаторы сделали образы для наиболее популярных
                  –2
                  Вы можете сделать ПР в гитхаб с докером для своего любимого языка. Организаторы сделали образы для наиболее популярных
                  Организаторам ранее я уже предлагал коммит со скриптом для докера. Был проигнорирован.
                  К турниру этого года надеялся, что вопрос будет решен, но как оказалось зря надеялся.

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

                  Здесь два возможных объяснения отсутствия поддержки FreePascal:
                  — организаторы действительно не смогли осилить поддержку фрипаскаля в докерах;
                  — организаторы с презрением относятся к ЯП, неиспользуемым в компании-организаторе.
                  Возможно и первое и второе вместе.

                  А с таким отношением это уже турнир с душком.
                    +2
                    Как показывает статистика — пользуется Pascal менее 1% участников, по этой причине не добавляем поддержку.
                      –2
                      Как показывает статистика — пользуется Pascal менее 1% участников, по этой причине не добавляем поддержку.
                      А что, 1% участников уже не важен? Показательно.
                      И что касается поддерживаемых языков, озвучьте пожалуйста статистику по следующим языкам:
                      — D
                      — F#
                      — Scala
                      — Ruby
                      Будет весьма интересно в контексте выбора языков по их популярности)

                      Ниже пишут:
                      Лет 20 назад Delphi был популярен. Сейчас… как определить? Вакансий практически нет.
                      смотрим hh ру. Относительно Java вакансий в разы меньше, это факт. Но теперь сравниваем количество вакансий с количеством на F#…

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

                      И всё таки, к кому именно из руководства материнской компании нужно обратиться, чтобы языковый пакет для freepascal был добавлен? Раз ответственные лица сами не хотят?
                        0
                        Язык D и F# были добавлены с пулл-реквестов участников. Остальные очень даже популярны.

                        Можете мне написать письмо с аргументацией того, почему Pascal обязан быть в таких соревнованиях на d.sannikov@corp.mail.ru. Более того, пришлите коммит, который вы делали для Pascal. Лично я не помню ни одного коммита с этим языком.
                        По нашему опыту расчетное время стратегий на Pascal сильно выше, чем на других современных языках. Из-за этого большая часть написанных стратегий даёт таймаут и др. ошибки при их выполнении.
                      +4

                      Лет 20 назад Delphi был популярен. Сейчас… как определить? Вакансий практически нет.


                      А с таким отношением это уже турнир с душком.

                      На главной странице соревнования список из 12 языков, а вы заговоры ищите. Не надо устраивать религиозные войны на пустом месте.

                    +2
                    Кажется паскаль не особо популярный язык. Плюс если все на самом деле просто, то можно будет своими силами добавить поддержку языка, на прошлых соревнованиях такое было
                    +3
                    Где PHP ?!
                      0
                      Беда. Постараемся добавить
                      0

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

                        +1
                        Тоже задавался таким вопросом. Один из участников на сайте мне ответил:
                        «Нажимаешь на здание ЛКМ, потом наводишь мышкой на клетку рядом со зданием этим, пустую. Жмешь R -> получаешь юнитов»
                        0
                        Возможность использовать докер добавят в этом году?
                          0
                          В этом году нет, но в следующем обязательно будет. Для этого почти всё готово
                          +1

                          На сайте куда-то потерялось "Russian" из названия.

                            +2
                            Уже международное :)
                            0
                            Ребят, а добавьте в докер образ Python'а scipy пожалуйста

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое