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

Local runner

Проект

Песочница

Раунд 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

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

 

У вас есть возможность запускать простые тестовые игры локально на своём компьютере. Для этого необходимо скачать архив с утилитой Local runner. Использование данной утилиты позволит вам тестировать свою стратегию в условиях, аналогичных условиям тестовой игры на сайте, но без каких либо ограничений по количеству создаваемых игр.

Длительность подобных локальных игр составляет стандартные 6000 тиков. Рендерер для локальных игр заметно отличается от рендерера на сайте. Все игровые объекты в нём отображаются схематично (без использования красочных моделей) в соответствии с их реальными размером и формой, что, возможно, поможет лучше понять взаимодействие этих объектов. Создать локальную тестовую игру очень просто: запустите Local runner с помощью соответствующего скрипта запуска (для Windows или *n*x систем), затем запустите свою стратегию из среды разработки (или любым другим удобным вам способом) и смотрите игру. Во время локальных игр вы можете выполнять отладку своей стратегии, ставить точки останова. Однако следует помнить, что Local runner ожидает отклика от стратегии не более 10 минут. По прошествии этого времени он посчитает стратегию «упавшей» и продолжит работу без неё.

Обновлено:

  • 12 сентября 17:50: Добавлены настройки для изменения длительности основного времени игры и масштаба окна Local runner’а.
  • 14 сентября 20:30: Изменён размер поля с 1024x768 на 1200x800.
  • 15 сентября 14:30: Исправлена работа настройки seed.
  • 24 сентября 14:20: Значительно расширены возможности настройки Local runner’а. Подробнее об этом в посте на главной странице.
  • 25 сентября 12:15: Устранено ограничение Local runner’а, в связи с которым было невозможно установить длительность игры более 99999 тиков.
  • 3 октября 13:30: В игровой симулятор внесён ряд небольших правок.
  • 6 октября 21:20: Добавлена возможность сохранения и воспроизведения реплеев. Выполнен ряд незначительных улучшений и исправлений.

Важно: Для запуска Local runner необходима Java 7. Мы рекомендуем использовать Oracle JDK 7 x32.



SladeThe

SladeThe

Команда Russian AI Cup

shek_shek

shek_shek

СГУ им. Чернышевского

при запуске local-runner.bat пишет, что не удается найти javaw. Как это можно исправить?

  1. Необходимо скачать и установить Java 7, а затем добавить в переменную системы PATH <путь_до_папки_Java>\bin

  2. Открыть local-runner.bat в текстовом редакторе и указать полный путь до javaw.

08.09.2014 15:46:51
georgevolkov

georgevolkov

Paylink

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

08.09.2014 16:10:16
georgevolkov

georgevolkov

Paylink

Написал стратегию, запустил repeater указал там токен игры, запустил local-runner.bat, вижу старую стратегию. Потом изменил стратегию, скомпилировал, запустил local-runner.bat стратегия не изменилась, что я делаю не так?

08.09.2014 16:15:06
udalov

udalov

JetBrains

Для минимизации недоумения участников, пожалуйста, удалите -cp и логику по его вычислению из всех .sh- и .bat-скриптов local-runner и repeater, потому что java -jar игнорирует classpath, переданный вручную (http://stackoverflow.com/a/5858892)

08.09.2014 16:19:53
amurushkin

amurushkin

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

georgevolkov

georgevolkov

Paylink

Написал стратегию, запустил repeater указал там токен игры, запустил local-runner.bat, вижу старую стратегию. Потом изменил стратегию, скомпилировал, запустил local-runner.bat стратегия не изменилась, что я делаю не так?

репитер всегда запускает одну и туже игру пока токен тот же

08.09.2014 16:36:05
HiVaccessdenied

HiVaccessdenied

ООО "Мера НН"

amurushkin

amurushkin

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

репитер всегда запускает одну и туже игру пока токен тот же

Не очень верное утверждение ИМХО. Следует для себя понять, что такое repeater. А это утилита, которая вашей стратегии дает то состояние мира, которое было на сервере в каждый момент времени. Действия, которые вы совершаете своей стратегией во время проигрывания повтора полностью игнорируются. Почему - с.м. выше. Проигрывается запись, все уже случилось, на запись вы влияния не имеете. Так что не стоит удивляться, что стратегия не меняется.

08.09.2014 16:47:18
Kirill_Tim

Kirill_Tim

NRU ITMO

будет ли возможность запускать две различные стратегии игрока друг против друга(в официальном Local Rubber’e) как сделали в прошлом году?

08.09.2014 16:55:15
amurushkin

amurushkin

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

HiVaccessdenied

HiVaccessdenied

ООО "Мера НН"

Не очень верное утверждение ИМХО. Следует для себя понять, что такое repeater. А это утилита, которая вашей стратегии дает то состояние мира, которое было на сервере в каждый момент времени. Действия, которые вы совершаете своей стратегией во время проигрывания повтора полностью игнорируются. Почему - с.м. выше. Проигрывается запись, все уже случилось, на запись вы влияния не имеете. Так что не стоит удивляться, что стратегия не меняется.

Да совершенно верно. Я это понимаю, пытался помочь человеку выше. Возможно я не правильно понял его вопрос

08.09.2014 17:02:13
Kirill_Tim

Kirill_Tim

NRU ITMO

Kirill_Tim

Kirill_Tim

NRU ITMO

будет ли возможность запускать две различные стратегии игрока друг против друга(в официальном Local Rubber’e) как сделали в прошлом году?

упс. оказывается можно запускать две локальные стратегии, изменив файл с настройками local runner’a

08.09.2014 17:19:51
georgevolkov

georgevolkov

Paylink

Ничего не понятно, зачем тогда этот repiter когда стратегия не меняется, как мне локально проверять работу программы?

08.09.2014 18:21:09
dantistus

dantistus

Freelance Web & Graphic Designer

georgevolkov

georgevolkov

Paylink

Ничего не понятно, зачем тогда этот repiter когда стратегия не меняется, как мне локально проверять работу программы?

Локально проверять работу стратегии можно через Local Runner. Repeater нужен для того, чтобы записывать и анализировать “телеметрию” боя.

08.09.2014 18:29:23
georgevolkov

georgevolkov

Paylink

dantistus

dantistus

Freelance Web & Graphic Designer

Локально проверять работу стратегии можно через Local Runner. Repeater нужен для того, чтобы записывать и анализировать “телеметрию” боя.

Спасибо!

08.09.2014 18:55:27
monnoroch

Ubuntu 14.04 x64, при запуске любого local-runner*.sh что-то запускается, висит в трее, но окошко не открывается. Если запускаю стратегию, то она работает, result.txt записывается, но окошко так и не открывается на протяжении всей работы стратегии.

08.09.2014 19:19:30
emergency1997

emergency1997

Севастополь

При запуске local runner пишет что ожидание подключения стратегии. Дальше ничего не меняется, т.е. он не предлагает выбрать файл стратегии. Помогите! (Может я что-то не понял)

08.09.2014 19:36:02
SladeThe

SladeThe

Команда Russian AI Cup

emergency1997

emergency1997

Севастополь

При запуске local runner пишет что ожидание подключения стратегии. Дальше ничего не меняется, т.е. он не предлагает выбрать файл стратегии. Помогите! (Может я что-то не понял)

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

08.09.2014 20:25:50
SladeThe

SladeThe

Команда Russian AI Cup

Ubuntu 14.04 x64, при запуске любого local-runner*.sh что-то запускается, висит в трее, но окошко не открывается. Если запускаю стратегию, то она работает, result.txt записывается, но окошко так и не открывается на протяжении всей работы стратегии.

Сходу сложно сказать. Возможно, связано с какими-то настройками JVM. Попробуйте установить именно Oracle JDK (если ещё нет).

08.09.2014 20:27:34
monnoroch
SladeThe

SladeThe

Команда Russian AI Cup

Сходу сложно сказать. Возможно, связано с какими-то настройками JVM. Попробуйте установить именно Oracle JDK (если ещё нет).

$ java -version java version “1.7.0_67” Java(TM) SE Runtime Environment (build 1.7.0_67-b01) Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

08.09.2014 20:38:36
monnoroch
SladeThe

SladeThe

Команда Russian AI Cup

Сходу сложно сказать. Возможно, связано с какими-то настройками JVM. Попробуйте установить именно Oracle JDK (если ещё нет).

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

08.09.2014 20:42:55
Kangaroo

Kangaroo

МФТИ

readme: веселый копипаст: W - ускорить первого хоккеиста I - ускорить первого хоккеиста NUMPAD_8 - ускорить первого хоккеиста

08.09.2014 21:59:05
max_shinkarenko

max_shinkarenko

Киев

В C# посреди игры вдруг приходит сообщение MessageType.GameOver от local runner. С чем может быть связано?

09.09.2014 2:16:02
brox

Что значит “простые тестовые игры”?

09.09.2014 2:59:19
Anarion

Anarion

Бишкек

Было бы дичайше офигенно иметь возможность в тестовых целях выводить что-нибудь на экран локал-раннера. Хотя-бы цветные точки….

09.09.2014 10:43:28
Anarion

Anarion

Бишкек

Uhuhu

Uhuhu

Москва

как подключить свою стратегию к раннеру?

Скомпилить и запустить. Запускать надо Runner.[ext]

09.09.2014 13:29:32
serlis

serlis

Харьковский НУ им. Каразина

SladeThe

SladeThe

Команда Russian AI Cup

  Необходимо скачать и установить Java 7, а затем добавить в переменную системы PATH <путь_до_папки_Java>\bin     Открыть local-runner.bat в текстовом редакторе и указать полный путь до javaw.  

при запуске local-runner.bat пишет, что не удается найти javaw. Можете написать полную инструкцию как от этого избавиться? 1. установил java (JDK 7 x32) и в переменные среды Path дописал C:\java7\bin 2. в local-runner.bat заменил “.;*;%~dp0/* на ”C:\java7\jdk7\bin\javaw.exe" java устанавливалась в папку C:\java7. что не так?

09.09.2014 15:38:57
SladeThe

SladeThe

Команда Russian AI Cup

serlis

serlis

Харьковский НУ им. Каразина

при запуске local-runner.bat пишет, что не удается найти javaw. Можете написать полную инструкцию как от этого избавиться? 1. установил java (JDK 7 x32) и в переменные среды Path дописал C:\java7\bin 2. в local-runner.bat заменил “.;*;%~dp0/* на ”C:\java7\jdk7\bin\javaw.exe" java устанавливалась в папку C:\java7. что не так?

Очевидно, что не нужно было трогать “.;*;%~dp0/*”

Пункта 1 достаточно. Только непонятно, куда вы установили Java. Судя по полному пути ”C:\java7\jdk7\bin\javaw.exe“, вы установили Java в ”C:\java7\jdk7“. Тогда в PATH надо было добавить ”C:\java7\jdk7\bin“, а не ”C:\java7\jbin" (такая папка вообще существует?).

09.09.2014 16:00:00
admin

admin

Команда Russian AI Cup

serlis

serlis

Харьковский НУ им. Каразина

при запуске local-runner.bat пишет, что не удается найти javaw. Можете написать полную инструкцию как от этого избавиться? 1. установил java (JDK 7 x32) и в переменные среды Path дописал C:\java7\bin 2. в local-runner.bat заменил “.;*;%~dp0/* на ”C:\java7\jdk7\bin\javaw.exe" java устанавливалась в папку C:\java7. что не так?

Если javaw находится в PATH, то ничего заменять в local-runner.bat не надо. Убедитесь, что javaw в PATH. Например, напишите в консольке «javaw» и убедитесь, что вывод не имеет такой или похожий вид: ‘javaw’ is not recognized as an internal or external command, operable program or batch file.

09.09.2014 16:01:19
ky78

ky78

ООО

А можно добавить в Local Runner две опции? 1. отстуствие игроков оппонента в пустой конфигурации (по выбору) 2. задание изначальной конфигурации векторов углов и скоротей, а так же координат всех хоккеистов (желательно с возможность размещения от 1 до 6 на площадке).

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

09.09.2014 18:51:31
ky78

ky78

ООО

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

09.09.2014 18:53:07
Kirill_Tim

Kirill_Tim

NRU ITMO

ky78

ky78

ООО

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

исходники есть. это же jar - его можно разархивировать, а *.class декомпилировать. но вот понять в них что либо не просто :)

09.09.2014 19:48:58
anton-dex

при запуске local-runner.bat пишет “Could not be found the main class: LocalTestRunner.”

09.09.2014 21:18:05
denisx

denisx

Россия

ubuntu/c# всё запускается и работает

09.09.2014 21:33:22
sergey_rotor

Запускаю local-runner, компилирую свой проект, всё равно играют по старой логике. C# Что я делаю не так?

09.09.2014 21:40:11
neoascetic

neoascetic

Калининград

OSX Maverics. Сталкивался кто?

codehockey/local-runner - [master●] » java -version
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

codehockey/local-runner - [master●] » java -jar local-runner.jar local-runner-sync.properties
dyld: lazy symbol binding failed: Symbol not found: _JRSCopyOSVersion
  Referenced from: /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home/jre/lib/lwawt/liblwawt.dylib
  Expected in: flat namespace

dyld: Symbol not found: _JRSCopyOSVersion
  Referenced from: /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home/jre/lib/lwawt/liblwawt.dylib
  Expected in: flat namespace

10.09.2014 0:14:22
demidenko

demidenko

ИМиФИ СФУ

Странный баг: когда один хокеист твоей команды держит шайбу, другой не всегда это “видит”. Расскажу поточнее, написал стратегию, что если хокеист владеет шайбой - ничего не делать. Если владеет шайбой напарник - делать ход назад (move.setSpeedUp(-1)), иначе, делать ход вперёд, смотря на шайбу и пытаться её взять. Запускаю у себя с Empty, через пару секунд ряд из четырёх шариков: empty1,empty2, my1, my2 и my2 добится в спину первому. Дебаг оутпут показал, что я то делаю +, то - скорость. НО, как только начался овертайм, второй дал дёру назад, что собственно нормально. На сайте не тестил и не посылал этот код.

10.09.2014 10:07:10
demidenko

demidenko

ИМиФИ СФУ

demidenko

demidenko

ИМиФИ СФУ

Странный баг: когда один хокеист твоей команды держит шайбу, другой не всегда это “видит”. Расскажу поточнее, написал стратегию, что если хокеист владеет шайбой - ничего не делать. Если владеет шайбой напарник - делать ход назад (move.setSpeedUp(-1)), иначе, делать ход вперёд, смотря на шайбу и пытаться её взять. Запускаю у себя с Empty, через пару секунд ряд из четырёх шариков: empty1,empty2, my1, my2 и my2 добится в спину первому. Дебаг оутпут показал, что я то делаю +, то - скорость. НО, как только начался овертайм, второй дал дёру назад, что собственно нормально. На сайте не тестил и не посылал этот код.

всё нормально, это у меня кривые руки.

10.09.2014 10:18:25
kiwaa

kiwaa

Санкт-Петербург

Будут ли в этом году доступны исходники Runner’a? Все равно разломают же :)

10.09.2014 12:11:12
LeeT

LeeT

Россия

Можно небольшую документацию как запустить 2 локальные стратегии?

10.09.2014 14:34:35
Anarion

Anarion

Бишкек

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

10.09.2014 14:39:50
JackOfShadow

JackOfShadow

КвантумСофт

Дались вам эти исходники? Можно же спокойно и без них обходиться…

10.09.2014 15:51:15
3axap4eHko

3axap4eHko

Intetics

Здравствуйте, а вы могли бы в Localruner добавить возможность установки фона, что бы проще дебажить было? И да, добавьте его сорсы в github )

10.09.2014 16:38:24
Ariant

Проще всем подавай. Стыдно, товарищи.

10.09.2014 16:43:13
DeeCo

DeeCo

Алматы

А можно ли в local-runner поменяться стороной с противником? Не нашёл такой информации или пропустил :(

10.09.2014 18:25:50
amurushkin

amurushkin

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

DeeCo

DeeCo

Алматы

А можно ли в local-runner поменяться стороной с противником? Не нашёл такой информации или пропустил :(

файл properties

10.09.2014 18:28:39
starscream

starscream

Иркутск

LeeT

LeeT

Россия

Можно небольшую документацию как запустить 2 локальные стратегии?

Для запуска двух локальных стратегий в local-runner нужно в файле с настройками для него изменить типы подключаемых стратегий на Local:

p1-type=Local

p2-type=Local

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

python Runner.py localhost 31002 0000000000000000

  • Нули в конце - это токен. Его писать обязятельно, иначе остальные параметры будут игнорироваться.

  • Стратегии подключать по мере возрастания номера порта: сначала 31001 (дефолтный), потом 31002

10.09.2014 20:04:17
LeeT

LeeT

Россия

starscream

starscream

Иркутск

Для запуска двух локальных стратегий в local-runner нужно в файле с настройками для него изменить типы подключаемых стратегий на Local : После этого нужно запустить первую стратегию как обычно, а для второй использовать другой порт и запускать с соответствующими параметрами. Например, для питона будет: …

Я уже нашел решение, я просто пишу на java, не сразу нашел что порт прописан константой в классе Runner (для запуска пришлось создать копию проекта)

10.09.2014 20:43:01
primorial

primorial

Белорусский Государственный Университет Информатики и Радиоэлектроники

Под ubuntu ни с openjdk-7-jre, ни с oracle-7-jre не желает ничего отрисовывать (пустое окно создаётся). Сам матч успешно отрабатывает и результаты записываются в result.txt.

10.09.2014 21:09:31
Anarion

Anarion

Бишкек

Проще всем подавай. Стыдно, товарищи.

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

10.09.2014 21:40:33
...............

Da eto LOL. 2-3 dnya na eto ubil. Strategiya v Local Runer rabotaet korrektno i zabivaet botu minimum 2-3 gola, no rabotaet nekorrektno na sayte protiv takogo zhe bota. Voobshe drugoe povedenie. WTF.

11.09.2014 8:34:26
imbeat

Da eto LOL. 2-3 dnya na eto ubil. Strategiya v Local Runer rabotaet korrektno i zabivaet botu minimum 2-3 gola, no rabotaet nekorrektno na sayte protiv takogo zhe bota. Voobshe drugoe povedenie. WTF.

У вас в Красноярске нет русских клав или русских раскладок в ОС?!

11.09.2014 14:48:54
koldun

Есть ли возможность в Local Runner увеличить время игры, вместо 6000 тиков например 60000?

11.09.2014 20:07:26
serlis

serlis

Харьковский НУ им. Каразина

Пара вопросов: 1. помогите расшифровать строчку результаты “OKSEED 11264772937602331 3 OK2 0 OK” и если я правильно понял что единственные однозначные числа 3 и 0 это счёт. (Причём красные первые.) то никто не знает как сохранять все результаты игр или играть больше тиков? 2. недавно изменили правила игры (если я правильно понял на сайте), что надо скачать заново что бы играть в Local Runner по новым правилам?

11.09.2014 20:30:02
Fireworks

Fireworks

Сбертех

Да, дайте новый раннер под изменённые правила?

11.09.2014 21:06:17
dimoc

dimoc

Минск

serlis

serlis

Харьковский НУ им. Каразина

Пара вопросов: 1. помогите расшифровать строчку результаты “OKSEED 11264772937602331 3 OK2 0 OK” и если я правильно понял что единственные однозначные числа 3 и 0 это счёт. (Причём красные первые.) то никто не знает как сохранять все результаты игр или играть больше тиков? 2. недавно изменили правила игры (если я правильно понял на сайте), что надо скачать заново что бы играть в Local Runner по новым правилам?

SEED можно прописать в local-runner.properties, он используется для инициализации ГСЧ. т.е. можешь сыграть игру в которой рандомы будут такие же

11.09.2014 21:21:43
dimoc

dimoc

Минск

Fireworks

Fireworks

Сбертех

Да, дайте новый раннер под изменённые правила?

его обновили, скачайте заново

11.09.2014 21:22:18
tarsier

tarsier

Akvelon

serlis

serlis

Харьковский НУ им. Каразина

Пара вопросов: 1. помогите расшифровать строчку результаты “OKSEED 11264772937602331 3 OK2 0 OK” и если я правильно понял что единственные однозначные числа 3 и 0 это счёт. (Причём красные первые.) то никто не знает как сохранять все результаты игр или играть больше тиков? 2. недавно изменили правила игры (если я правильно понял на сайте), что надо скачать заново что бы играть в Local Runner по новым правилам?

Он на самом деле криво пробелы расставляет. Можно переписать так:
[OK] [SEED 1126477293760233] [1] [3] [OK] [2] [0] [OK]
или
[Вердикт игры] [seed] [Место 1-й стратегии] [Очки 1-й стратегии] [Вердикт 1-й стратегии] [Место 2-й стратегии] [Очки 2-й стратегии] [Вердикт 2-й стратегии]

11.09.2014 21:40:34
tarsier

tarsier

Akvelon

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

12.09.2014 3:30:58
demidenko

demidenko

ИМиФИ СФУ

imbeat

imbeat

МИЭТ

У вас в Красноярске нет русских клав или русских раскладок в ОС?!

Есть.

12.09.2014 15:52:45
shakhray97

shakhray97

Школа 179 МИОО

OS X Yosemite. Запускаю localrunner.jar. Выдает ошибку file cannot be launched. Стоит Java 8beta.

12.09.2014 18:22:29
M0t0rist

M0t0rist

Брянск

Присоединяюсь к просьбе выше. Возможно ли как то добавить изменение фона в local_runner? Крайне удобно было бы иметь координатную сетку.

12.09.2014 18:58:07
alexx.nazaroff

alexx.nazaroff

Forticom

а как можно в localrunner проверить работу таких фишек как выносливость, и аттрибуты хоккеистов?

12.09.2014 19:11:31
perumeni

а как можно в localrunner проверить работу таких фишек как выносливость, и аттрибуты хоккеистов?

team-size=6 в local-runner.properties. Аттрибуты показываются при зажатом Alt.

12.09.2014 19:38:02
dronov

dronov

Университет ИТМО

При запуске local-runner-а выдаёт java.awt.AWTError: Cannot load AWT toolkit: gnu.java.awt.peer.gtk.GtkToolkit

13.09.2014 2:37:34
Diversus

Diversus

SoftOnIT.RU

А есть ли в local runer возможность провести сразу несколько боев?

13.09.2014 16:58:15
rezanaseh

rezanaseh

Москва

Очень не хватает вывода счета игры в result.txt

13.09.2014 18:34:59
Alnek

Alnek

Санкт-Петербург

Da eto LOL. 2-3 dnya na eto ubil. Strategiya v Local Runer rabotaet korrektno i zabivaet botu minimum 2-3 gola, no rabotaet nekorrektno na sayte protiv takogo zhe bota. Voobshe drugoe povedenie. WTF.

удалось решить? у меня такая же проблема с С++ на сайте

в localrunner’е всё нормально работает, а на сайте как будто углы неправильно считаются

причем делал для проверки простую стратегию на С++ и на Python, с Python’ом всё верно считается и на сайте и в localrunner’е

13.09.2014 22:03:23
...............
Alnek

Alnek

Санкт-Петербург

удалось решить? у меня такая же проблема с С++ на сайте в localrunner’е всё нормально работает, а на сайте как будто углы неправильно считаются причем делал для проверки простую стратегию на С++ и на Python, с Python’ом всё верно считается и на сайте и в localrunner’е

Тоже пишу на С++ и та же проблема с углом на сайте. Сейчас попробую выяснить почему.

14.09.2014 17:01:03
steleal

steleal

Ульяновск

Alnek

Alnek

Санкт-Петербург

удалось решить? у меня такая же проблема с С++ на сайте в localrunner’е всё нормально работает, а на сайте как будто углы неправильно считаются причем делал для проверки простую стратегию на С++ и на Python, с Python’ом всё верно считается и на сайте и в localrunner’е

Local runner после изменения скорости поворота хоккеистов с 2 до 3 градусов обновляли?

14.09.2014 17:41:34
Alnek

Alnek

Санкт-Петербург

steleal

steleal

Ульяновск

Local runner после изменения скорости поворота хоккеистов с 2 до 3 градусов обновляли?

да, но с ним в любом случае всё в порядке, проблема с С++ стратегиями на сайте

14.09.2014 18:02:46
Diversus

Diversus

SoftOnIT.RU

Подскажите пожалуйста. Не могу настроить запуск Local runner со своими стратегиями. В настроечном файле указал: p1-type=Local p2-type=Local

В батнике start javaw -cp “.;*;%~dp0/*” -jar “local-runner.jar” local-runner-sync_Self.properties start Bot1.exe start Bot2.exe

Local Runner запускается и ожидает подключения… Спасибо.

14.09.2014 18:34:09
dantistus

dantistus

Freelance Web & Graphic Designer

Там где-то надо поменять номер порта для второй стратегии, писали где-то об этом, то ли в правилах, то ли в комментариях.

14.09.2014 18:52:24
tjden

tjden

ПУ СургутАСУнефть

а обновление под новое поле когда будет?

14.09.2014 19:54:37
Ermak

Ermak

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

tjden

tjden

ПУ СургутАСУнефть

а обновление под новое поле когда будет?

очевидно, уже.

14.09.2014 20:18:06
Ermak

Ermak

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

Diversus

Diversus

SoftOnIT.RU

Подскажите пожалуйста. Не могу настроить запуск Local runner со своими стратегиями. В настроечном файле указал: p1-type=Local p2-type=Local В батнике start javaw -cp “.;*;%~dp0/*” -jar “local-runner.jar” local-runner-sync_Self.properties start Bot1.exe start Bot2.exe Local Runner запускается и ожидает подключения… Спасибо.

ртфм. в настройках написано же

Начальный номер порта для подключения первой стратегии типа Local.

Для каждой последующей стратегии данного типа номер порта будет увеличен на единицу.

base-adapter-port=31001

14.09.2014 20:19:16
Ermak

Ermak

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

Еще идеально было бы сделать возможность поворачивать руками на маленький угол. Например, зажав shit, поворот будет осуществляться по 1 градусу.

14.09.2014 21:17:02
akoptsov

akoptsov

Москва

Добрый вечер. Меня терзают смутные сомнения по поводу функции getPickUpPuckBaseChance - сейчас она возвращает 0.6, хотя в правилах указана базовая вероятность подбора 160%, то есть 1.6.

Пруфпик

Пруфпик

Цитата из правил:

Если шайба не контролируется другим хоккеистом и находится в состоянии покоя, то базовый шанс установить над ней контроль равен 160%. 
Это значение равномерно уменьшается с ростом скорости шайбы, достигая (но не останавливаясь на) 60% при 20.0 тиках−1 —скорости, 
придаваемой шайбе после удара по ней хоккеиста, находящегося в состоянии покоя

14.09.2014 22:12:53
dmitriy.m

dmitriy.m

Ижевск

Решил погонять на одном и том же seed разные стратегии, но с удивление обнаружил что одна и та же стратегия на одинаковом seed’е выдает разный результат! (result.txt подтверждает что - то стратегия выигрывает, то проигрывает и при этом Seed идентичен).

14.09.2014 23:45:46
skaos

skaos

Санкт-Петербург

Скачал новый LocalRunner с размером поля 1200x800 - теперь просмотр игры сильно тормозит. FPS держится в районе 25-35. Как исправить?

MacOS 10.9, 2.6 GHz core i7

15.09.2014 1:18:04
Alnek

Alnek

Санкт-Петербург

Тоже пишу на С++ и та же проблема с углом на сайте. Сейчас попробую выяснить почему.

решил свою проблему переключившись с ::abs на std::abs, может и вам поможет

15.09.2014 2:58:05
lama

lama

Akademos Inc.

dmitriy.m

dmitriy.m

Ижевск

Решил погонять на одном и том же seed разные стратегии, но с удивление обнаружил что одна и та же стратегия на одинаковом seed’е выдает разный результат! (result.txt подтверждает что - то стратегия выигрывает, то проигрывает и при этом Seed идентичен).

+1.

Когда сталкиваю две своих стратегии, то даже в самом начале игры, когда обе идут прямо на шайбу и пытаются ее взять, первой ее подбирает случайная сторона, несмотря на то, что в properties файле задан фиксированный seed и в result.txt тоже правильный выводится. Из-за этого не получается нормально репродьюсить баги. Кроме того, есть чисто логическое подозрение, что repeater может неправильно работать по этой же причине, но я не проверял.

Товарищи админы, пофиксите, пожалуйста.

15.09.2014 5:33:15
Spun

Spun

Москва

akoptsov

akoptsov

Москва

Добрый вечер. Меня терзают смутные сомнения по поводу функции getPickUpPuckBaseChance - сейчас она возвращает 0.6, хотя в правилах указана базовая вероятность подбора 160%, то есть 1.6. Пруфпик Цитата из правил: Если шайба не контролируется другим хоккеистом и находится в состоянии покоя, то базовый шанс установить над ней контроль равен 160%. Это значение равномерно уменьшается с ростом скорости шайбы, достигая (но не останавливаясь на) 60% при 20.0 тиках−1 —скорости, придаваемой шайбе после удара по ней хоккеиста, находящегося в состоянии покоя

Я об этом уже писал. ShadeThe ответил, что тут действительно получилась ошибка в терминологии, но менять ничего не будут, потому что к этим значениям уже кто-то привязался.

15.09.2014 8:59:44
...............
Alnek

Alnek

Санкт-Петербург

решил свою проблему переключившись с ::abs на std::abs, может и вам поможет

Спасибо, помогло!

15.09.2014 10:19:27
Rebryk

Rebryk

Academic University

Добрый день. При запуске local-runner.sh на Ubuntu выдает ошибку: “Error: Unable to access jarfile local-runner.jar” Кто-нибудь знает как с этим бороться?

15.09.2014 16:57:43
steleal

steleal

Ульяновск

Rebryk

Rebryk

Academic University

Добрый день. При запуске local-runner.sh на Ubuntu выдает ошибку: “Error: Unable to access jarfile local-runner.jar” Кто-нибудь знает как с этим бороться?

попробуй дать на файл права 777, если помогло, значит, проблема с правами доступа к файлу.

15.09.2014 20:05:23
Rebryk

Rebryk

Academic University

steleal

steleal

Ульяновск

попробуй дать на файл права 777, если помогло, значит, проблема с правами доступа к файлу.

Огромное спасибо! Заработало!

15.09.2014 20:55:29
SladeThe

SladeThe

Команда Russian AI Cup

Rebryk

Rebryk

Academic University

Кстати, кто-нибудь знает как поставить разрешение local-runner-а поменьше? У меня на экран не влезает)

В файле настроек есть render-to-screen-scale.

15.09.2014 21:51:37
Rebryk

Rebryk

Academic University

SladeThe

SladeThe

Команда Russian AI Cup

В файле настроек есть render-to-screen-scale.

Большое спасибо.

15.09.2014 23:04:52
mbelov

mbelov

Москва

max_shinkarenko

max_shinkarenko

Киев

В C# посреди игры вдруг приходит сообщение MessageType.GameOver от local runner. С чем может быть связано?

На случай, если кто-то еще потратит какое-то время на выяснение этого факта: дело не в C#, просто для local-runner в конфиге отключена синхронизация рендеринга и просчета игры, поэтому игра проходит за несколько секунд, остальное время вы смотрите просто красивый мультик. Чтобы синхронно дебажить и смотреть рендер надо запускать local-runner-sync. Было бы здорово дописать это в данную статью, а то все сводится к “запуску local-runner”, хотя на самом деле лучше сразу советовать запускать local-runner-sync, если уж считается, что названия батников не нуждаются в объяснении.

16.09.2014 0:30:06
dantistus

dantistus

Freelance Web & Graphic Designer

mbelov

mbelov

Москва

На случай, если кто-то еще потратит какое-то время на выяснение этого факта: дело не в C#, просто для local-runner в конфиге отключена синхронизация рендеринга и просчета игры, поэтому игра проходит за несколько секунд, остальное время вы смотрите просто красивый мультик. Чтобы синхронно дебажить и смотреть рендер надо запускать local-runner-sync. Было бы здорово дописать это в данную статью, а то все сводится к “запуску local-runner”, хотя на самом деле лучше сразу советовать запускать local-runner-sync, если уж считается, что названия батников не нуждаются в объяснении.

Можно запускать обычный локал_раннер, только в файле настроек установить render-to-screen-sync=true

16.09.2014 2:04:34
sergyn15

Кто подскажет как запустить Local runner . У меня рунту.на базе убунты 12-04.

16.09.2014 8:59:40
sergyn15

Вот вывод терминала по запуску раннер. Что тут может быть не то ?

sergei@sergei-K50C:~$ cd /home/sergei/Загрузки/local-runner sergei@sergei-K50C:~/Загрузки/local-runner$ ./local-runner.sh ./local-runner.sh: 2: ./local-runner.sh: pushd: not found ./local-runner.sh: 4: ./local-runner.sh: popd: not found sergei@sergei-K50C:~/Загрузки/local-runner$ Exception in thread “main” java.lang.UnsupportedClassVersionError: LocalTestRunner : Unsupported major.minor version 51.0     at java.lang.ClassLoader.defineClass1(Native Method)     at java.lang.ClassLoader.defineClass(ClassLoader.java:643)     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)     at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)     at java.net.URLClassLoader.access$000(URLClassLoader.java:73)     at java.net.URLClassLoader$1.run(URLClassLoader.java:212)     at java.security.AccessController.doPrivileged(Native Method)     at java.net.URLClassLoader.findClass(URLClassLoader.java:205)     at java.lang.ClassLoader.loadClass(ClassLoader.java:323)     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)     at java.lang.ClassLoader.loadClass(ClassLoader.java:268) Could not find the main class: LocalTestRunner. Program will exit.

16.09.2014 10:19:56
sergyn15

во всем разобрался . но теперь открывается окно . Ожидается подключения стратегии . .и на этом все. что это?

16.09.2014 12:18:36
dimoc

dimoc

Минск

во всем разобрался . но теперь открывается окно . Ожидается подключения стратегии . .и на этом все. что это?

явно надо подключить(запустить) стратегию

16.09.2014 13:26:18
erko

erko

Первое Кредитное Бюро

Как узнать статус игры? Был ли только что гол, и дальше можно ждать нового раунда (можно запилить анимацию :)

17.09.2014 9:44:18
dimoc

dimoc

Минск

erko

erko

Первое Кредитное Бюро

Как узнать статус игры? Был ли только что гол, и дальше можно ждать нового раунда (можно запилить анимацию :)

Player.isJustMissedGoal и Player.isJustScoredGoal

17.09.2014 9:58:57
erko

erko

Первое Кредитное Бюро

dimoc

dimoc

Минск

Player.isJustMissedGoal и Player.isJustScoredGoal

Спасибо

17.09.2014 10:17:10
lama

lama

Akademos Inc.

Небольшой реквест к админам: Если можно, добавьте, пожалуйста, параметр в properties, отвечающий за то, с какой стороны поля будут p1 и p2. А то когда обе стратегии – Local, то начинается возня с портами, чтобы поменять их местами. А это нужно, ибо иногда проскакивают баги, которые случаются только если ты оказываешься с противоположной стороны.

17.09.2014 16:05:58
MagAlex

MagAlex

Нижний Новгород

lama

lama

Akademos Inc.

Небольшой реквест к админам: Если можно, добавьте, пожалуйста, параметр в properties, отвечающий за то, с какой стороны поля будут p1 и p2. А то когда обе стратегии – Local, то начинается возня с портами, чтобы поменять их местами. А это нужно, ибо иногда проскакивают баги, которые случаются только если ты оказываешься с противоположной стороны.

А в чём сложность поменять порты в настройках local-runner или сделать 2 файла конфигурации?

17.09.2014 16:17:30
lama

lama

Akademos Inc.

MagAlex

MagAlex

Нижний Новгород

А в чём сложность поменять порты в настройках local-runner или сделать 2 файла конфигурации?

Я запускаю стратегию из IDEA. В debug/run конфигурации я добавил в before launch секцию, запускающую мой батник. этот батник стартует localrunner и мою старую стратегию (с которой я сталкиваю новую) на порту 31000. Затем ранится новая на 31001. Теоретически, чтобы поменять их местами, должно было бы быть достаточно поменять base-adapter-port на 31001, а старую стратегию на 31002, но на практике это не работает – local runner зависает на “ожидании подключения стратегии”. может быть потому, что базовый порт - 31001, а первой подконнектиться пытается 31002, не знаю точно. Возможно, в Idea есть какие-то более удобные способы всё это запускать. Я на java, кроме как на Russian AI Cup, больше ничего никогда не писал, так что не знаю, как это сделать правильнее всего. Если сталкиваешь два откомппилированных jar файла – тогда проблем нет, все конфигами решается. а вот когда ранишь из IDEA – тогда такие вот траблы получаются.

17.09.2014 16:47:18
alevlaber

alevlaber

Костанай

lama

lama

Akademos Inc.

Я запускаю стратегию из IDEA. В debug/run конфигурации я добавил в before launch секцию, запускающую мой батник. этот батник стартует localrunner и мою старую стратегию (с которой я сталкиваю новую) на порту 31000. Затем ранится новая на 31001. Теоретически, чтобы поменять их местами, должно было бы быть достаточно поменять base-adapter-port на 31001, а старую стратегию на 31002, но на практике это не работает – local runner зависает на “ожидании подключения стратегии”. может быть потому, что базовый порт - 31001, а первой подконнектиться пытается 31002, не знаю точно. Возможно, в Idea есть какие-то более удобные способы всё это запускать. Я на java, кроме как на Russian AI Cup, больше ничего никогда не писал, так что не знаю, как это сделать правильнее всего. Если сталкиваешь два откомппилированных jar файла – тогда проблем нет, все конфигами решается. а вот когда ранишь из IDEA – тогда такие вот траблы получаются.

Может в батнике задержку указать? или я неправильно понял.

17.09.2014 18:18:09
lama

lama

Akademos Inc.

alevlaber

alevlaber

Костанай

Может в батнике задержку указать? или я неправильно понял.

в батнике есть задержка. просто IDEA в начале выполняет батник, а затем, после завершения, ранит стратегию. соответственно, выходит, что в начале должны запуститься localrunner и jar с ботом-противником и только после этого выполнится мой код. задержка не поможет, т.к. IDEA все равно будет ждать завершения. можно пробовать выкручиваться какими-то извращениями типа того, что мы стартуем localrunner и отдельным процессам загружаем еще один батник, который ждет несколько секунд и стартует бота-противника, рассчитывая, что за эти несколько секунд первый батник завершится и IDEA успеет запустить мою стратегию, но хотелось-бы по-нормальному это делать.

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

17.09.2014 18:27:19
alevlaber

alevlaber

Костанай

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

17.09.2014 18:48:22
alexprotoss

alexprotoss

Долгопрудный

во всем разобрался . но теперь открывается окно . Ожидается подключения стратегии . .и на этом все. что это?

Как решилась проблема? =) заранее спасибо.

17.09.2014 19:18:29
sergyn15
alexprotoss

alexprotoss

Долгопрудный

Как решилась проблема? =) заранее спасибо.

Добрый день. В моем дистрибутиве (рунту) изначально не установлена java . я скачал и установил ее отсюда. http://www.linuxrussia.com/2013/04/oracle-java-7-ubuntu-1304-1204-1210.html . После этого раннер открылся и стал ждать когда я запущу стратегию. Далее скачал с сайта языковый пакет cpp-cgdk  и стал с ним работать.Я не знаю писать ли подробности,нужны ли они вам. Редактирую код в geany , компилирую, появляется MyStrategy ,уже обновленная, и на моем поле появляются игроки. Запуск игры. 1. В запускаю local-runner ,он у меня в загрузках Открывается главное окно и ожидает программу. 2.В Загрузки захожу в cpp-cgdk 3.Запускаю MyStrategy 4 Откріваю MyStrategy.срр Он открвывается в geany и начинаю редактировать и писать код. 5.Снова в папке сpp-cgdk запукскаю compile-g++.sh После этого формируется новый файл MyStrategy его и открываю после открытия окна раннера с новыми функциями игроков. .Еще тонкость .во всех исполняемых файлах дописал в редакторе первой строчкой #!/bin/sh .Командой chmod +x compile-g++.sh я добавил права сомпилятору. Ну это вкратце. Хочу с прискорбием признать ,что дальше этого не продвидулся . В этой игре первый раз и в с++ очень мало опыта,хотя очень хочется попробовать.Я разбираюсь ,как вообще стронуть моего игрока и пока не могу… Сергей.

17.09.2014 21:50:30
bogomolov.yuriy

bogomolov.yuriy

ТУСУР

Доброе время суток! Столкнулся с тем, что не могу запустить локальную игру. Local-runner запускается и ожидает подключения стратегии. Код пишу на C++ в среде Code::Blocks. При попытке компиляции выдаёт кучу ошибок типа: “…\Runner.o:Runner.cpp|| undefined reference to `RemoteProcessClient::RemoteProcessClient(std::string, int)’”. И так с каждой функцией, объявленной в другом модуле. Попытался скомпилировать на C++ Builder - находит ошибку в синтаксисе в файле ‘Host.h’. Что делать? Не отправлять же всё время на сайт (долгое ожидание проверки).

18.09.2014 13:23:31
Flekon

Flekon

Москва

Добавьте пожалуйста в LocalRunner возможность указывать с какой стороны поля моя команда будет начинать. А то всегда начинаешь справа, а оттестировать другую сторону получается только залив стратегию…

18.09.2014 14:33:55
Flekon

Flekon

Москва

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

18.09.2014 14:38:12
steleal

steleal

Ульяновск

Flekon

Flekon

Москва

Добавьте пожалуйста в LocalRunner возможность указывать с какой стороны поля моя команда будет начинать. А то всегда начинаешь справа, а оттестировать другую сторону получается только залив стратегию…

залезте в local-runner.propertys и будет Вам счастье. Можно поменять сторону, можно запускать по две своих стратегии, единственно, во втором случае вторую стратегию надо запускать на другом порту.

18.09.2014 14:42:40
Flekon

Flekon

Москва

Flekon

Flekon

Москва

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

Все, я нашел как это сделать :)

18.09.2014 15:13:19
Flekon

Flekon

Москва

steleal

steleal

Ульяновск

залезте в local-runner.propertys и будет Вам счастье. Можно поменять сторону, можно запускать по две своих стратегии, единственно, во втором случае вторую стратегию надо запускать на другом порту.

Ок, спасибо! Я уже и сам нашел.

18.09.2014 15:13:44
bogomolov.yuriy

bogomolov.yuriy

ТУСУР

bogomolov.yuriy

bogomolov.yuriy

ТУСУР

Доброе время суток! Столкнулся с тем, что не могу запустить локальную игру. Local-runner запускается и ожидает подключения стратегии. Код пишу на C++ в среде Code::Blocks. При попытке компиляции выдаёт кучу ошибок типа: “…\Runner.o:Runner.cpp|| undefined reference to `RemoteProcessClient::RemoteProcessClient(std::string, int)’”. И так с каждой функцией, объявленной в другом модуле. Попытался скомпилировать на C++ Builder - находит ошибку в синтаксисе в файле ‘Host.h’. Что делать? Не отправлять же всё время на сайт (долгое ожидание проверки).

В Гугле нашёл информацию, что это, возможно, “linking error”. Сделал всё по устранению этой ошибки (создание проекта и т.д.), и эти ошибки перестали выскакивать. Зато он нашёл кучу ошибок в исходных файлах, скачанных со страницы с языковыми пакетами, например, в “Host.h” при определении разрядности системы для x86 объявлялись типы int64 и uint64 вместо int32 и uint32, из-за чего в другом модуле возникало сообщение о несуществовании типа uint32. И ещё множество других ошибок.

18.09.2014 16:26:49
bogomolov.yuriy

bogomolov.yuriy

ТУСУР

bogomolov.yuriy

bogomolov.yuriy

ТУСУР

В Гугле нашёл информацию, что это, возможно, “linking error”. Сделал всё по устранению этой ошибки (создание проекта и т.д.), и эти ошибки перестали выскакивать. Зато он нашёл кучу ошибок в исходных файлах, скачанных со страницы с языковыми пакетами, например, в “Host.h” при определении разрядности системы для x86 объявлялись типы int64 и uint64 вместо int32 и uint32, из-за чего в другом модуле возникало сообщение о несуществовании типа uint32. И ещё множество других ошибок.

Вопрос перенесён на форум: http://russianaicup.ru/forum/index.php?topic=299.0

18.09.2014 16:34:28
lama

lama

Akademos Inc.

Еще маленький реквест – если можно, добавьте пожалуйста в localrunner клавишу покадрового воспроизведения. Ну т.е., стоя на паузе, нажали клавишу – выполнился один ход и снова стали на паузу. Часто нужно покадрово просматривать, что происходит, так что приходится даблпресить пробел каждый кадр :)

19.09.2014 14:58:24
mikhail_test

mikhail_test

Екатеринбург

lama

lama

Akademos Inc.

Еще маленький реквест – если можно, добавьте пожалуйста в localrunner клавишу покадрового воспроизведения. Ну т.е., стоя на паузе, нажали клавишу – выполнился один ход и снова стали на паузу. Часто нужно покадрово просматривать, что происходит, так что приходится даблпресить пробел каждый кадр :)

можно сделать паузу по id хоккеиста. тогда будет одна пауза на один тик.

19.09.2014 15:11:29
lama

lama

Akademos Inc.

mikhail_test

mikhail_test

Екатеринбург

можно сделать паузу по id хоккеиста. тогда будет одна пауза на один тик.

не понял ответ. 1. каким образом можно сделать паузу по id? стратегия не имеет доступа к localrunner-у ведь 2. каким образом это решало бы проблему? я не знаю, может я не совсем понятно выразился. речь шла о клавише, грубо говоря, аналогичной по визуальному эффекту стрелке вправо при просмотре боев на сайте. но только на сайте она, кажется, на 2 тика перематывает, а нужно на один. вот в локал ранере стрелка вправо как раз не задействована, можно на нее повесить.

19.09.2014 15:21:56
alevlaber

alevlaber

Костанай

lama

lama

Akademos Inc.

не понял ответ. 1. каким образом можно сделать паузу по id? стратегия не имеет доступа к localrunner-у ведь 2. каким образом это решало бы проблему? я не знаю, может я не совсем понятно выразился. речь шла о клавише, грубо говоря, аналогичной по визуальному эффекту стрелке вправо при просмотре боев на сайте. но только на сайте она, кажется, на 2 тика перематывает, а нужно на один. вот в локал ранере стрелка вправо как раз не задействована, можно на нее повесить.

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

19.09.2014 15:27:41
mikhail_test

mikhail_test

Екатеринбург

lama

lama

Akademos Inc.

не понял ответ. 1. каким образом можно сделать паузу по id? стратегия не имеет доступа к localrunner-у ведь 2. каким образом это решало бы проблему? я не знаю, может я не совсем понятно выразился. речь шла о клавише, грубо говоря, аналогичной по визуальному эффекту стрелке вправо при просмотре боев на сайте. но только на сайте она, кажется, на 2 тика перематывает, а нужно на один. вот в локал ранере стрелка вправо как раз не задействована, можно на нее повесить.

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

19.09.2014 16:36:07
lama

lama

Akademos Inc.

mikhail_test

mikhail_test

Екатеринбург

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

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

19.09.2014 16:41:43
lama

lama

Akademos Inc.

SladeThe, а Вы что скажете о последнем реквесте и о предыдущем, насчет смены сторон поля в конфиге?

19.09.2014 16:45:48
sergyn15

В прошлой игре http://2012.russianaicup.ru/p/quick был простенький образец стратегии и очень жаль ,что в этом году такого нет . Было бы большим подспорьем начинающим программистам и мне в том числе…………

19.09.2014 18:48:18
kipar

kipar

ООО Доминанта

В прошлой игре http://2012.russianaicup.ru/p/quick был простенький образец стратегии и очень жаль ,что в этом году такого нет . Было бы большим подспорьем начинающим программистам и мне в том числе…………

Вы не поверите… http://russianaicup.ru/p/quick

19.09.2014 18:51:54
Harm

В прошлой игре http://2012.russianaicup.ru/p/quick был простенький образец стратегии и очень жаль ,что в этом году такого нет . Было бы большим подспорьем начинающим программистам и мне в том числе…………

А это что?

19.09.2014 18:53:16
sergyn15

Это ж на java ,а я с++ только осваиваю…… Ну да ладно . Вопрос снят.

19.09.2014 19:01:45
alberist

alberist

СевКавГТУ

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

19.09.2014 19:54:09
dantistus

dantistus

Freelance Web & Graphic Designer

Это ж на java ,а я с++ только осваиваю…… Ну да ладно . Вопрос снят.

В правилах (PDF скачать надо: http://russianaicup.ru/s/1411044630194/assets/documentation/codehockey2014-docs.pdf?rnd ) есть примеры реализации на всех поддерживаемых языках.

19.09.2014 21:44:32
sergyn15
dantistus

dantistus

Freelance Web & Graphic Designer

В правилах (PDF скачать надо: http://russianaicup.ru/s/1411044630194/assets/documentation/codehockey2014-docs.pdf?rnd ) есть примеры реализации на всех поддерживаемых языках.

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

19.09.2014 21:53:25
dantistus

dantistus

Freelance Web & Graphic Designer

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

Работайте, учитесь и все получится!

19.09.2014 22:02:05
lexer

lexer

Тула

прям хорошие новости с последним обновлением local-runnera, только вот пораньше бы его

24.09.2014 14:40:27
alevlaber

alevlaber

Костанай

lexer

lexer

Тула

прям хорошие новости с последним обновлением local-runnera, только вот пораньше бы его

Да, пораньше бы) Но зато может в следующем году сразу будет доступно.

24.09.2014 14:59:19
Bibr

Bibr

Майкоп

Можно ли сделать, чтобы в result попадала инфа о счёте игры? Ввиду возможности увеличивать количество тиков до 1000000, было бы удобно судить об эффективности стратегии по счёту.

25.09.2014 14:01:17
Cooler

Cooler

Минск

Пытаюсь запустить в консольном локал-раннере две свои стратегии. Первая вроде как подключается на 31001 нормально, а вот вторая виснет на чтении данных из сокета. Т.е. соединение на порт 31002 устанавливается, а дальше все - бесконечное ожидание (с 100% загрузкой ядра). TCPView показывает, что соединение сразу же после состояния ESTABLISHED переходит в состоянии CLOSE_WAIT.

25.09.2014 20:23:49
albynos

albynos

Ростов-На-Дону

Cooler

Cooler

Минск

Пытаюсь запустить в консольном локал-раннере две свои стратегии. Первая вроде как подключается на 31001 нормально, а вот вторая виснет на чтении данных из сокета. Т.е. соединение на порт 31002 устанавливается, а дальше все - бесконечное ожидание (с 100% загрузкой ядра). TCPView показывает, что соединение сразу же после состояния ESTABLISHED переходит в состоянии CLOSE_WAIT.

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

25.09.2014 21:15:49
Cooler

Cooler

Минск

albynos

albynos

Ростов-На-Дону

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

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

25.09.2014 22:13:08
Cooler

Cooler

Минск

А есть ли возможность запустить Локал-Раннер так, чтобы он не создавал никакого окна - ни консольного, ни графического? Чтобы можно было запустить в цикле свои стратегии и спокойно чем-нибудь заниматься, пока оно там в фоне сражается. Все-равно ведь он в консоль ничего не пишет…

25.09.2014 23:01:21
albynos

albynos

Ростов-На-Дону

ну если лениво писать свой запускатор и делать sw_hide можно запускать через start /MIN

26.09.2014 1:02:03
Cooler

Cooler

Минск

albynos

albynos

Ростов-На-Дону

ну если лениво писать свой запускатор и делать sw_hide можно запускать через start /MIN

Отличный вариант, спасибо! :)

26.09.2014 9:20:34
Bibr

Bibr

Майкоп

Подскажите, пожалуйста, новичку, как запускать две разных стратегии)) Я осваиваю Java. Среда разработки - Idea.

Объясните, как создать exe файлы в Idea. Не нашёл в ней такого. И создание jar тоже не вижу. Я так понял Idea компилирует некие .class файлы. Подскажите, что должно быть в батниках, чтобы запускать стратегии с файлами *.class ? Или как скомпилировать из Idea .exe файлы?

Сейчас получается запускать только две одинаковых стратегии, изменив для подключения второй прям в коде класса runner порт на 31002. Это уныло :-[ :-\ Только не предлагайте, пожалуйста, переходить на другой язык, устанавливать другую IDE итд. Спасибо.

П.с. что с форумом? Пробую отправить сообщение с разных браузеров - 0.

27.09.2014 19:09:22
nop

nop

БГУ

Bibr

Bibr

Майкоп

Подскажите, пожалуйста, новичку, как запускать две разных стратегии)) Я осваиваю Java. Среда разработки - Idea. Объясните, как создать exe файлы в Idea. Не нашёл в ней такого. И создание jar тоже не вижу. Я так понял Idea компилирует некие .class файлы. Подскажите, что должно быть в батниках, чтобы запускать стратегии с файлами *.class ? Или как скомпилировать из Idea .exe файлы? …

Сохраняйте сообщение на всякий случай в другом приложении и жмите “отправить” пока не отправится. У меня иногла получается раза с десятого. Будто форум специально жалобщиков фильтрует :) А запускать джава-файлы нужно, не поверите, джавой! Посмотрите bat-файлы, которые запускают local-runner, например.

27.09.2014 21:41:50
Bibr

Bibr

Майкоп

nop

nop

БГУ

Сохраняйте сообщение на всякий случай в другом приложении и жмите “отправить” пока не отправится. У меня иногла получается раза с десятого. Будто форум специально жалобщиков фильтрует :) А запускать джава-файлы нужно, не поверите, джавой! Посмотрите bat-файлы, которые запускают local-runner, например.

смотрел. там файлы .jar а не .class

28.09.2014 18:59:08
ns_serg

ns_serg

ООО "Продстар Торговый Дом"

Bibr

Bibr

Майкоп

Подскажите, пожалуйста, новичку, как запускать две разных стратегии)) Я осваиваю Java. Среда разработки - Idea. Объясните, как создать exe файлы в Idea. Не нашёл в ней такого. И создание jar тоже не вижу. Я так понял Idea компилирует некие .class файлы. Подскажите, что должно быть в батниках, чтобы запускать стратегии с файлами *.class ? Или как скомпилировать из Idea .exe файлы? …

start java -cp “.;*;%~dp0/*” -jar “local-runner.jar” local-runner-console.properties start java -classpath C:\Users\Sergey\Desktop\CodecupHockey\java-cgdk\java-cgdk\out\production\java-cgdk3\ Runner java -classpath C:\Users\Sergey\Desktop\CodecupHockey\java-cgdk\java-cgdk\out\production\java-cgdk\ Runner Запускается матч между Runner.class из папки \java-cgdk3\ и \java-cgdk\ Первая откомпилирована на порт 30001, вторая на порт 30002

30.09.2014 1:42:39
ns_serg

ns_serg

ООО "Продстар Торговый Дом"

ns_serg

ns_serg

ООО "Продстар Торговый Дом"

start java -cp “.;*;%~dp0/*” -jar “local-runner.jar” local-runner-console.properties start java -classpath C:\Users\Sergey\Desktop\CodecupHockey\java-cgdk\java-cgdk\out\production\java-cgdk3\ Runner java -classpath C:\Users\Sergey\Desktop\CodecupHockey\java-cgdk\java-cgdk\out\production\java-cgdk\ Runner Запускается матч между Runner.class из папки \java-cgdk3\ и \java-cgdk\ Первая откомпилирована на порт 30001, вторая на порт 30002

Форум переводы строки убрал. Второй “start java -classpath” и последний “java -classpath” - с новой строки

30.09.2014 1:46:09
Bibr

Bibr

Майкоп

ns_serg

ns_serg

ООО "Продстар Торговый Дом"

Форум переводы строки убрал. Второй “start java -classpath” и последний “java -classpath” - с новой строки

Спасибо. jar из Idea всё-таки можно делать. Если у кого возникнет подобный вопрос - вот инструкция, как. http://forum.vingrad.ru/forum/topic-305462.html

30.09.2014 7:36:52
SladeThe

SladeThe

Команда Russian AI Cup

ns_serg

ns_serg

ООО "Продстар Торговый Дом"

Форум переводы строки убрал. Второй “start java -classpath” и последний “java -classpath” - с новой строки

Если начинать строки абзаца с четырёх пробелов, то Markdown сохранит форматирование и переводы строк. Вот так:

start java -cp “.;*;%~dp0/*” -jar “local-runner.jar” local-runner-console.properties
start java -classpath C:\Users\Sergey\Desktop\CodecupHockey\java-cgdk\java-cgdk\out\production\java-cgdk3\ Runner
java -classpath C:\Users\Sergey\Desktop\CodecupHockey\java-cgdk\java-cgdk\out\production\java-cgdk\ Runner

30.09.2014 12:14:46
MagAlex

MagAlex

Нижний Новгород

В новой версии local runner не работает замена хоккеистов :(

06.10.2014 15:04:28
ThermIt

ThermIt

Piano.io

MagAlex

MagAlex

Нижний Новгород

В новой версии local runner не работает замена хоккеистов :(

Сегодня скачивал, всё работает.

06.10.2014 15:06:15
Ermak

Ermak

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

MagAlex

MagAlex

Нижний Новгород

В новой версии local runner не работает замена хоккеистов :(

Работает, с самого начала работает. “Ты просто не умеешь их готовить”

06.10.2014 15:25:16
ThermIt

ThermIt

Piano.io

При swap-sides=true зона замены исчезает.

06.10.2014 15:47:23
MagAlex

MagAlex

Нижний Новгород

ThermIt

ThermIt

Piano.io

При swap-sides=true зона замены исчезает.

Подтверждаю. При swap-sides=true замена хоккеистов не проходит.

06.10.2014 15:59:44
Sanda

Sanda

JetBrains

ThermIt

ThermIt

Piano.io

При swap-sides=true зона замены исчезает.

Кажется, она не исчезает - она просто забывает swap-нуться. С чужой половины поля хоккеисты заменяются (: Радости от этого, правда, никакой.

06.10.2014 16:34:06
DenGodunov
SladeThe

SladeThe

Команда Russian AI Cup

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

Что значит запустить свою стратегию?

09.10.2014 13:25:26
Volandpro

Volandpro

Москва

Что значит запустить свою стратегию?

нажать f5 в вижуал студио(или где Вы там прогаете)

09.10.2014 15:10:40
DenGodunov

Использую стандартный IDLE, запустил в нем свой скрипт, но это никак не повлияло на local runner.

09.10.2014 15:16:49
lama

lama

Akademos Inc.

Пара предложений по поводу локал раннера на будущий год: * в 2011-м в муравьях была возможность поднять свой сервер, к которому по TCP коннектились боты и отдавали команды. т.е. боты работали на своих комьютерах и только отсылали команды удаленно. это было очень удобно т.к. позволяло постоянно тестировать свои изменения против других людей, не релизя их и в гораздо больших объемах, чем 2 игры в 5 минут. у меня временами, помню, стояло штук по 5-6 потоков с немного отличающимися версиями бота на домашнем компе и еще столько же на рабочем. нам это было бы очень удобно, а вам бы позволило частично разгрузить песочницу т.к. там бы вручную создавали игры только если бы хотели против кого-то конкретного сыграть. * насчет дебаг отрисовки – в этом году вы добавили поддержку плагинов. это хороший шаг, но сомневаюсь, что для многих людей они оказались полезными, т.к. нет коммуникации между локал раннером и ботом. было бы отлично, если бы в следующем году вы добавили какой-то API отрисовки и соответственно, возможность со стороны бота отправлять каждый тик набор команд для рисования.

12.10.2014 18:25:27
Recar

Recar

Киев

Опять “отказ тестирования” при попытке отправить версию

12.10.2014 19:12:33
Recar

Recar

Киев

Залезло со второй попытки

12.10.2014 19:14:26
ud1

ud1

Химки

lama

lama

Akademos Inc.

Пара предложений по поводу локал раннера на будущий год: * в 2011-м в муравьях была возможность поднять свой сервер, к которому по TCP коннектились боты и отдавали команды. т.е. боты работали на своих комьютерах и только отсылали команды удаленно. это было очень удобно т.к. позволяло постоянно тестировать свои изменения против других людей, не релизя их и в гораздо больших объемах, чем 2 игры в 5 минут. у меня временами, помню, стояло штук по 5-6 потоков с немного отличающимися версиями бота на домашнем компе и еще столько же на рабочем. нам это было бы очень удобно, а вам бы позволило частично разгрузить песочницу т.к. там бы вручную создавали игры только если бы хотели против кого-то конкретного сыграть. * насчет дебаг отрисовки – в этом году вы добавили поддержку плагинов. это хороший шаг, но сомневаюсь, что для многих людей они оказались полезными, т.к. нет коммуникации между локал раннером и ботом. было бы отлично, если бы в следующем году вы добавили какой-то API отрисовки и соответственно, возможность со стороны бота отправлять каждый тик набор команд для рисования.

По отрисовки как-то сомнительно, это какое же апи надо, чтоб учесть все базовые случаи?

12.10.2014 19:15:04
EPJ

EPJ

ud1

ud1

Химки

По отрисовки как-то сомнительно, это какое же апи надо, чтоб учесть все базовые случаи?

Текст, массив вершин, заливка. Было бы доствточно

12.10.2014 19:21:42
mortido

mortido

Иваново

ud1

ud1

Химки

По отрисовки как-то сомнительно, это какое же апи надо, чтоб учесть все базовые случаи?

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

12.10.2014 19:23:19
EPJ

Текст, массив вершин, заливка. Было бы доствточно

Про сервер тоже по-моему прекраная мысль

12.10.2014 19:23:43
ud1

ud1

Химки

EPJ

EPJ

Текст, массив вершин, заливка. Было бы доствточно

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

12.10.2014 19:28:58
imwode

imwode

Красногорск

Я вообще крамольную вещь скажу - в следующем году тупо отдавайте следующее состояние объекта при заданных параметрах, т.е. запилите, условно говоря, puck.getNextState() и hockeyist.getNextState(move). Тогда это будет реально AI соревнование, а не втыкание на консольный вывод сутками в попытках понять “че за нафик здесь происходит?!?!?!???”

12.10.2014 19:29:05
imwode

imwode

Красногорск

imwode

imwode

Красногорск

Я вообще крамольную вещь скажу - в следующем году тупо отдавайте следующее состояние объекта при заданных параметрах, т.е. запилите, условно говоря, puck.getNextState() и hockeyist.getNextState(move). Тогда это будет реально AI соревнование, а не втыкание на консольный вывод сутками в попытках понять “че за нафик здесь происходит?!?!?!???”

И ли, если жизненно важно, чтобы это было “как в жизни” - рандомизируйте в небольших пределах столкновения, чтобы ни у кого не было преимущества через разбор исходников движка или реверса локалраннера. Тогда только хардкор!

12.10.2014 19:31:47
EPJ

EPJ

ud1

ud1

Химки

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

Кстати да.

12.10.2014 19:32:45
ud1

ud1

Химки

imwode

imwode

Красногорск

И ли, если жизненно важно, чтобы это было “как в жизни” - рандомизируйте в небольших пределах столкновения, чтобы ни у кого не было преимущества через разбор исходников движка или реверса локалраннера. Тогда только хардкор!

Вот этого не надо, чем меньше рандома, тем лучше.

12.10.2014 19:36:31
lama

lama

Akademos Inc.

ud1

ud1

Химки

По отрисовки как-то сомнительно, это какое же апи надо, чтоб учесть все базовые случаи?

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

ну либо, как сказали ниже, позволить передавать кастомные данные в этот самый плагин отрисовки

12.10.2014 19:43:16
lama

lama

Akademos Inc.

а, так это ты же и сказал про кастомные данные))

12.10.2014 19:44:00
EPJ

EPJ

imwode

imwode

Красногорск

Я вообще крамольную вещь скажу - в следующем году тупо отдавайте следующее состояние объекта при заданных параметрах, т.е. запилите, условно говоря, puck.getNextState() и hockeyist.getNextState(move). Тогда это будет реально AI соревнование, а не втыкание на консольный вывод сутками в попытках понять “че за нафик здесь происходит?!?!?!???”

Исследование физических процессов мира - это така фишка russianaicup. Наверно на это вряд ли пойдут

12.10.2014 19:49:41
imwode

imwode

Красногорск

EPJ

EPJ

Исследование физических процессов мира - это така фишка russianaicup. Наверно на это вряд ли пойдут

ну, извините, реверс локалраннера - это не исследование физических процессов. Либо сделайте их нормальными физическими, либо. когда там костыль на костыле, убирайте такую “фишку”. Я вот честно скажу - у меня первая версия содержала формулу для расчета силы трения из учебника физики. Если бы это было применимо - это было бы исследование физпроцессов. А так - пара дней коту под хвост.

13.10.2014 9:50:52
Bibr

Bibr

Майкоп

а я вот совсем не понял, как юзать этот плагин? Не хватает знаний, видимо. Есть в той папке та же модель, что в языковом пакете, есть ещё дополнительно какой-то LocalTestRendererListener. И что с ним делать???

13.10.2014 10:08:23
steleal

steleal

Ульяновск

Bibr

Bibr

Майкоп

а я вот совсем не понял, как юзать этот плагин? Не хватает знаний, видимо. Есть в той папке та же модель, что в языковом пакете, есть ещё дополнительно какой-то LocalTestRendererListener. И что с ним делать???

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

13.10.2014 10:26:47
EPJ

EPJ

imwode

imwode

Красногорск

ну, извините, реверс локалраннера - это не исследование физических процессов. Либо сделайте их нормальными физическими, либо. когда там костыль на костыле, убирайте такую “фишку”. Я вот честно скажу - у меня первая версия содержала формулу для расчета силы трения из учебника физики. Если бы это было применимо - это было бы исследование физпроцессов. А так - пара дней коту под хвост.

В моих словах по поводу “исследования” был небольшой сарказм, да простят меня организаторы )) У меня вообще нет никаких предсказаний. был бы “графический” отладчик - можно было бы подумать… а так сидеть смотреть в консоль и пытаться понять что к чему - никакого желания. Хотя понятно, что без этого трудно добиться каких либо результатов

13.10.2014 11:04:02
Bibr

Bibr

Майкоп

steleal

steleal

Ульяновск

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

Открыть, дописать нужное (что хотите рисовать)

а вот тут можно чууууть-чуть поподробнее. Или хотя бы направить в нужное русло.
Например, хочу кружочек =)))

13.10.2014 13:13:32
steleal

steleal

Ульяновск

Bibr

Bibr

Майкоп

а вот тут можно чууууть-чуть поподробнее. Или хотя бы направить в нужное русло. Например, хочу кружочек =)))

Если Вы открыли LocalTestRendererListener.java, то, может быть обратили внимание на строки: for (Hockeyist hockeyist : world.getHockeyists()) { graphics.drawArc((int) hockeyist.getX() - 50, (int) hockeyist.getY() - 50, 100, 100, 0, 360); } Вот они для каждого хоккеиста рисуют кружочек с радиусом 100

13.10.2014 15:12:45
nop

nop

БГУ

imwode

imwode

Красногорск

ну, извините, реверс локалраннера - это не исследование физических процессов. Либо сделайте их нормальными физическими, либо. когда там костыль на костыле, убирайте такую “фишку”. Я вот честно скажу - у меня первая версия содержала формулу для расчета силы трения из учебника физики. Если бы это было применимо - это было бы исследование физпроцессов. А так - пара дней коту под хвост.

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

13.10.2014 18:02:29
nop

nop

БГУ

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

13.10.2014 18:09:17
Antmsu

Antmsu

Москва

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

13.10.2014 18:47:42
Recar

Recar

Киев

Главная фишка - вратарь на один тик впереди, чем приходит в world

13.10.2014 20:23:55
ThermIt

ThermIt

Piano.io

Recar

Recar

Киев

Главная фишка - вратарь на один тик впереди, чем приходит в world

Движение вратаря вообще не поддаётся никакому разумному объяснению, он телепортируется по своему усмотрению куда хочет. У меня уже достаточно как примеров, так и контрпримеров к этому правилу.

13.10.2014 20:53:38
ThermIt

ThermIt

Piano.io

Antmsu

Antmsu

Москва

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

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

13.10.2014 20:56:16
Recar

Recar

Киев

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

13.10.2014 21:17:53
ThermIt

ThermIt

Piano.io

Эта теория иногда не работает у штанг :-P

13.10.2014 21:24:36
Recar

Recar

Киев

А при чем штанги к вратарю =)? там для них отдельный хардкод и кружочки в углах ворот. Но я не заморачивался уже с этим.

13.10.2014 21:30:35
Cooler

Cooler

Минск

ThermIt

ThermIt

Piano.io

Движение вратаря вообще не поддаётся никакому разумному объяснению, он телепортируется по своему усмотрению куда хочет. У меня уже достаточно как примеров, так и контрпримеров к этому правилу.

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

13.10.2014 21:37:59
ThermIt

ThermIt

Piano.io

Ну, это особенность обработки phys2d такая, там константы выталкивания даже в коде зашиты, их в интернете найти можно. А вот движение вратаря к phys2d отношения не имеет. Он просто телепортируется на Y координату шайбы перед вычислением всех столкновений, но не дальше, чем на 6 единиц. Но от штанг иногда может и “перепрыгнуть” шайбу.

13.10.2014 21:47:54
ThermIt

ThermIt

Piano.io

Покопался ещё в логах и рассчитал отскок от вратаря на следующий тик с точностью до 7 знака после запятой. В принципе, не сильно от стены отличается. Всё выводится на пальцах.

13.10.2014 22:03:08
Antmsu

Antmsu

Москва

ThermIt

ThermIt

Piano.io

Покопался ещё в логах и рассчитал отскок от вратаря на следующий тик с точностью до 7 знака после запятой. В принципе, не сильно от стены отличается. Всё выводится на пальцах.

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

13.10.2014 22:32:13
ThermIt

ThermIt

Piano.io

Ничего хитрого, всё оказалось до тупизны просто, даже коэффициенты круглые. Разложил все вектора по нормалям и касательным и они сошлись до 7-го знака.

13.10.2014 22:40:26
Recar

Recar

Киев

Та с вратарем все тупо по phys2d кроме того что вратарь не там где приходит в world.

13.10.2014 22:42:21
Recar

Recar

Киев

упругость по центрам, но еще есть трение при столкновении с вратарем

13.10.2014 22:43:03
Antmsu

Antmsu

Москва

Recar

Recar

Киев

упругость по центрам, но еще есть трение при столкновении с вратарем

Новый вид трения: “трение проникновения” =), и оно направлено против скорости движения шайбы?

13.10.2014 23:15:02
ThermIt

ThermIt

Piano.io

Трение из учебника физики.

13.10.2014 23:19:04
Antmsu

Antmsu

Москва

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

14.10.2014 2:24:35
ThermIt

ThermIt

Piano.io

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

14.10.2014 3:06:14
tyamgin

tyamgin

Симферополь

Recar

Recar

Киев

Та с вратарем все тупо по phys2d кроме того что вратарь не там где приходит в world.

Вратарь правильно приходит. Он не умеет предсказывать куда полетит шайба. Шайба двинулась - на следующем тике он среагировал.

14.10.2014 8:28:11
superbellermail
imwode

imwode

Красногорск

Я вообще крамольную вещь скажу - в следующем году тупо отдавайте следующее состояние объекта при заданных параметрах, т.е. запилите, условно говоря, puck.getNextState() и hockeyist.getNextState(move). Тогда это будет реально AI соревнование, а не втыкание на консольный вывод сутками в попытках понять “че за нафик здесь происходит?!?!?!???”

Неистово плюсую. Очень здравая мысль! Тогда условия были бы более равными.

14.10.2014 8:58:11
nop

Неистово плюсую. Очень здравая мысль! Тогда условия были бы более равными.

Занятно, но, имхо, нереализуемо. Это получается, что симуляция должна быть реализована В КАЖДОМ языковом пакете, не с локал раннера же по TCP каждый раз даныне получать, верно? Я не верю, что разработчики захотят/смогут проделать такую работу. Вероятность практически нулевая. Хотя, я был бы не против, если бы такой функционал был хотя бы на уровне джавовского локал раннера. Это бы потребовало бы просто команды “откатить игру к шагу X”. либо команд запомнить/восстановить состояние игры. Не обрубать игровую сессию, проиграв набор пакетов, а в интерактивном режиме позволять к ней присоединиться, открутить к шагу X, поменять объект move, пересчитать, отсоединиться, перекомпилировать стратегию, присоединиться снова и проиграть сначала n шагов .. И попутно совместить local runner с repeater-ом, загружая в него, при наличии соответствующего параметра, сессию по токену.

Это всё могло бы помочь в отладке/написании своего симулятора просто немеряно!!!!

14.10.2014 21:57:27
Bibr

Bibr

Майкоп

imwode

imwode

Красногорск

Я вообще крамольную вещь скажу - в следующем году тупо отдавайте следующее состояние объекта при заданных параметрах, т.е. запилите, условно говоря, puck.getNextState() и hockeyist.getNextState(move). Тогда это будет реально AI соревнование, а не втыкание на консольный вывод сутками в попытках понять “че за нафик здесь происходит?!?!?!???”

невыполнимо. точнее криво будет. hockeyist.getNextState(move) - как будет работать при столкновении, когда результат зависит ещё и от вражеского move? Давать без учёта столкновений? Значит опять надо будет исследовать физику для их учёта)

15.10.2014 8:59:40
superbellermail
Bibr

Bibr

Майкоп

невыполнимо. точнее криво будет. hockeyist.getNextState(move) - как будет работать при столкновении, когда результат зависит ещё и от вражеского move? Давать без учёта столкновений? Значит опять надо будет исследовать физику для их учёта)

Да, в принципе, это не просто сделать. Может было бы лучше просто открыть код local runner сразу. Теперь понимаю, почему бывалые участники чуть ли не с первых дней начали просить открыть исходники local runner на форуме. Я в этом году первый раз учавствовал. Теперь буду знать, что в этом соревновании надо первым делом вытаскивать “нутро” из local runner )))

15.10.2014 12:39:27
nop

nop

БГУ

Bibr

Bibr

Майкоп

невыполнимо. точнее криво будет. hockeyist.getNextState(move) - как будет работать при столкновении, когда результат зависит ещё и от вражеского move? Давать без учёта столкновений? Значит опять надо будет исследовать физику для их учёта)

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

15.10.2014 12:57:22
Cooler

Cooler

Минск

nop

nop

БГУ

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

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

15.10.2014 13:13:17
nop

nop

БГУ

Cooler

Cooler

Минск

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

Думаю, что не получится, по крайней мере для игр подобных этой, если не вынести код симуляции в отдельную библиотеку, написанную, например, на C/C++. Потому что повторить вычисления с float-ами, повторить ГСЧ и так далее на разных языках программирования, с совпадением результата до последнего бита, по моему мнению, невозможно.

15.10.2014 13:40:48
Cooler

Cooler

Минск

nop

nop

БГУ

Думаю, что не получится, по крайней мере для игр подобных этой, если не вынести код симуляции в отдельную библиотеку, написанную, например, на C/C++. Потому что повторить вычисления с float-ами, повторить ГСЧ и так далее на разных языках программирования, с совпадением результата до последнего бита, по моему мнению, невозможно.

Ну с точностью до бита наверно и не надо - тем более что сид рандома раскрывать нельзя, а значит мир в результате случайного события может отличаться не то что на бит, а вообще принципиально. Imho смысл всего этого не в том, чтобы точно узнать - отобьет игрок шайбу или нет, а получить ВОЗМОЖНОЕ состояние мира с достаточной точностью. Это как-раз то, что мы делаем в своих стратегиях, разница лишь в том, делать это на основе тех же формул и алгоритмов, что и раннер, или своих - эмпирически подобранных.

15.10.2014 14:07:03
mortido

mortido

Иваново

Если симуляция будет происходит в каждом языковом пакете отдельно, то ее можно будет той же рефлексией ломануть. И согласен с мнением noop, что одинаковых результатов не будет. Другой вопрос почему локал ранер обфусцируется. В смысле он же выполняется в отдельном процессе (или даже на отдельной машине) и рефлексия тут не сильно поможет. Я скорее чего-то не понимаю, но почему просто не выкладывать его исходники? Убрать преимущество у Java программистов? Ну учитывая, что его всеравно многие вскрывают, то оно как бы и так есть.

15.10.2014 14:07:27
Cooler

Cooler

Минск

mortido

mortido

Иваново

Если симуляция будет происходит в каждом языковом пакете отдельно, то ее можно будет той же рефлексией ломануть. И согласен с мнением noop, что одинаковых результатов не будет. Другой вопрос почему локал ранер обфусцируется. В смысле он же выполняется в отдельном процессе (или даже на отдельной машине) и рефлексия тут не сильно поможет. Я скорее чего-то не понимаю, но почему просто не выкладывать его исходники? Убрать преимущество у Java программистов? Ну учитывая, что его всеравно многие вскрывают, то оно как бы и так есть.

Не понял вашу мысль. В чем принципиальная разница между открытием исходников раннера и открытием части этих же исходников, но в переведенном виде и в рамках языкового пакета? Зачем здесь что-то ломать? Преимущество джавистов - штука, которую при любом раскладе хотелось бы минимизировать.

15.10.2014 16:19:29
mortido

mortido

Иваново

Cooler

Cooler

Минск

Не понял вашу мысль. В чем принципиальная разница между открытием исходников раннера и открытием части этих же исходников, но в переведенном виде и в рамках языкового пакета? Зачем здесь что-то ломать? Преимущество джавистов - штука, которую при любом раскладе хотелось бы минимизировать.

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

15.10.2014 17:04:31
ud1

ud1

Химки

mortido

mortido

Иваново

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

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

15.10.2014 17:12:20
imwode

imwode

Красногорск

Bibr

Bibr

Майкоп

невыполнимо. точнее криво будет. hockeyist.getNextState(move) - как будет работать при столкновении, когда результат зависит ещё и от вражеского move? Давать без учёта столкновений? Значит опять надо будет исследовать физику для их учёта)

Кстати, да, не подумал. Все сильно усложняется…

15.10.2014 17:26:13
nop

nop

БГУ

imwode

imwode

Красногорск

Кстати, да, не подумал. Все сильно усложняется…

Да я ж предложил решение, которое всех устроит. Просто добавить функционал в API local runner-а, позволяющий перематывать состояние игры вперед и назад, и позволить одной стратегии обрабатывать move() для всех игроков. При тестировании на сервере расширенный функционал, разумеется, запрещать.

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

Остальное, по моему мнению, фантазии. Ну разве что “движок симуляции” в виде плагина в .DLL/.SO/.DYLIB файле еще вполне можно сделать, но писать его придется не на джаве, а организаторы - джаверы.

15.10.2014 20:17:58
imwode

imwode

Красногорск

steleal

steleal

Ульяновск

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

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

20.10.2014 6:16:22
steleal

steleal

Ульяновск

imwode

imwode

Красногорск

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

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

20.10.2014 8:13:27
imwode

imwode

Красногорск

steleal

steleal

Ульяновск

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

Всякие пути пробовал, скейл = 1. А как прописать относительный путь? plugins-directory=./plugins или plugins-directory=“./plugins” ??

20.10.2014 19:58:05
steleal

steleal

Ульяновск

imwode

imwode

Красногорск

Всякие пути пробовал, скейл = 1. А как прописать относительный путь? plugins-directory=./plugins или plugins-directory=“./plugins” ??

У меня работает именно plugins-directory=plugins, в папке plugins лежит LocalTestRendererListener.class, скомпиленный из вот этого: http://pastebin.com/b0dGawtn

20.10.2014 20:03:18
imwode

imwode

Красногорск

Во, заработало! А вы говорите, что “все просто”. $PROJ_DIR$/plugins - это просто. ./plugins - это просто. Полный путь в кавычках и без - это просто. Пичалька.

Спасибо за помощь!

20.10.2014 20:28:49
steleal

steleal

Ульяновск

Организаторам предложение на будущее: Во избежание подобного рода недоразумений в файле с настройками указывать закоментареный пример :-), примерно так:

Путь к каталогу с плагинами или пустая строка для работы без плагинов.

plugins-directory=plugins

plugins-directory=

20.10.2014 20:56:21
steleal

steleal

Ульяновск

ой блин, где жирным - там были решетки.

20.10.2014 20:56:59
imwode

imwode

Красногорск

steleal

steleal

Ульяновск

ой блин, где жирным - там были решетки.

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

20.10.2014 21:33:52
SladeThe

SladeThe

Команда Russian AI Cup

imwode

imwode

Красногорск

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

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

23.10.2014 12:45:48
icxon

icxon

?????-?????????

А мне наоборот, кажется, нужно больше random событий. Никаких API с перемоткой, никаких известных движков и пользы от декомпиляции - нужна полная энтропия. В реальном мире никакие формулы не предскажут позицию шайбы в матче NHL при отскоке от стены или даже по прямой. Лед сам по себе шероховатый, сколы, влажность, и даже порода дерева из которой сделана клюшка - это нельзя просчитать. Но можно продумать, т.е. писать реально AI, а не этот пресловутый phys2d. Идея с вероятностями в перехватах и ударах это уже хорошее начинание, можно развить и дальше чтобы просчёт даже на 10 тиков не имел смысла и игроки действовали по ситуации, а не как роботы.

23.10.2014 18:19:56
imwode

imwode

Красногорск

SladeThe

SladeThe

Команда Russian AI Cup

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

А я - обнаружил

24.10.2014 19:56:02