Open AI Championship

Local runner

Project

Sandbox

Round 1

Round 2

Finals

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

Recent comments

3 november 19:39: alevlaber wrote comment on post Закрытие Russian AI Cup 2014
3 november 19:33: alevlaber wrote comment on post Закрытие Russian AI Cup 2014
3 november 19:26: alevlaber wrote comment on post Закрытие Russian AI Cup 2014
29 september 10:26: alevlaber wrote comment on post Закрытие Russian AI Cup 2014
4 september 14:57: steleal wrote comment on post Закрытие Russian AI Cup 2014
4 september 14:56: steleal wrote comment on post Закрытие Russian AI Cup 2014
4 september 08:24: zavod wrote comment on post Закрытие Russian AI Cup 2014

VK Group

Telegram chat

 

У вас есть возможность запускать простые тестовые игры локально на своём компьютере. Для этого необходимо скачать архив с утилитой 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 Team

shek_shek

shek_shek

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

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

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

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

Sep 8, 2014 3:46:51 PM
georgevolkov

georgevolkov

Paylink

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

Sep 8, 2014 4:10:16 PM
georgevolkov

georgevolkov

Paylink

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

Sep 8, 2014 4:15:06 PM
udalov

udalov

JetBrains

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

Sep 8, 2014 4:19:53 PM
amurushkin

amurushkin

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

georgevolkov

georgevolkov

Paylink

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

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

Sep 8, 2014 4:36:05 PM
HiVaccessdenied

HiVaccessdenied

ООО "Мера НН"

amurushkin

amurushkin

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

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

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

Sep 8, 2014 4:47:18 PM
Kirill_Tim

Kirill_Tim

NRU ITMO

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

Sep 8, 2014 4:55:15 PM
amurushkin

amurushkin

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

HiVaccessdenied

HiVaccessdenied

ООО "Мера НН"

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

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

Sep 8, 2014 5:02:13 PM
Kirill_Tim

Kirill_Tim

NRU ITMO

Kirill_Tim

Kirill_Tim

NRU ITMO

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

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

Sep 8, 2014 5:19:51 PM
georgevolkov

georgevolkov

Paylink

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

Sep 8, 2014 6:21:09 PM
dantistus

dantistus

Student

georgevolkov

georgevolkov

Paylink

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

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

Sep 8, 2014 6:29:23 PM
georgevolkov

georgevolkov

Paylink

dantistus

dantistus

Student

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

Спасибо!

Sep 8, 2014 6:55:27 PM
monnoroch

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

Sep 8, 2014 7:19:30 PM
emergency1997

emergency1997

Sevastopol

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

Sep 8, 2014 7:36:02 PM
SladeThe

SladeThe

Russian AI Cup Team

emergency1997

emergency1997

Sevastopol

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

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

Sep 8, 2014 8:25:50 PM
SladeThe

SladeThe

Russian AI Cup Team

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

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

Sep 8, 2014 8:27:34 PM
monnoroch
SladeThe

SladeThe

Russian AI Cup Team

Сходу сложно сказать. Возможно, связано с какими-то настройками 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)

Sep 8, 2014 8:38:36 PM
monnoroch
SladeThe

SladeThe

Russian AI Cup Team

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

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

Sep 8, 2014 8:42:55 PM
Kangaroo

Kangaroo

МФТИ

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

Sep 8, 2014 9:59:05 PM
max_shinkarenko

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

Sep 9, 2014 2:16:02 AM
brox

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

Sep 9, 2014 2:59:19 AM
Anarion

Anarion

Bishkek

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

Sep 9, 2014 10:43:28 AM
Anarion

Anarion

Bishkek

Uhuhu

Uhuhu

Moscow

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

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

Sep 9, 2014 1:29:32 PM
serlis

serlis

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

SladeThe

SladeThe

Russian AI Cup Team

  Необходимо скачать и установить 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. что не так?

Sep 9, 2014 3:38:57 PM
SladeThe

SladeThe

Russian AI Cup Team

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" (такая папка вообще существует?).

Sep 9, 2014 4:00:00 PM
admin

admin

Russian AI Cup Team

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.

Sep 9, 2014 4:01:19 PM
ky78

ky78

ООО

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

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

Sep 9, 2014 6:51:31 PM
ky78

ky78

ООО

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

Sep 9, 2014 6:53:07 PM
Kirill_Tim

Kirill_Tim

NRU ITMO

ky78

ky78

ООО

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

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

Sep 9, 2014 7:48:58 PM
anton-dex

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

Sep 9, 2014 9:18:05 PM
denisx

denisx

Russia

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

Sep 9, 2014 9:33:22 PM
sergey_rotor

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

Sep 9, 2014 9:40:11 PM
neoascetic

neoascetic

Kaliningrad

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

Sep 10, 2014 12:14:22 AM
demidenko

demidenko

ИМиФИ СФУ

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

Sep 10, 2014 10:07:10 AM
demidenko

demidenko

ИМиФИ СФУ

demidenko

demidenko

ИМиФИ СФУ

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

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

Sep 10, 2014 10:18:25 AM
kiwaa

kiwaa

Saint Petersburg

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

Sep 10, 2014 12:11:12 PM
LeeT

LeeT

Murino

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

Sep 10, 2014 2:34:35 PM
Anarion

Anarion

Bishkek

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

Sep 10, 2014 2:39:50 PM
JackOfShadow

JackOfShadow

КвантумСофт

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

Sep 10, 2014 3:51:15 PM
3axap4eHko

3axap4eHko

Intetics

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

Sep 10, 2014 4:38:24 PM
Ariant

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

Sep 10, 2014 4:43:13 PM
DeeCo

DeeCo

Krasnodar

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

Sep 10, 2014 6:25:50 PM
amurushkin

amurushkin

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

DeeCo

DeeCo

Krasnodar

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

файл properties

Sep 10, 2014 6:28:39 PM
starscream

starscream

Irkutsk

LeeT

LeeT

Murino

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

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

p1-type=Local

p2-type=Local

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

python Runner.py localhost 31002 0000000000000000

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

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

Sep 10, 2014 8:04:17 PM
LeeT

LeeT

Murino

starscream

starscream

Irkutsk

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

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

Sep 10, 2014 8:43:01 PM
primorial

primorial

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

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

Sep 10, 2014 9:09:31 PM
Anarion

Anarion

Bishkek

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

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

Sep 10, 2014 9:40:33 PM
...............

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.

Sep 11, 2014 8:34:26 AM
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.

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

Sep 11, 2014 2:48:54 PM
koldun

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

Sep 11, 2014 8:07:26 PM
serlis

serlis

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

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

Sep 11, 2014 8:30:02 PM
Fireworks

Fireworks

Сбертех

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

Sep 11, 2014 9:06:17 PM
dimoc

dimoc

Minsk

serlis

serlis

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

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

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

Sep 11, 2014 9:21:43 PM
dimoc

dimoc

Minsk

Fireworks

Fireworks

Сбертех

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

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

Sep 11, 2014 9:22:18 PM
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-й стратегии]

Sep 11, 2014 9:40:34 PM
tarsier

tarsier

Akvelon

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

Sep 12, 2014 3:30:58 AM
demidenko

demidenko

ИМиФИ СФУ

imbeat

imbeat

МИЭТ

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

Есть.

Sep 12, 2014 3:52:45 PM
shakhray97

shakhray97

Школа 179 МИОО

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

Sep 12, 2014 6:22:29 PM
M0t0rist

M0t0rist

Bryansk

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

Sep 12, 2014 6:58:07 PM
alexx.nazaroff

alexx.nazaroff

Forticom

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

Sep 12, 2014 7:11:31 PM
perumeni

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

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

Sep 12, 2014 7:38:02 PM
dronov

dronov

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

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

Sep 13, 2014 2:37:34 AM
Diversus

Diversus

SoftOnIT.RU

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

Sep 13, 2014 4:58:15 PM
rezanaseh

rezanaseh

Moscow

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

Sep 13, 2014 6:34:59 PM
Alnek

Alnek

Saint Petersburg

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’е

Sep 13, 2014 10:03:23 PM
...............
Alnek

Alnek

Saint Petersburg

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

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

Sep 14, 2014 5:01:03 PM
steleal

steleal

Ulyanovsk

Alnek

Alnek

Saint Petersburg

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

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

Sep 14, 2014 5:41:34 PM
Alnek

Alnek

Saint Petersburg

steleal

steleal

Ulyanovsk

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

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

Sep 14, 2014 6:02:46 PM
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 запускается и ожидает подключения… Спасибо.

Sep 14, 2014 6:34:09 PM
dantistus

dantistus

Student

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

Sep 14, 2014 6:52:24 PM
tjden

tjden

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

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

Sep 14, 2014 7:54:37 PM
Ermak

Ermak

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

tjden

tjden

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

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

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

Sep 14, 2014 8:18:06 PM
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

Sep 14, 2014 8:19:16 PM
Ermak

Ermak

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

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

Sep 14, 2014 9:17:02 PM
akoptsov

akoptsov

Moscow

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

Пруфпик

Пруфпик

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

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

Sep 14, 2014 10:12:53 PM
dmitriy.m

dmitriy.m

Izhevsk

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

Sep 14, 2014 11:45:46 PM
skaos

skaos

Saint Petersburg

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

MacOS 10.9, 2.6 GHz core i7

Sep 15, 2014 1:18:04 AM
Alnek

Alnek

Saint Petersburg

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

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

Sep 15, 2014 2:58:05 AM
lama

lama

Akademos Inc.

dmitriy.m

dmitriy.m

Izhevsk

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

+1.

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

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

Sep 15, 2014 5:33:15 AM
Spun

Spun

Moscow

akoptsov

akoptsov

Moscow

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

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

Sep 15, 2014 8:59:44 AM
...............
Alnek

Alnek

Saint Petersburg

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

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

Sep 15, 2014 10:19:27 AM
Rebryk

Rebryk

Academic University

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

Sep 15, 2014 4:57:43 PM
steleal

steleal

Ulyanovsk

Rebryk

Rebryk

Academic University

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

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

Sep 15, 2014 8:05:23 PM
Rebryk

Rebryk

Academic University

steleal

steleal

Ulyanovsk

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

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

Sep 15, 2014 8:55:29 PM
SladeThe

SladeThe

Russian AI Cup Team

Rebryk

Rebryk

Academic University

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

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

Sep 15, 2014 9:51:37 PM
Rebryk

Rebryk

Academic University

SladeThe

SladeThe

Russian AI Cup Team

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

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

Sep 15, 2014 11:04:52 PM
mbelov

mbelov

Moscow

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

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

Sep 16, 2014 12:30:06 AM
dantistus

dantistus

Student

mbelov

mbelov

Moscow

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

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

Sep 16, 2014 2:04:34 AM
sergyn15

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

Sep 16, 2014 8:59:40 AM
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.

Sep 16, 2014 10:19:56 AM
sergyn15

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

Sep 16, 2014 12:18:36 PM
dimoc

dimoc

Minsk

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

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

Sep 16, 2014 1:26:18 PM
erko

erko

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

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

Sep 17, 2014 9:44:18 AM
dimoc

dimoc

Minsk

erko

erko

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

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

Player.isJustMissedGoal и Player.isJustScoredGoal

Sep 17, 2014 9:58:57 AM
erko

erko

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

dimoc

dimoc

Minsk

Player.isJustMissedGoal и Player.isJustScoredGoal

Спасибо

Sep 17, 2014 10:17:10 AM
lama

lama

Akademos Inc.

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

Sep 17, 2014 4:05:58 PM
MagAlex

MagAlex

Nizhny Novgorod

lama

lama

Akademos Inc.

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

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

Sep 17, 2014 4:17:30 PM
lama

lama

Akademos Inc.

MagAlex

MagAlex

Nizhny Novgorod

А в чём сложность поменять порты в настройках 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 – тогда такие вот траблы получаются.

Sep 17, 2014 4:47:18 PM
alevlaber

alevlaber

Kostanay

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 – тогда такие вот траблы получаются.

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

Sep 17, 2014 6:18:09 PM
lama

lama

Akademos Inc.

alevlaber

alevlaber

Kostanay

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

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

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

Sep 17, 2014 6:27:19 PM
alevlaber

alevlaber

Kostanay

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

Sep 17, 2014 6:48:22 PM
alexprotoss

alexprotoss

Dolgoprudnyy

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

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

Sep 17, 2014 7:18:29 PM
sergyn15
alexprotoss

alexprotoss

Dolgoprudnyy

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

Добрый день. В моем дистрибутиве (рунту) изначально не установлена 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 я добавил права сомпилятору. Ну это вкратце. Хочу с прискорбием признать ,что дальше этого не продвидулся . В этой игре первый раз и в с++ очень мало опыта,хотя очень хочется попробовать.Я разбираюсь ,как вообще стронуть моего игрока и пока не могу… Сергей.

Sep 17, 2014 9:50:30 PM
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’. Что делать? Не отправлять же всё время на сайт (долгое ожидание проверки).

Sep 18, 2014 1:23:31 PM
Flekon

Flekon

Moscow

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

Sep 18, 2014 2:33:55 PM
Flekon

Flekon

Moscow

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

Sep 18, 2014 2:38:12 PM
steleal

steleal

Ulyanovsk

Flekon

Flekon

Moscow

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

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

Sep 18, 2014 2:42:40 PM
Flekon

Flekon

Moscow

Flekon

Flekon

Moscow

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

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

Sep 18, 2014 3:13:19 PM
Flekon

Flekon

Moscow

steleal

steleal

Ulyanovsk

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

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

Sep 18, 2014 3:13:44 PM
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. И ещё множество других ошибок.

Sep 18, 2014 4:26:49 PM
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

Sep 18, 2014 4:34:28 PM
lama

lama

Akademos Inc.

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

Sep 19, 2014 2:58:24 PM
mikhail_test

mikhail_test

Yekaterinburg

lama

lama

Akademos Inc.

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

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

Sep 19, 2014 3:11:29 PM
lama

lama

Akademos Inc.

mikhail_test

mikhail_test

Yekaterinburg

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

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

Sep 19, 2014 3:21:56 PM
alevlaber

alevlaber

Kostanay

lama

lama

Akademos Inc.

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

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

Sep 19, 2014 3:27:41 PM
mikhail_test

mikhail_test

Yekaterinburg

lama

lama

Akademos Inc.

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

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

Sep 19, 2014 4:36:07 PM
lama

lama

Akademos Inc.

mikhail_test

mikhail_test

Yekaterinburg

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

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

Sep 19, 2014 4:41:43 PM
lama

lama

Akademos Inc.

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

Sep 19, 2014 4:45:48 PM
sergyn15

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

Sep 19, 2014 6:48:18 PM
kipar

kipar

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

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

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

Sep 19, 2014 6:51:54 PM
Harm

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

А это что?

Sep 19, 2014 6:53:16 PM
sergyn15

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

Sep 19, 2014 7:01:45 PM
alberist

alberist

СевКавГТУ

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

Sep 19, 2014 7:54:09 PM
dantistus

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

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

Sep 19, 2014 9:44:32 PM
sergyn15

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

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

Sep 19, 2014 9:53:25 PM
dantistus

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

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

Sep 19, 2014 10:02:05 PM
lexer

lexer

Tula

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

Sep 24, 2014 2:40:27 PM
alevlaber

alevlaber

Kostanay

lexer

lexer

Tula

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

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

Sep 24, 2014 2:59:19 PM
Bibr

Bibr

Maykop

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

Sep 25, 2014 2:01:17 PM
Cooler

Cooler

Minsk

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

Sep 25, 2014 8:23:49 PM
albynos

albynos

Rostov-on-Don

Cooler

Cooler

Minsk

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

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

Sep 25, 2014 9:15:49 PM
Cooler

Cooler

Minsk

albynos

albynos

Rostov-on-Don

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

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

Sep 25, 2014 10:13:08 PM
Cooler

Cooler

Minsk

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

Sep 25, 2014 11:01:21 PM
albynos

albynos

Rostov-on-Don

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

Sep 26, 2014 1:02:03 AM
Cooler

Cooler

Minsk

albynos

albynos

Rostov-on-Don

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

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

Sep 26, 2014 9:20:34 AM
Bibr

Bibr

Maykop

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

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

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

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

Sep 27, 2014 7:09:22 PM
nop

nop

БГУ

Bibr

Bibr

Maykop

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

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

Sep 27, 2014 9:41:50 PM
Bibr

Bibr

Maykop

nop

nop

БГУ

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

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

Sep 28, 2014 6:59:08 PM
ns_serg

ns_serg

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

Bibr

Bibr

Maykop

Подскажите, пожалуйста, новичку, как запускать две разных стратегии)) Я осваиваю 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

Sep 30, 2014 1:42:39 AM
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” - с новой строки

Sep 30, 2014 1:46:09 AM
Bibr

Bibr

Maykop

ns_serg

ns_serg

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

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

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

Sep 30, 2014 7:36:52 AM
SladeThe

SladeThe

Russian AI Cup Team

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

Sep 30, 2014 12:14:46 PM
MagAlex

MagAlex

Nizhny Novgorod

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

Oct 6, 2014 3:04:28 PM
ThermIt

ThermIt

Piano.io

MagAlex

MagAlex

Nizhny Novgorod

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

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

Oct 6, 2014 3:06:15 PM
Ermak

Ermak

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

MagAlex

MagAlex

Nizhny Novgorod

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

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

Oct 6, 2014 3:25:16 PM
ThermIt

ThermIt

Piano.io

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

Oct 6, 2014 3:47:23 PM
MagAlex

MagAlex

Nizhny Novgorod

ThermIt

ThermIt

Piano.io

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

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

Oct 6, 2014 3:59:44 PM
Sanda

Sanda

JetBrains

ThermIt

ThermIt

Piano.io

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

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

Oct 6, 2014 4:34:06 PM
DenGodunov
SladeThe

SladeThe

Russian AI Cup Team

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

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

Oct 9, 2014 1:25:26 PM
Volandpro

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

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

Oct 9, 2014 3:10:40 PM
DenGodunov

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

Oct 9, 2014 3:16:49 PM
lama

lama

Akademos Inc.

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

Oct 12, 2014 6:25:27 PM
Recar

Recar

Kiev

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

Oct 12, 2014 7:12:33 PM
Recar

Recar

Kiev

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

Oct 12, 2014 7:14:26 PM
ud1

ud1

Khimki

lama

lama

Akademos Inc.

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

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

Oct 12, 2014 7:15:04 PM
EPJ

EPJ

ud1

ud1

Khimki

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

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

Oct 12, 2014 7:21:42 PM
mortido

mortido

Ivanovo

ud1

ud1

Khimki

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

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

Oct 12, 2014 7:23:19 PM
EPJ

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

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

Oct 12, 2014 7:23:43 PM
ud1

ud1

Khimki

EPJ

EPJ

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

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

Oct 12, 2014 7:28:58 PM
imwode

imwode

Krasnogorsk

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

Oct 12, 2014 7:29:05 PM
imwode

imwode

Krasnogorsk

imwode

imwode

Krasnogorsk

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

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

Oct 12, 2014 7:31:47 PM
EPJ

EPJ

ud1

ud1

Khimki

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

Кстати да.

Oct 12, 2014 7:32:45 PM
ud1

ud1

Khimki

imwode

imwode

Krasnogorsk

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

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

Oct 12, 2014 7:36:31 PM
lama

lama

Akademos Inc.

ud1

ud1

Khimki

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

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

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

Oct 12, 2014 7:43:16 PM
lama

lama

Akademos Inc.

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

Oct 12, 2014 7:44:00 PM
EPJ

EPJ

imwode

imwode

Krasnogorsk

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

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

Oct 12, 2014 7:49:41 PM
imwode

imwode

Krasnogorsk

EPJ

EPJ

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

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

Oct 13, 2014 9:50:52 AM
Bibr

Bibr

Maykop

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

Oct 13, 2014 10:08:23 AM
steleal

steleal

Ulyanovsk

Bibr

Bibr

Maykop

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

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

Oct 13, 2014 10:26:47 AM
EPJ

EPJ

imwode

imwode

Krasnogorsk

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

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

Oct 13, 2014 11:04:02 AM
Bibr

Bibr

Maykop

steleal

steleal

Ulyanovsk

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

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

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

Oct 13, 2014 1:13:32 PM
steleal

steleal

Ulyanovsk

Bibr

Bibr

Maykop

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

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

Oct 13, 2014 3:12:45 PM
nop

nop

БГУ

imwode

imwode

Krasnogorsk

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

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

Oct 13, 2014 6:02:29 PM
nop

nop

БГУ

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

Oct 13, 2014 6:09:17 PM
Antmsu

Antmsu

Moscow

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

Oct 13, 2014 6:47:42 PM
Recar

Recar

Kiev

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

Oct 13, 2014 8:23:55 PM
ThermIt

ThermIt

Piano.io

Recar

Recar

Kiev

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

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

Oct 13, 2014 8:53:38 PM
ThermIt

ThermIt

Piano.io

Antmsu

Antmsu

Moscow

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

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

Oct 13, 2014 8:56:16 PM
Recar

Recar

Kiev

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

Oct 13, 2014 9:17:53 PM
ThermIt

ThermIt

Piano.io

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

Oct 13, 2014 9:24:36 PM
Recar

Recar

Kiev

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

Oct 13, 2014 9:30:35 PM
Cooler

Cooler

Minsk

ThermIt

ThermIt

Piano.io

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

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

Oct 13, 2014 9:37:59 PM
ThermIt

ThermIt

Piano.io

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

Oct 13, 2014 9:47:54 PM
ThermIt

ThermIt

Piano.io

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

Oct 13, 2014 10:03:08 PM
Antmsu

Antmsu

Moscow

ThermIt

ThermIt

Piano.io

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

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

Oct 13, 2014 10:32:13 PM
ThermIt

ThermIt

Piano.io

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

Oct 13, 2014 10:40:26 PM
Recar

Recar

Kiev

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

Oct 13, 2014 10:42:21 PM
Recar

Recar

Kiev

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

Oct 13, 2014 10:43:03 PM
Antmsu

Antmsu

Moscow

Recar

Recar

Kiev

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

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

Oct 13, 2014 11:15:02 PM
ThermIt

ThermIt

Piano.io

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

Oct 13, 2014 11:19:04 PM
Antmsu

Antmsu

Moscow

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

Oct 14, 2014 2:24:35 AM
ThermIt

ThermIt

Piano.io

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

Oct 14, 2014 3:06:14 AM
tyamgin

tyamgin

Simferopol

Recar

Recar

Kiev

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

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

Oct 14, 2014 8:28:11 AM
superbellermail
imwode

imwode

Krasnogorsk

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

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

Oct 14, 2014 8:58:11 AM
nop

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

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

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

Oct 14, 2014 9:57:27 PM
Bibr

Bibr

Maykop

imwode

imwode

Krasnogorsk

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

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

Oct 15, 2014 8:59:40 AM
superbellermail

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

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

Oct 15, 2014 12:39:27 PM
nop

nop

БГУ

Bibr

Bibr

Maykop

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

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

Oct 15, 2014 12:57:22 PM
Cooler

Cooler

Minsk

nop

nop

БГУ

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

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

Oct 15, 2014 1:13:17 PM
nop

nop

БГУ

Cooler

Cooler

Minsk

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

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

Oct 15, 2014 1:40:48 PM
Cooler

Cooler

Minsk

nop

nop

БГУ

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

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

Oct 15, 2014 2:07:03 PM
mortido

mortido

Ivanovo

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

Oct 15, 2014 2:07:27 PM
Cooler

Cooler

Minsk

mortido

mortido

Ivanovo

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

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

Oct 15, 2014 4:19:29 PM
mortido

mortido

Ivanovo

Cooler

Cooler

Minsk

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

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

Oct 15, 2014 5:04:31 PM
ud1

ud1

Khimki

mortido

mortido

Ivanovo

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

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

Oct 15, 2014 5:12:20 PM
imwode

imwode

Krasnogorsk

Bibr

Bibr

Maykop

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

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

Oct 15, 2014 5:26:13 PM
nop

nop

БГУ

imwode

imwode

Krasnogorsk

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

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

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

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

Oct 15, 2014 8:17:58 PM
imwode

imwode

Krasnogorsk

steleal

steleal

Ulyanovsk

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

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

Oct 20, 2014 6:16:22 AM
steleal

steleal

Ulyanovsk

imwode

imwode

Krasnogorsk

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

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

Oct 20, 2014 8:13:27 AM
imwode

imwode

Krasnogorsk

steleal

steleal

Ulyanovsk

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

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

Oct 20, 2014 7:58:05 PM
steleal

steleal

Ulyanovsk

imwode

imwode

Krasnogorsk

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

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

Oct 20, 2014 8:03:18 PM
imwode

imwode

Krasnogorsk

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

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

Oct 20, 2014 8:28:49 PM
steleal

steleal

Ulyanovsk

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

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

plugins-directory=plugins

plugins-directory=

Oct 20, 2014 8:56:21 PM
steleal

steleal

Ulyanovsk

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

Oct 20, 2014 8:56:59 PM
imwode

imwode

Krasnogorsk

steleal

steleal

Ulyanovsk

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

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

Oct 20, 2014 9:33:52 PM
SladeThe

SladeThe

Russian AI Cup Team

imwode

imwode

Krasnogorsk

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

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

Oct 23, 2014 12:45:48 PM
icxon

icxon

City::?????-?????????

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

Oct 23, 2014 6:19:56 PM
imwode

imwode

Krasnogorsk

SladeThe

SladeThe

Russian AI Cup Team

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

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

Oct 24, 2014 7:56:02 PM