Уже несколько лет подряд мы проводим Russian AI Cup — нехилый такой конкурс для всех неравнодушных к программированию в целом, к построению ИИ, просто к написанию ботов для игр или автоматизации чего бы то ни было. Естественно, и этот год не будет исключением. Итак, Mail.Ru Group в сотрудничестве с Саратовским государственным университетом официально объявляют о дате старта Russian AI Cup 2017 и счастливы предложить задачу этого года. Жёсткие битвы, макбуки за первые места и минус полтора месяца из жизни разработчика — всё на месте, всё как вы любите. Добро пожаловать под кат за подробностями!
Суть чемпионата
Очень проста. Мы создаём для вас игровой мир, действующий по определённым правилам, и даём вам API. Вы же пишете на любимом языке стратегию поведения своих юнитов в этом игровом мире. В результате две стратегии разных участников запускаются в один мир и бьются друг с другом. Кто выиграл — молодец, кто нет — улучшает стратегию и ждёт реванша.
Расписание чемпионата
- Песочница: 7 ноября — 25 декабря
- Первый раунд: 25—26 ноября
- Второй раунд: 9—10 декабря
- Финал: 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)
sazerex
20.10.2017 15:33-1Очень нравиться!
П.С. А караваны можно будет грабить?))aim17
21.10.2017 01:30«корованы» же… без этого весь смысл теряется :)
bigfatbrowncat
21.10.2017 17:18Если «очень нравитЬся», значит, пожалуй, должны быть караваны. По инверсной логике.
ivlevAstef
20.10.2017 16:22+1Как я давно этого ждал, ну всмысле стратегию…
Осталось swift поддержать быстренько и будет лучший RAIC из всех :)
laerreal
20.10.2017 17:43-8Бомбануло…
1. Причём здесь StarCraft, C&C и Total War?! Только одно общее — RTS, любые другие сравнения — оскорбление упомянутых игр. Кстати, на фоне BW API для Starcraft BW это как-то, мягко говоря, не смотрится.
1.1 Если бы вы прикрутили рейтинговую систему к BWAPI, и то лучше бы вышло.
2. Зачем симулировать живого игрока (ограничение по действиям)? Это соревнование ботов между собой или с людьми?! Выглядит так, что разработчики реализовали управление для ручного режима локалранера, а потом просто не стали заморачиваться с API для бота.
3. Отсутствие разнообразия игрового мира и упрощённое управление ещё можно понять… Время же ограничено. Но, кажется, сильно упростили.sat2707 Автор
20.10.2017 17:46+91. Не ожидал, что всё так серьёзно! Извините, если обидели!
1.1. Может быть. А может быть и нет. Наверное стоит подождать самого чемпионата перед тем, как делать выводы
2. Нам захотелось симулировать действия живого игрока. Простите, если вам это не понравилось :) Технические ограничения тут не при чем
3. А по-моему, получится просто отлично! Приходите, пробуйте, не понравится — уйдёте :)laerreal
20.10.2017 20:47-11. Обижаются пусть разработчики тех игр, если вообще это заметят. А так, всё понятно: нужно же привлечь внимание ярким заголовком.
1.1 Уже в 3 участвовал, даже входил в любимое число тракториста, а такое впечатление впервые.
2. На соревнованиях про программированию бота симулировать действия живого игрока… ну, ок… (это, кстати, тоже впервые на моей памяти в этих соревнованиях)
3. Сам себя не похвалишь, никто не похвалит!
З.Ы. А вообще, что имеем, то имеем. Уже ничего не поделаешь. Верю, в следующем году команда разработчиков проявит больше оригинальности.sat2707 Автор
20.10.2017 21:08Я так и не понял вашего посыла — лишние упоминания известных rts в виду простоты задачи, получается так?
laerreal
20.10.2017 21:19Хотелось чего-то эпичного. Разумно ожидать, что каждое новое соревнование чем-то лучше предыдущего. А это меркнет на фоне CodeWizards и предшественников. Тем более, повторюсь, что есть аналоги.
З.Ы. Не в тему: но, почему у Вас на картинке ёлки желтые? =)sat2707 Автор
21.10.2017 01:34Да ну прям там, эпичного. Всё жанры уже изобретены, мы просто пытаемся дать возможность почувствовать себя в шкуре каждого из них:
P.S. Эпичное будет в следующих aicups, если получится договориться :)
P.P.S. А елки желтые нипочему, мы сами только что заметили :)
jet-black
21.10.2017 01:56Действительно, выглядит так, будто не хватает ресурсов на обработку каждого «тика» в стратегии, поэтому решили «симулировать» действия живого игрока. Мне казалось, что дух этого чемпионата состоит как раз в том, чтобы написать бота, превосходящего по силе человека, а не похожего на него.
VovanZ
21.10.2017 11:51Мне казалось, что дух этого чемпионата состоит как раз в том, чтобы написать бота, превосходящего по силе человека, а не похожего на него.
Ну так и напишите бота, превосходящего человека, засчёт тактики и стратегии, а не засчёт возможности быстрее кликать.
VovanZ
20.10.2017 20:49Зачем симулировать живого игрока (ограничение по действиям)? Это соревнование ботов между собой или с людьми?! Выглядит так, что разработчики реализовали управление для ручного режима локалранера, а потом просто не стали заморачиваться с API для бота.
Без этого будет рулить весьма примитивный микроконтроль, а так придётся больше думать о тактике и стратегии.
tyamgin
20.10.2017 23:44Причём здесь StarCraft, C&C и Total War?
Написано "Поклонникам StarCraft и C&C посвящается". Это значит тем, кому нравится эта игра или жанр, скорее всего понравится. Похоже, что так и есть. Никто не говорил, что будет именно StarCraft.
Но, кажется, сильно упростили.
Опять же, давайте подождём полного описания. Написано же, что это не полные, только для затравки.
Верю, в следующем году команда разработчиков проявит больше оригинальности.
В смысле придумать своё, без пародий на что-то существующее? Кажется, уже выросли из размеров карт для танчиков и хоккейного поля, и свои собственные изобретения многие могут не понять.
Destros
21.10.2017 19:18Написано «Поклонникам StarCraft и C&C посвящается». Это значит тем, кому нравится эта игра или жанр, скорее всего понравится. Похоже, что так и есть. Никто не говорил, что будет именно StarCraft.
Ничего подобного, я, как игрок в Starcraft, не увидел никакой связи между конкурсом и данной вселенной. С таким же успехом — сапер тоже для поклонников Starcraft. Обычная замануха заголовком.sat2707 Автор
22.10.2017 17:50+1Ну, вы не увидели, а кто-то увидел. Вы ведь не единственный игрок в StarCraft и C&C, правда? :)
И конечно я имел в виду жанр задачи, а не уровень реализации игры. Чесгря не ожидал, что фанаты старика будут аггриться. Думал, наоборот, порадуются, что в этом году предлагаем rtsstychos
23.10.2017 01:27Ваш оппонент где-то прав — фанаты старкрафта слишком любят эту игру, чтобы делать сравнения с чем-либо. К тому же, упомянутые ограничения фанатов старкрафта огорчают (ибо они не по наслышке знают о том, что в некоторых ситуациях человек вполне может делать десяток действий в секунду, а не единицы). Но в целом, модель баланса x>y>z>x, ну и сам жанр, должны это нивелировать.
ewgRa
20.10.2017 18:17+1горшочек не вари…
а если серьезно то побольше бы паузу между соревнованиями. backend, потом лифты, теперь стратегия, на все времени совсем не хватает, да и вы мне кажется не успеваете подготовиться нормально.
ps. за backend до сих пор не пришла футболкаsat2707 Автор
20.10.2017 18:44+1Если речь о highloadcup.ru, то мы их вот сейчас высылаем. Футболки — это то, что мы делаем долго :)
erwins22
20.10.2017 18:50+5Было бы прикольно, если бы вы подключали сразу тензорфлоу.
QtRoS
21.10.2017 12:49Присоединяюсь к оратору выше — будет ли возможность поиграть с сетками, либо входные ограничения на входе подрежут все возможности (это я про размер файлов, помнится даже без сеток некоторые участники с трудом пушили решения)?
znsoft
20.10.2017 22:56интересно как в этом году поведут себя стратегии на нейронках? попадут ли в топ. или ПП опять всех победит?
vova_cons
21.10.2017 14:17они вообще участвовали?
znsoft
21.10.2017 14:42нейронка вот habrahabr.ru/post/319518,
а на потенциальных полях (ПП) так это как раз 1 место статья на tproger
и 2 место тоже ПП habrahabr.ru/post/318878
в гоночках 2015 года победил алгоритм чем то напоминающий ГА
tyrus
23.10.2017 14:33NodeJS будет уже из коробки или ждать фан-плагина всю тестовую неделю?
tyrus
24.10.2017 10:20Я намекаю на то, что мб вам попросить помощи у консорциума (прогеров, как бывших участников на ноде, так и среди местных) NodeJS, чтобы до старта тестового режима была хоть какая-нибудь версия?
PS: Готов сам поучавствовать в этом.
mbait
23.10.2017 22:34Возможно ли будет хранить внутренее состояние программы, или решение нужно будет принимать на каждой итерации, исходя только из состояния игрового мира? Если можно, то каким образом, при каких ограничениях?
ScratchBoom
Какие языки будут поддерживаться? Надеюсь в 2017 котлин завезли по умолчанию?)
sat2707 Автор
Пока нет. Но обычно в первую неделю он появляется :)
sat2707 Автор
а вот C++, C#, Java, Pascal, Python 2/3 будут точно с самого начала
rubyrabbit
1. для того, кто видит всё это впервые, где можно посмотреть пример бота, реализующего стратегию. интересно, какие у него есть ресурсы по памяти, БД и пр., как он с ними работает.
2. возможно ли сделать HTTP API, чтобы технология реализации не имела значение? правда, тогда придётся какую-то виртуалку выделять, а участники тогда должны загружать образ системы целиком. но вот тут действительно была бы битва платформ.
sat2707 Автор
Можно глянуть в 2016.russianaicup.ru, в раздел документации, механизм сотрудничества клиента и мира из года в год меняется довольно мало, так что можно на него опираться :)
А с HTTP API мы уже вдоволь наигрались на highloadcup.ru :)
VovanZ
Почитал. Жаль, что не слышал про него раньше.
Это же очень круто! Почему бы не сделать так же в AI Cup? В прошлый раз крайне раздражало то, что:
Если бы вы принимали в качестве решения докер-контайнер, а не код, все эти неудобства были бы решены.
Для тех, кто не может в докер, можно было бы сделать fallback: автоматическую собиралку контейнеров для каждого языка. Это сделать весьма несложно и обратная совместимость бы не сломалась...
P. S. Насколько я помню, во всех прошлых RAIC, стратегия и так подключалась к раннеру по сети, так что, чтобы запускать всё в докере даже раннер модифицировать не надо
sat2707 Автор
Мы к этому постепенно идём (попытки можно увидеть на http://aicups.ru/, там только что закончился тестовый чемпионат), но пока что окончательно не пришли :)
third112
Очень хорошо, что Pascal «точно с самого начала»! Т.к. если решу участвовать, то буду повторно использовать код на Delphi-7 своих игровых ботов. Предпочитаю работать на старых Виндах XP SP3 — это не вызовет проблемы?
prospero78su
Там в предыдущих вариантах был заявлен FreePascal.
889878465
404 NotFind :)