Открытое соревнование по программированию искусственного интеллекта

Проект

Песочница

Раунд 1

Раунд 2

Финал

Песочница (на 19 октября 2014 г.)

Последние комментарии

3 ноября 19:39: alevlaber написал комментарий в посте Закрытие Russian AI Cup 2014
3 ноября 19:36: andrey.chernov написал комментарий в посте Закрытие Russian AI Cup 2014
3 ноября 19:33: alevlaber написал комментарий в посте Закрытие Russian AI Cup 2014
3 ноября 19:30: andrey.chernov написал комментарий в посте Закрытие Russian AI Cup 2014
3 ноября 19:26: alevlaber написал комментарий в посте Закрытие Russian AI Cup 2014
1 октября 13:18: andrey.chernov написал комментарий в посте Закрытие Russian AI Cup 2014
29 сентября 10:26: alevlaber написал комментарий в посте Закрытие Russian AI Cup 2014
4 сентября 14:57: steleal написал комментарий в посте Закрытие Russian AI Cup 2014
4 сентября 14:56: steleal написал комментарий в посте Закрытие Russian AI Cup 2014
4 сентября 08:24: zavod написал комментарий в посте Закрытие Russian AI Cup 2014

Группа ВКонтакте

Открытый бета-тест

Мы рады приветствовать всех участников открытого бета-теста Russian AI Cup: CodeHockey 2014!

Бета-тест продлится до 23:59 14 сентября. Обращаем ваше внимание на то, что в этот период нами могут вноситься существенные изменения. Может поменяться формат турнира, может поменяться игра, например, вместо хоккея будет кёрлинг (шутка). Ваши отосланные (и принятые системой) стратегии могут перестать функционировать. За эту неделю мы постараемся исправить возможные ошибки, оптимизировать производительность, внести какие-либо другие необходимые улучшения. В этом деле мы рассчитываем также на помощь сообщества — вашу помощь.

Интервал игр в Песочнице на период бета-теста составляет 20 минут. После начала чемпионата этот интервал будет изменён в соответствии с оценкой возможностей тестирующей системы.

После завершения бета-теста рейтинг всех участников будет сброшен к начальному состоянию.

Обновлено:

  • 8 сентября 15:30: Правила игры и все языковые пакеты опубликованы на GitHub.
  • 9 сентября 16:00: Обновлены языковые пакеты C++ (добавлено больше проектных файлов) и Ruby (исправлен вызов atan2 и hypot), пока только на GitHub.
  • 9 сентября 17:54: Обновлён пакет Ruby в тестирующей системе.


dantistus

dantistus

Freelance Web & Graphic Designer

Всем успехов!

08.09.2014 0:24:30
Spun

Spun

Москва

Очень ждал этого турнира. Удачи всем, и пусть победит самый хитроумный =)

08.09.2014 0:27:36
HiVaccessdenied

HiVaccessdenied

ООО "Мера НН"

Дождались! Понеслось :-)

08.09.2014 0:34:43
Romka

Romka

Яндекс

В “Создать игру” в поле выбора режима по-прежнему солдатики с предыдущего AI Cup.

08.09.2014 1:02:29
HiVaccessdenied

HiVaccessdenied

ООО "Мера НН"

Romka

Romka

Яндекс

В “Создать игру” в поле выбора режима по-прежнему солдатики с предыдущего AI Cup.

А теперь совсем ничего :-)

08.09.2014 1:04:14
cheeser

cheeser

Glowbyte

Всем удачи :)

08.09.2014 1:07:02
HiVaccessdenied

HiVaccessdenied

ООО "Мера НН"

Что-то бои висят долго… Еще не все мощности запущены? Сколько игр в час будет в этом году? Думаю, всех интересует :-)

08.09.2014 1:08:41
HiVaccessdenied

HiVaccessdenied

ООО "Мера НН"

HiVaccessdenied

HiVaccessdenied

ООО "Мера НН"

Дождались! Понеслось :-)

Эх, прощай полтора месяца жизни :-D

08.09.2014 1:09:12
HiVaccessdenied

HiVaccessdenied

ООО "Мера НН"

HiVaccessdenied

HiVaccessdenied

ООО "Мера НН"

Что-то бои висят долго… Еще не все мощности запущены? Сколько игр в час будет в этом году? Думаю, всех интересует :-)

И что-то проведенные бои в проигрывателе не грузятся.

08.09.2014 1:10:48
HiVaccessdenied

HiVaccessdenied

ООО "Мера НН"

Хорошо быть совой. Сделал скриншот себя на главной :-) Второе место!

08.09.2014 1:13:09
Hohol

Hohol

Maxifier

Привет!

08.09.2014 1:30:54
dedpyhto

dedpyhto

Москва

В Chrome работает визуализатор, в Firefox 32.0 – нет. У кого так же?

08.09.2014 1:33:01
alexanderk23

alexanderk23

КубГУ

Ну вот. В этот раз даже раньше. Ууух. Всем привет :)

08.09.2014 1:38:31
SladeThe

SladeThe

Команда Russian AI Cup

xkor

xkor

Omnigon

Что означает при посылке стратегии вердикт “Отказ тестирования”? Система не в настроении тестировать мою стратегию?)

Временные неполадки. Разбираемся. Попробуйте послать ещё раз минут через 20.

08.09.2014 2:35:32
dedpyhto

dedpyhto

Москва

Теперь визуализатор как будто работает в Firefox 32.0, но фигурки полевых игроков не рисуются совершенно.

08.09.2014 2:51:46
sender-mobile

sender-mobile

Москва

А планируется-ли хотя бы в этом году пофиксить воспроизведение боев на смартфоне - чтобы окошко воспроизведения можно было позиционировать самостоятельно, а не как ему самому вздумается(сейчас оно уезжает влево за границу экрана, и достать его оттуда не представляется возможным. Chrome 37.0.2062.117)?

08.09.2014 3:33:05
admin

admin

Команда Russian AI Cup

dedpyhto

dedpyhto

Москва

Теперь визуализатор как будто работает в Firefox 32.0, но фигурки полевых игроков не рисуются совершенно.

Видимо, это связано с https://bugzilla.mozilla.org/show_bug.cgi?id=591822 Будем разбираться.

08.09.2014 3:38:27
Hohol

Hohol

Maxifier

Графон как в крузисе! Красота!

08.09.2014 10:43:34
SladeThe

SladeThe

Команда Russian AI Cup

senya

senya

МФТИ (ГУ)

что бросается в глаза - поворот хоккеистов рывками из-за “2 градуса раз в 60 тиков”.. Может хотябы в визуализаторе сгладить этот момент?

  1. “2 градуса раз в 60 тиков” — это откуда? Ограничение на угол поворота составляет 2º за 1 тик.

  2. Те моменты, о которых вы пишете, никак не связаны между собой. По умолчанию в визуализаторе используются облегчённые текстуры, на них у хоккеиста всего 16 углов поворота. Вы можете установить галочку “Высокое качество”.

08.09.2014 14:20:43
senya

senya

МФТИ (ГУ)

SladeThe

SladeThe

Команда Russian AI Cup

  “2 градуса раз в 60 тиков” — это откуда? Ограничение на угол поворота составляет 2º за 1 тик.     Те моменты, о которых вы пишете, никак не связаны между собой. По умолчанию в визуализаторе используются облегчённые текстуры, на них у хоккеиста всего 16 углов поворота. Вы можете установить галочку “Высокое качество”. ...

ага, понял. ступил)

08.09.2014 14:24:37
GreenTea

GreenTea

ISDDesign

Привет всем! Еще не смотрел API.. Скажите, все параметры по физике можно будет через API посмотреть или придется формулы подбирать как в танках?

08.09.2014 14:26:22
SladeThe

SladeThe

Команда Russian AI Cup

enot110

enot110

ITMO University

баг: http://russianaicup.ru/game/view/413 сила удара растет, растет, растет и .. растет…

Это баг визуализации. На самом деле ограничение силы удара действует так, как указано в правилах.

08.09.2014 14:34:03
Ermak

Ermak

МГУ им. М.В. Ломоносова

http://russianaicup.ru/game/view/373 еще один такой-же глюк

08.09.2014 15:00:05
aabzac

aabzac

БГУИР

http://russianaicup.ru/game/view/774 По истечении основного времени - после сообщения “OVERTIME” куда-то исчезли вратари. Соперник воспользовался моментом и забил в пустые ворота. Это такая фича?

08.09.2014 17:52:43
HiVaccessdenied

HiVaccessdenied

ООО "Мера НН"

aabzac

aabzac

БГУИР

http://russianaicup.ru/game/view/774 По истечении основного времени - после сообщения “OVERTIME” куда-то исчезли вратари. Соперник воспользовался моментом и забил в пустые ворота. Это такая фича?

Похоже, да. И прикольная :-)

08.09.2014 17:59:59
Kirill_Tim

Kirill_Tim

NRU ITMO

HiVaccessdenied

HiVaccessdenied

ООО "Мера НН"

Похоже, да. И прикольная :-)

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

08.09.2014 18:03:52
Golovanov399

Golovanov399

Московский Физико-Технический Институт

1) Будут ли выводиться имена игроков хоть когда-нибудь? Или они уже выводятся, но у меня проблема с браузером?

2) Правильно ли я понимаю, что в овертайме, если не было забито ни одного гола, то world.getHockeyists() не вернёт вратарей? Если вернёт, то что происходит с их координатами?

08.09.2014 18:05:08
HiVaccessdenied

HiVaccessdenied

ООО "Мера НН"

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

08.09.2014 18:13:21
dantistus

dantistus

Freelance Web & Graphic Designer

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

08.09.2014 18:23:11
dantistus

dantistus

Freelance Web & Graphic Designer

И еще, может быть сделаете возможность оставлять на сайте комментарии к отдельным боям? ^_^

08.09.2014 18:30:35
CyberWo1f

CyberWo1f

Тюмень

Я бы предложил такую плюху. Когда наступает овертайм и убираются вратари, ставьте всех хоккеистов на начальное положение, как при голе, а то бывают ситуации, что шайба направленная в ворота вдруг не встречает сопротивления, хотя секунду назад там был вратарь =) Обидно бывает =)

08.09.2014 18:45:31
velial

velial

Серпухов

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

08.09.2014 18:48:55
amurushkin

amurushkin

ХНУРЭ (бывш. ХИРЭ, ХТУРЭ)

CyberWo1f

CyberWo1f

Тюмень

Я бы предложил такую плюху. Когда наступает овертайм и убираются вратари, ставьте всех хоккеистов на начальное положение, как при голе, а то бывают ситуации, что шайба направленная в ворота вдруг не встречает сопротивления, хотя секунду назад там был вратарь =) Обидно бывает =)

согласен. более логично начинать заново розыгрыш шайбы

08.09.2014 19:59:02
Hohol

Hohol

Maxifier

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

08.09.2014 20:06:26
SladeThe

SladeThe

Команда Russian AI Cup

HiVaccessdenied

HiVaccessdenied

ООО "Мера НН"

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

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

08.09.2014 20:35:35
imbeat

imbeat

МИЭТ

Вратари шибко резвые! Просмотрев лишь боев 30, встретил бой где забили хотя бы один гол при наличии вратарей!

08.09.2014 21:50:46
dezalator

dezalator

ДонНТУ

действительно, при начале овертайма логичнее было бы перемещать всех на начало. И еще - вратарей, ИМХО, нужно или уменьшать или замедлять. А то забивание голов сейчас - это такой рандом…

08.09.2014 22:02:37
velial

velial

Серпухов

imbeat

imbeat

МИЭТ

Вратари шибко резвые! Просмотрев лишь боев 30, встретил бой где забили хотя бы один гол при наличии вратарей!

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

08.09.2014 22:40:56
dantistus

dantistus

Freelance Web & Graphic Designer

imbeat

imbeat

МИЭТ

Вратари шибко резвые! Просмотрев лишь боев 30, встретил бой где забили хотя бы один гол при наличии вратарей!

Пасовать же надо :)

09.09.2014 0:19:30
GreenTea

GreenTea

ISDDesign

http://russianaicup.ru/game/view/2615 А это нормально вообще? Толпой налетать на футболиста и гупать? :) Не превратиться ли игра в сплошное месилово?) А что, двое налетают, один сбивает с ног, другой спокойно отбирает шайбу. Я бы, может быть, как наказание, сделал так, чтобы действие “сбить футболиста” отнимало много выносливости.. Ну или чтобы шанс сбить был поменьше чем сейчас.

09.09.2014 0:52:27
GreenTea

GreenTea

ISDDesign

velial

velial

Серпухов

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

из документации “Шайба и полевые хоккеисты (в отличие от вратарей) не взаимодействуют между собой как физические сущности”. Так что хоккеист прозрачен для шайбы всегда. Он может только попытаться контролировать ее, тогда шайба приклеивается перед ним.

09.09.2014 1:07:54
Kirill_Tim

Kirill_Tim

NRU ITMO

GreenTea

GreenTea

ISDDesign

http://russianaicup.ru/game/view/2615 А это нормально вообще? Толпой налетать на футболиста и гупать? :) Не превратиться ли игра в сплошное месилово?) А что, двое налетают, один сбивает с ног, другой спокойно отбирает шайбу. Я бы, может быть, как наказание, сделал так, чтобы действие “сбить футболиста” отнимало много выносливости.. Ну или чтобы шанс сбить был поменьше чем сейчас.

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

09.09.2014 2:05:35
LeeT

LeeT

Россия

aabzac

aabzac

БГУИР

Странно, почему тогда в дополнительное время не убрали вратарей в этой игре: http://russianaicup.ru/game/view/6743

Потому что убирают вратарей если счет 0-0

09.09.2014 10:42:01
LeeT

LeeT

Россия

Кто подскажет, не могу выйти из состояния SWIWNING и в итоге получается вот это http://russianaicup.ru/game/view/6202 (3100 тик) Для выхода использую такой кусок кода: if (self.getState() == HockeyistState.SWINGING && world.getPuck().getOwnerHockeyistId() != self.getId()) { move.setAction(ActionType.CANCEL_STRIKE); }

09.09.2014 10:53:13
velial

velial

Серпухов

LeeT, быть может пропущен оператор return и выполняемый следом код задаёт хоккеисту другое действие (которое системой игнорируется, отчего хоккеист остается в состоянии SWINGING)? или вовсе выполняется другая ветка кода и сюда управление не попадает?.. проверьте код повнимательнее, не упуская из виду приоритеты операторов == && и т.д. (лично я очень ленив и их в памяти не держу, просто всегда расставляю скобки, но у Вас похоже другой путь :) ) Можете попробовать Repeater с добавлением в стратегию кода для записи отладочных логов в файл (если записывать тик, id хоккеиста и выбранное действие после каждого move.setAction(…), то наверняка сможете вычислить проблему) А если с кодом точно всё в порядке, то никто и от бага не застрахован. Сейчас ещё всего лишь бета-тест :)

09.09.2014 11:20:22
amurushkin

amurushkin

ХНУРЭ (бывш. ХИРЭ, ХТУРЭ)

LeeT

LeeT

Россия

Потому что убирают вратарей если счет 0-0

я заметил что вратарей убирают только в песочнице вроде

09.09.2014 11:20:59
LeeT

LeeT

Россия

velial

velial

Серпухов

LeeT, быть может пропущен оператор return и выполняемый следом код задаёт хоккеисту другое действие (которое системой игнорируется, отчего хоккеист остается в состоянии SWINGING)? или вовсе выполняется другая ветка кода и сюда управление не попадает?.. проверьте код повнимательнее, не упуская из виду приоритеты операторов == && и т.д. (лично я очень ленив и их в памяти не держу, просто всегда расставляю скобки, но у Вас похоже другой путь :) ) Можете попробовать Repeater с добавлением в стратегию кода для записи отладочных логов в файл (если записывать тик, id хоккеиста и выбранное действие после каждого move.setAction(…), то наверняка сможете вычислить проблему) А если с кодом точно всё в порядке, то никто и от бага не застрахован. Сейчас ещё всего лишь бета-тест :)

Вот протестировал в local-runner вот такой код import model.*;

import static java.lang.StrictMath.PI;

public final class MyStrategy implements Strategy { @Override public void move(Hockeyist self, World world, Game game, Move move) { if ((self.getState() == HockeyistState.SWINGING)&&(world.getPuck().getOwnerHockeyistId() != self.getId())) { move.setAction(ActionType.CANCEL_STRIKE); } if (world.getPuck().getOwnerHockeyistId() == self.getId()) move.setAction(ActionType.SWING); else { move.setSpeedUp(1.0D); move.setTurn(self.getAngleTo(world.getPuck())); move.setAction(ActionType.TAKE_PUCK); } } } (суть в том что я не могу выйти из состояния SWINGING если у меня заберут шайбу, выходит если я получу какой-нибудь cooldown) Если шайбу я контролирую, то выходит из состояния нормально.

09.09.2014 12:09:18
Anarion

Anarion

Бишкек

Очень большая вероятность не поймать довольно точный пасс делает стратегии в духе “месить всех подряд” ничуть не хуже стратегий “играть командно, с пассами”

09.09.2014 12:10:35
LeeT

LeeT

Россия

После ещё одних тестов погонял через дебаг понял что move.setAction(ActionType.CANCEL_STRIKE); Вообще не работает

09.09.2014 14:02:47
SladeThe

SladeThe

Команда Russian AI Cup

LeeT

LeeT

Россия

После ещё одних тестов погонял через дебаг понял что move.setAction(ActionType.CANCEL_STRIKE); Вообще не работает

Никаких багов в работе ActionType.CANCEL_STRIKE не выявлено. Ищите ошибки в своём коде.

09.09.2014 16:45:02
KiRex

KiRex

Москва

В Хроме Версия 37.0.2062.103 m галочка “высокое качество” не работает, нажимаешь, происходит перезагрузка поля, картинка обновляется и галочки снова нет.

09.09.2014 17:42:37
imbeat

imbeat

МИЭТ

KiRex

KiRex

Москва

В Хроме Версия 37.0.2062.103 m галочка “высокое качество” не работает, нажимаешь, происходит перезагрузка поля, картинка обновляется и галочки снова нет.

Подтверждаю. Версия 37.0.2062.103 unknown-m (64-bit).

09.09.2014 21:28:59
AlexZabashta

AlexZabashta

СПбНИУ ИТМО

В меню-подсказке, которое выпадает на странице “Создать игру”, когда вводишь префикс имени, скроллбар прокручивает только имена, строки “последняя версия…” не прокручиваются.

10.09.2014 1:39:49
dimoc

dimoc

Минск

LeeT

LeeT

Россия

Вот протестировал в local-runner вот такой код import model.*; import static java.lang.StrictMath.PI; public final class MyStrategy implements Strategy { @Override public void move(Hockeyist self, World world, Game game, Move move) { if ((self.getState() == HockeyistState.SWINGING)&&(world.getPuck().getOwnerHockeyistId() != self.getId())) { move.setAction(ActionType.CANCEL_STRIKE); } if (world.getPuck().getOwnerHockeyistId() == self.getId()) move.setAction(ActionType.SWING); else { move.setSpeedUp(1.0D); move.setTurn(self.getAngleTo(world.getPuck())); move.setAction(ActionType.TAKE_PUCK); } } } (суть в том что я не могу выйти из состояния SWINGING если у меня заберут шайбу, выходит если я получу какой-нибудь cooldown) Если шайбу я контролирую, то выходит из состояния нормально.

насчет return были правы. если первый if выполняется, значит world.getPuck().getOwnerHockeyistId() != self.getId(), а следовательно во втором if идет по esle и перезаписывает action на TAKE_PUCK

10.09.2014 14:36:09
LeeT

LeeT

Россия

dimoc

dimoc

Минск

насчет return были правы. если первый if выполняется, значит world.getPuck().getOwnerHockeyistId() != self.getId(), а следовательно во втором if идет по esle и перезаписывает action на TAKE_PUCK

Да я уже понял ошибку, я считал что move.setAction() выполняет первое действие, то есть выполняет только первое возможное изменение действий, а остальные игнорирует

10.09.2014 14:38:39
dantistus

dantistus

Freelance Web & Graphic Designer

LeeT

LeeT

Россия

Да я уже понял ошибку, я считал что move.setAction() выполняет первое действие, то есть выполняет только первое возможное изменение действий, а остальные игнорирует

Всегда смотрите исходники языкового пакета ;) На танчиках два года назад я целый вечер потратил, пытаясь разобраться, почему мои танки поворачивают не в ту сторону, оказалось, что в языковом пакете метод GetAngleTo возвращал неверное значение ^_^

10.09.2014 21:26:58