Russian AI Cup 2014 — CodeHockey

Конкурс состоит из 3 (трёх) этапов, каждый из которых завершается определением Победителей. Последний этап Конкурса является решающим для Участников конкурса в состязании за получение звания Победителя Конкурса, занявшего соответствующее призовое место.

Срок проведения Конкурса: с 00.00 часов 8 сентября 2014 года до 24.00 часов 19 октября 2014 года по Московскому времени.

Сроки начала и окончания этапов Конкурса:
  • первый этап – с 00 часов 00 минут 27 сентября 2014 года до 24 часов 00 минут 28 сентября 2014 года;
  • второй этап – с 00 часов 00 минут 4 октября 2014 года до 24 часов 00 минут 5 октября 2014 года;
  • третий этап (заключительный) – с 00 часов 00 минут 11 октября 2014 года до 24 часов 00 минут 12 октября 2014 года.

В зависимости от этапа соревнования у вас в команде будет от 2 до 6 полевых хоккеистов (при этом одновременно на площадке может находиться не более трёх, остальные должны сидеть на скамейке запасных), а также вратарь. 

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

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

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

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

Начальное значение рейтинга в Песочнице равно 1200. По итогам игры это значение может как увеличиться, так и уменьшиться. При этом победа над слабым (с низким рейтингом) противником даёт небольшой прирост, также и поражение от сильного соперника незначительно уменьшает ваш рейтинг. Если победа или поражение произошли в дополнительное время, то рейтинг меняется значительно меньше обычного. Со временем рейтинг в Песочнице становится всё более инертным, что позволяет уменьшить влияние случайных длинных серий побед или поражений на место участника, однако вместе с тем и затрудняет изменение его положения при существенном улучшении стратегии. Для отмены данного эффекта участник может сбросить изменчивость рейтинга до начального состояния при отправке новой стратегии, включив соответствующую опцию. В случае принятия новой стратегии системой рейтинг участника мгновенно упадёт, однако по мере участия в играх быстро восстановится и даже станет выше, если ваша стратегия действительно стала эффективнее.

Начальное значение рейтинга на каждом основном этапе турнира равно 0. За каждую игру участник получает определённое количество единиц рейтинга в зависимости от занятого в ней места. А именно:
  • За победу в основное время участник получает 3 единицы рейтинга, его противник получает 0.
  • За победу в дополнительное время участник получает 2 единицы рейтинга, его противник получает 1. 
  • За ничью оба участника получают по 1 единице рейтинга.

Сначала все участники могут участвовать только в играх, проходящих в Песочнице. Игроки могут отправлять в Песочницу свои стратегии, и последняя принятая из них берётся системой для участия в квалификационных играх. Каждый игрок участвует примерно в 1 квалификационной игре за час. Жюри оставляет за собой право изменить этот интервал, исходя из пропускной способности тестирующей системы, однако для всех игроков он остаётся постоянной величиной. Игры в Песочнице проходят по правилам, соответствующим правилам случайного прошедшего этапа турнира или же правилам следующего (текущего) этапа. При этом, чем ближе значение рейтинга двух игроков в рамках Песочницы, тем больше вероятность того, что они окажутся в одной игре. Песочница стартует до начала первого этапа турнира и завершается через некоторое время после финального (смотрите расписание этапов для уточнения подробностей). Помимо этого Песочница замораживается на время проведения этапов турнира. По итогам игр в Песочнице происходит отбор для участия в Раунде 1, в который пройдут 900 участников с наибольшим рейтингом (при его равенстве приоритет отдаётся игроку, раньше отправившему последнюю версию своей стратегии).

Этапы турнира:
  • Раунд 1 проверит ваши навыки управления командой из двух хоккеистов. Этап пройдёт по упрощённым правилам, о чем подробнее читайте далее. Этот этап, как и все последующие, состоит из двух частей, между которыми будет небольшой перерыв (с возобновлением работы Песочницы), который позволит улучшить свою стратегию. Для игр в каждой части выбирается последняя стратегия, отправленная игроком до начала части. Игры проводятся волнами. В каждой волне каждый игрок участвует ровно в одной игре. Количество волн в каждой части определяется возможностями тестирующей системы, но гарантируется, что оно не будет меньше десяти. 300 участников с наиболее высоким рейтингом пройдут в Раунд 2. Также в Раунд 2 будет проведён добор 60 участников с наибольшим рейтингом в Песочнице (на момент начала Раунда 2) из числа тех, кто не прошёл по итогам Раунда 1.
  • В играх Раунда 2 будет участвовать по 3 хоккеиста с каждой стороны. Участникам придётся не только координировать возросшее количество юнитов, но и учитывать разницу между ними: на этом этапе вводится понятие атрибутов хоккеистов. Между этапами будет некоторый перерыв, так что у вас есть возможность доработать стратегию. Усложняет задачу то, что после подведения итогов Раунда 1 часть слабых стратегий будет отсеяна и вам придётся противостоять более сильным соперникам. По итогам Раунда 2 лучшие 50 стратегий попадут в Финал. Также в Финал будет проведен добор 10 участников с наибольшим рейтингом в Песочнице (на момент начала Финала) из числа тех, кто не прошёл в рамках основного турнира.
  • Финал является самым серьёзным этапом. После отбора, проведённого по итогам двух первых этапов, останутся сильнейшие. И в каждой игре вам придётся сойтись лицом к лицу с одним из них. У игрока в распоряжении находится команда из 6 хоккеистов, из которых одновременно на игровой площадке находятся только трое, а остальные сидят на скамейке запасных. В игру вводится понятие выносливости. Немного выносливости тратится на каждое действие хоккеиста. Выносливость восстанавливается сама по себе для всех хоккеистов, но для сидящих в запасе скорость восстановления заметно выше. Система проведения Финала имеет свои особенности. Этап по-прежнему делится на две части, однако они уже не будут состоять из волн. В каждой части этапа будут проведены игры между всеми парами участников Финала. Если позволит время и возможности тестирующей системы, операция будет повторена.

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

Описание игрового мира

Игровой мир представляет собой некоторую двумерную прямоугольную область. Размер области — 1200 × 800. Ось абсцисс в этом мире направлена слева направо, ось ординат — сверху вниз, угол 0.0 совпадает с направлением оси абсцисс, а положительный угол вращения означает вращение по часовой стрелке. Ниже приведены две схемы игровой площадки с начальным расположением команд из двух и из трёх хоккеистов:



Время в игре дискретное и измеряется в «тиках». В начале каждого «тика» игра получает от стратегий желаемые действия хоккеистов в этот тик и обновляет состояние хоккеистов в соответствии с этими желаниями и ограничениями мира. Затем происходит расчёт изменения мира и объектов в нём за этот тик, и процесс повторяется снова с обновлёнными данными. Базовая длительность каждой игры — 6000 тиков. В случае равного счёта по окончании основного времени игра продлевается на 2000 тиков дополнительного времени. Помимо этого, игра не может закончиться в течение 300 тиков после забитого гола. Эти 300 тиков являются периодом «вне игры», о чём подробнее читайте в следующем разделе. Таким образом, максимально возможная длительность игры составляет 8300 тиков. Если стратегии обоих участников «упали», игра завершается преждевременно.

«Упавшая» стратегия больше не может управлять хоккеистами. Стратегия считается «упавшей» в следующих случаях:
1) Процесс, в котором запущена стратегия, непредвиденно завершился, либо произошла ошибка в протоколе взаимодействия между стратегией и игровым сервером.
2) Стратегия превысила одно (любое) из отведённых ей ограничений по времени. Стратегии на один ход хоккеиста выделяется не более 2 секунд реального времени. Но в сумме на всю игру процессу стратегии выделяется

50×<длительность_игры_в_тиках>×<количество_хоккеистов_в_команде>+2000 (2.1)

миллисекунд реального времени и

15×<длительность_игры_в_тиках>×<количество_хоккеистов_в_команде>+2000 (2.2) 

миллисекунд процессорного времени. Несмотря на то, что ограничение реального времени заметно выше ограничения процессорного времени, запрещено искусствен- но «замедлять» тестирование стратегии командами типа «sleep» (равно как и пытаться замедлить/дестабилизировать тестирующую систему другими способами). В случае выявления подобных злоупотреблений, жюри оставляет за собой право применить к данному пользователю меры на своё усмотрение, вплоть до дисквалификации из соревнования и блокировки аккаунта. В формуле учитывается только длительность основного
времени — 6000 тиков. Ограничение по времени остаётся прежним, даже если реальная длительность игры отличается от этого значения. Все ограничения по времени распространяются не только на код участника, но и на взаимодействие клиента-оболочки стратегии с игровым симулятором.
3) Стратегия превысила ограничение по памяти. В любой момент времени процесс стратегии не должен потреблять более 256 Мб оперативной памяти.