mailruchamps / raic-2018 Goto Github PK
View Code? Open in Web Editor NEWRussian AI Cup — artificial intelligence programming contest. Official website: http://russianaicup.ru
Russian AI Cup — artificial intelligence programming contest. Official website: http://russianaicup.ru
It can make debug faster, and we can try Reinforcement Learning easier
Будут ли открыты исходники localrunner?
Лично мне хочется добавить возможность менять состояние мира, хотя бы позицию / скорость ботов
Было бы не плохо добавить в аргументы раннера параметр "-batchmode", чтобы раннер запускался без отрисовки и игралось с максимальной скоростью, чтобы быстро можно было запустить и сразу увидеть результат.
Наравне с "current_tick: Int // Номер текущего тика" добавте "current_round_tick: Int // Номер текущего тика текущеко раунда". Он должен обнуляться после каждого забитого гола.
Будет ли возможность работать с Cython для пакета Python3?
Все есть, кроме самой арены. Нужно для собственного визуализатора.
Планируется ли поддержка более новой версии Kotlin (1.2
или 1.3
)? На данный момент в проекте используется версия 1.0.3
, на что Intellij IDEA выдает предупреждение об устаревшей версии:
Warning: Kotlin: Language version 1.0 is deprecated and its support will be removed in a future version of Kotlin
Значение переменной delta_time не определено в документации. Кроме того, не сказано, является ли оно вообще константой (если да, его нетрудно вывести, конечно. Но хотелось бы видеть в документации)
It would be very useful to have Tensorflow for Python and Java
Seems not to be that hard to add it.
Please, help the neural nets to get inthere :)
Здравствуйте. Обновите, пожалуйста, версию localrunner'а для macOs тут http://russianaicup.ru/p/localrunner, либо подскажите где скачать актуальную. В том, что можно скачать, не работают последние опции (например --fast-forward), а так же не приходят константы в объекте rules.
Как происходит расчет коллизий между двумя игроками на поле, если они находятся рядом и один из них прыгает(увеличивается в размерах согласно правилам).
Ведь исходя из этой логики игрок НЕ может перепрыгнуть другого игрока. И может даже прыжком, не касаясь, оттолкнуть его.
Сабж
https://russianaicup.ru/ shows information about RAIC 2017.
It is very inconvenient for people using such browser plugins as "HTTPS Everywhere".
Furthermore, google can index https-version and it will be on the top for search query "Russian AI Cup" (threee weeks ago there were no https-version).
вот этот пример(из http://russianaicup.ru/p/localrunner):
[
{
"Sphere": {
"x": 2.0,
"y": 5.0,
"z": 15.0,
"radius": 0.1,
"r": 1.0,
"g": 0.0,
"b": 0.0,
"a": 0.5
}
},
{
"Text": "Debug text #0"
},
{
"Line": {
"x1" 0.0,
"y1" 0.0,
"z1" 0.0,
"x2" 10.0,
"y2" 20.0,
"z2" 30.0,
"width": 1.0,
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
}
}
]
не работет.
код теста:
#define TOTEXT(A)#A
#define override override; std::string custom_rendering()override{return join(split(join(split(\
TOTEXT(-(\
[ \
{ \
"Sphere": { \
"x": 2.0, \
"y": 5.0, \
"z": 15.0, \
"radius": 0.1, \
"r": 1.0, \
"g": 0.0, \
"b": 0.0, \
"a": 0.5 \
} \
}, \
{ \
"Text": "Debug text #0"\
}, \
{ \
"Line": { \
"x1" 0.0, \
"y1" 0.0, \
"z1" 0.0, \
"x2" 10.0, \
"y2" 20.0, \
"z2" 30.0, \
"width": 1.0, \
"r": 1.0, \
"g": 1.0, \
"b": 1.0, \
"a": 1.0 \
} \
} \
] \
)-) \
,")-"),""),"-("),"");}
//
#include "MyStrategy.h"
#undef override
#undef TOTEXT
значение оправляемой строки custom_rendering вот тут:
writeline(string(buffer.GetString()) + "|" + custom_rendering + "\n<end>");`
равно:
[ { "Sphere": { "x": 2.0, "y": 5.0, "z": 15.0, "radius": 0.1, "r": 1.0, "g": 0.0, "b": 0.0, "a": 0.5 } }, { "Text": "Debug text #0" }, { "Line": { "x1" 0.0, "y1" 0.0, "z1" 0.0, "x2" 10.0, "y2" 20.0, "z2" 30.0, "width": 1.0, "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 } } ]
jsoneditoronline.org говроит, что:
Error: Parse error on line 1:
...}, { "Line": { "x1" 0.0, "y1" 0.0, "z1"
-----------------------^
Expecting 'EOF', '}', ':', ',', ']', got 'NUMBER'
хотя я просто скопировал пример json`а отсюда: http://russianaicup.ru/p/localrunner
ок, сейчас поправлю, посмотрю что будет.
да, вот так всё заработало:
#define TOTEXT(A)#A
#define override override; std::string custom_rendering()override{QapDebugMsg("passed");return join(split(join(split(\
TOTEXT(-(\
[ \
{ \
"Sphere": { \
"x": 2.0, \
"y": 5.0, \
"z": 15.0, \
"radius": 0.1, \
"r": 1.0, \
"g": 0.0, \
"b": 0.0, \
"a": 0.5 \
} \
}, \
{ \
"Text": "Debug text #0"\
}, \
{ \
"Line": { \
"x1": 0.0, \
"y1": 0.0, \
"z1": 0.0, \
"x2": 10.0, \
"y2": 20.0, \
"z2": 30.0, \
"width": 1.0, \
"r": 1.0, \
"g": 1.0, \
"b": 1.0, \
"a": 1.0 \
} \
} \
] \
)-) \
,")-"),""),"-("),"");}
//
#include "MyStrategy.h"
#undef override
#undef TOTEXT
В правилах и коде не нашел что-либо связанного с гравитацией.
Как падает мяч, как рассчитывается затухание скорости по вертикальной компоненте, если нет никаких касаний с потолком.
Есть ли гравитация? Как она реализована? Или это специально история умалчивает?
C:\ai18\codeball2018-windows>codeball2018.exe
INFO - options: Opt {
player_1: "tcp-31001",
player_2: "helper",
player_1_name: None,
player_2_name: None,
team_size: None,
duration: None,
nitro: None,
locale: None,
noshow: false,
log_file: None,
replay: None,
results_file: None,
seed: None
}
INFO - Waiting for client on port 31001
INFO - Guessed window DPI factor: 1
INFO - GL version: "3.1.0 - Build 8.15.10.2559"
thread 'main' panicked at 'called Result::unwrap()
on an Err
value: ShaderCompilationError
{ log: "ERROR: 0:1: '' : Version number not supported by OGL driver\nERROR: 0:2: 'precision' : syntax error parse error\n\n\u{0}" }', libcore\result.rs:1009:5
note: Run with RUST_BACKTRACE=1
for a backtrace.
C:\Projects\raic2018\localrunner>codeball2018.exe --p2 helper --nitro false --p1-name me --p2-name bot
INFO - options: Opt {
player_1: "tcp-31001",
player_2: "helper",
player_1_name: Some(
"me"
),
player_2_name: Some(
"bot"
),
team_size: None,
duration: None,
nitro: Some(
false
),
locale: None,
noshow: false,
log_file: None,
replay: None,
results_file: None,
seed: None
}
INFO - Waiting for client on port 31001
INFO - Guessed window DPI factor: 1
INFO - GL version: "4.5.0 NVIDIA 384.76"
INFO - Client connected on port 31001
Аналогичная проблема на ноуте
INFO - Guessed window DPI factor: 1
INFO - GL version: "4.2.0 - Build 10.18.10.3740"
INFO - Client connected on port 31001
Отладку запускаю в Intellij Idea
После старта пишет, что уже "client connected", но висит с черным экраном.
Клиент С++17
MacOS
А как сейчас работает рандом и shuffle в псевдокоде симуляции?
Хотелось бы предсказуемый псевдорандом, который не сложно будет реализовать на разных языках.
Достаточно сделать что-то типа такого:
const a = 45;
const c = 21;
const m = 67;
var seed = 2;
const rand = () => seed = (a * seed + c) % m;
добавить параметр в ЛР чтобы запускался в нужном разрешении
Вы добавили описание физической модели, в доках (Simulation.tex).
Это здорово, но хотелось бы узнать, будете ли вы переводить этот псевдо-код на другие языки(хоть какой нибудь си-подобный язык)?
Этот псевдо-код не очень понятный, сложно читать и разбираться. Не хотелось бы тратить время на перевод на другой язык, если вы и так это сделаете.
Еще более важный вопрос - поменяете ли вы эту физическую модель в будущем?
Было бы не плохо примерно знать что ожидать, чтобы не делать лишнюю работу
При просмотре игры, по центру экрана находится полупрозрачная рамочка. Так же время игры трудно читаемо. До начала игры оно читается нормально.
http://take.ms/Lr90s
Сделайте, чтобы программы запускались на Windows 32-bit.
Неужели так принципиально для перемещения сфер в параллелепипеде или трансляции координат в стратегию собирать программу в 64-bit?
Нужны ли данные куски кода, если есть // Goal back corners где уже (по идее) покрыт кейс всех углов у задней стенки ворот.
https://github.com/MailRuChamps/raic/blob/515f01ae76b4c0ee5f7a712a57215776ae508d95/docs/ru/Simulation.tex#L262
Похоже, что тут можно просто поставить 0, т.к. мы смотрим толко одну четверть
https://github.com/MailRuChamps/raic/blob/515f01ae76b4c0ee5f7a712a57215776ae508d95/docs/ru/Simulation.tex#L190
На геймдев форуме уже писали, что первый микротик симулируется с прошлым радиусом, а остальные 99 с обновленным https://github.com/MailRuChamps/raic/blob/515f01ae76b4c0ee5f7a712a57215776ae508d95/docs/ru/Simulation.tex#L75
Время на сервере отстаёт на 3 минуты.
В пакете c++17 в файле Runner.cpp есть строчки:
"using namespace model;
using namespace std;"
Неплохо было бы убрать лишние using'и.
В игре присутствует случайная пересортировка роботов и коэффициент в столкновении. С этим можно смириться, как с дизайном игры, но это усложняет отладку симуляции.
Было бы удобно иметь ключик в LocalRunner, который исключит сортировку роботов и выставит любой фиксированный (например, (min + max) / 2) коэффициент.
Что-то вроде --norandom.
Стратегия работает: http://russianaicup.ru/game/view/12555
Стратегия не работает: http://russianaicup.ru/game/view/12738
Хотя файл один и тот же
В питоне нет библиотеки numpy. Без неё не запустить нейросети. В прошлом раике и миниаи капе она была. Можно ли её добавить?
В консоль выводится ошибка: http://take.ms/EhO6z
Хотелось бы возможность рисовать отрезки и сферы. А так же выводить логи, но вместе с выводом в консоль на сайте.
Will constants like MIN_HIT_E be moved to model::Rules or somewhere else?
Сейчас для того чтобы побороть превышение лимита по памяти надо вручную контролировать занимаемый объем и дергать gc когда памяти недостаточно.
Пример посылок: 1492 (падает) и 1501 (работает), разница только в System.gc()
Вероятно проблема в том, что нет лимита для JVM, предложение добавить -Xmx250m
в строку запуска java
для пакетов java и kotlin. Локальные тесты показывают что это лучше чем дергать System.gc()
руками.
Покопавшись в пакете c++17, заметил, что метод read() в Arena.h нигде не вызывается, прошу зафиксить это
Согласно правилам, первый микротик используется старое значение радиуса и поверхностной скорости, и только оставшиеся 99 микротика используют новое значение из Action. Нельзя ли сделать более логично: сначала обновить радиус/скорость и потом весь макротик использовать обновленное значение?
When I'm trying to submit a strategy, I get a verification error and empty stdout log
The strategy works locally without any issues.
Here is the submission http://russianaicup.ru/submission/607/view
Camera doesn't save it's position between launches of Local Runner.
It is not convenient, because sometimes I launch Local Runner 5-6 times in a minute.
I think that best option is to set camera position with command line parameters.
Also I'd like to have a command line parameter to disable 3-seconds countdown before each game.
Предлагаю переделать мгновенный сброс рейтинга при галке, чтобы больше не возникало извечного вопроса:
Возможно для более быстрого обратного восхождения стоит играть с теми, кто находился рядом на момент сброса. Но хотя бы для UI как-то этот момент стоит исправить.
P.S. Мне то всё равно, но организаторы слишком ленивы, чтобы заводить самим себе issue :-) И из года в год...
Сабж. Пока я что-то дебагирую локалранер забивает на страту и продолжает игру.
Хочу чтоб он ждал бесконечно долго пока идет отладка.
Take C++ empty strategy. Add 2 lines in implementation of function MyStrategy::act
action.target_velocity_x = 100; action.target_velocity_z = 100;
Everything works fine on localrunner, but nothing works when push strategy to the server. Robots stay on the spawn locations and look at the ball every tick.
Submit strategy as copy-paste all MyStrategy.cpp file
Is it possible to get a result of a local runner game?
In the previous RAIC, the local runner produced result.txt
file on the end of a match:
OK 20000
SEED 50569913203366
1 1249 OK
2 814 OK
Sometimes strategy uses a random number generator. In this case it's reasonable to get the RNG seed from server/local_runner/repeater in order to provide reproducible results during debug sessions or repeater replays
В local runner все работает прекрасно.
Загружаю код на сайт - проверку проходит.
Бота ставят в матчи и иногда он играет, а иногда игроки стоят и ничего не делают.
Тоже самое у многих других игроков наблюдается.
Стратегия на С++, но как говорят на форуме - на других языках та же проблема.
Версия 0.2.2
Вот пример - отсутствует аргумент после запятой в вызовах clamp (таких мест несколько)
стр 12.
dan = min(dan, dan_to_sphere_inner(
point,
(
clamp(
point.x,
arena.bottom_radius - (arena.goal_width / 2),
(arena.goal_width / 2) - arena.bottom_radius,
),
clamp(
point.y,
arena.bottom_radius,
arena.goal_height - arena.goal_top_radius,
),
(arena.depth / 2) + arena.goal_depth - arena.bottom_radius),
arena.bottom_radius))
В прошлые годы в результатах можно было увидеть seed, чтобы потом проще воспроизвести игру. Сейчас для этого приходится всегда генерировать заранее известный свой.
Приходится каждый раз перезапускать ЛР.
Хотелось бы, чтобы он после того как от него отключились все стратегии, а потом заново подключились, сам реинициализировался, или по хоткею, без необходимости его перезапуска
Which one i should use for calculations? Double or Float? Which one is used on server side?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.