Giter Site home page Giter Site logo

mailruchamps / raic-2018 Goto Github PK

View Code? Open in Web Editor NEW
43.0 14.0 32.0 21.2 MB

Russian AI Cup — artificial intelligence programming contest. Official website: http://russianaicup.ru

Dockerfile 0.10% C# 1.66% Shell 0.37% C++ 84.03% C 3.83% Java 0.71% Kotlin 0.73% Python 1.63% Ruby 0.98% Rust 1.84% CMake 0.04% Batchfile 0.19% Scala 0.68% F# 1.64% JavaScript 1.57%

raic-2018's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

raic-2018's Issues

Localrunner для MacOs

Здравствуйте. Обновите, пожалуйста, версию localrunner'а для macOs тут http://russianaicup.ru/p/localrunner, либо подскажите где скачать актуальную. В том, что можно скачать, не работают последние опции (например --fast-forward), а так же не приходят константы в объекте rules.

Сброс рейтинга при галке

Предлагаю переделать мгновенный сброс рейтинга при галке, чтобы больше не возникало извечного вопроса:

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

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

P.S. Мне то всё равно, но организаторы слишком ленивы, чтобы заводить самим себе issue :-) И из года в год...

Добавить лимит по памяти в JVM

Сейчас для того чтобы побороть превышение лимита по памяти надо вручную контролировать занимаемый объем и дергать gc когда памяти недостаточно.

Пример посылок: 1492 (падает) и 1501 (работает), разница только в System.gc()

Вероятно проблема в том, что нет лимита для JVM, предложение добавить -Xmx250m в строку запуска java для пакетов java и kotlin. Локальные тесты показывают что это лучше чем дергать System.gc() руками.

Коллизии между игроками

Как происходит расчет коллизий между двумя игроками на поле, если они находятся рядом и один из них прыгает(увеличивается в размерах согласно правилам).
Ведь исходя из этой логики игрок НЕ может перепрыгнуть другого игрока. И может даже прыжком, не касаясь, оттолкнуть его.

Camera position in Local Runner

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.

Исходники localrunner

Будут ли открыты исходники localrunner?
Лично мне хочется добавить возможность менять состояние мира, хотя бы позицию / скорость ботов

Проблемы при использовании localrunner совместно с отладчиком

  1. При отладке и переключении между ide и localrunner в нем пропадает изображение и начинают показываться всякие артефакты, вроде куска IDE, рабочего стола

image

  1. Во время отладки после прохождения какого-то таймаута игра отцепляется от отладчика и продолжается до забитого гола.
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

Номер текущего тика текущеко раунда

Наравне с "current_tick: Int // Номер текущего тика" добавте "current_round_tick: Int // Номер текущего тика текущеко раунда". Он должен обнуляться после каждого забитого гола.

Не определено значение delta_time

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

Arena.h не задействован

Покопавшись в пакете c++17, заметил, что метод read() в Arena.h нигде не вызывается, прошу зафиксить это

Problems with C++ on server side

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

Гравитация

В правилах и коде не нашел что-либо связанного с гравитацией.
Как падает мяч, как рассчитывается затухание скорости по вертикальной компоненте, если нет никаких касаний с потолком.
Есть ли гравитация? Как она реализована? Или это специально история умалчивает?

Дебаг в localrunner

Хотелось бы возможность рисовать отрезки и сферы. А так же выводить логи, но вместе с выводом в консоль на сайте.

Предложение: режим локалраннера без рандома

В игре присутствует случайная пересортировка роботов и коэффициент в столкновении. С этим можно смириться, как с дизайном игры, но это усложняет отладку симуляции.
Было бы удобно иметь ключик в LocalRunner, который исключит сортировку роботов и выставит любой фиксированный (например, (min + max) / 2) коэффициент.
Что-то вроде --norandom.

Сделайте какой нибудь Roadmap

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

Было бы не плохо примерно знать что ожидать, чтобы не делать лишнюю работу

Запуск LocalRunner'а без отрисовки графики (batchmode)

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

Ошибки в формулах документации

Версия 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))

Simulation clarification

Нужны ли данные куски кода, если есть // Goal back corners где уже (по идее) покрыт кейс всех углов у задней стенки ворот.
https://github.com/MailRuChamps/raic/blob/515f01ae76b4c0ee5f7a712a57215776ae508d95/docs/ru/Simulation.tex#L262

https://github.com/MailRuChamps/raic/blob/515f01ae76b4c0ee5f7a712a57215776ae508d95/docs/ru/Simulation.tex#L296

Похоже, что тут можно просто поставить 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

на сайте в примере для custom_rendering потерялись двоеточия

dont_work

вот этот пример(из 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

Программы для x86-32

Сделайте, чтобы программы запускались на Windows 32-bit.
Неужели так принципиально для перемещения сфер в параллелепипеде или трансляции координат в стратегию собирать программу в 64-bit?

Версия Kotlin

Планируется ли поддержка более новой версии 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

Using namespace

В пакете c++17 в файле Runner.cpp есть строчки:
"using namespace model;
using namespace std;"
Неплохо было бы убрать лишние using'и.

Разный random

А как сейчас работает рандом и shuffle в псевдокоде симуляции?
Хотелось бы предсказуемый псевдорандом, который не сложно будет реализовать на разных языках.
Достаточно сделать что-то типа такого:
const a = 45;
const c = 21;
const m = 67;
var seed = 2;
const rand = () => seed = (a * seed + c) % m;

numpy

В питоне нет библиотеки numpy. Без неё не запустить нейросети. В прошлом раике и миниаи капе она была. Можно ли её добавить?

Please add the RNG seed member into Rules class

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

Tensorflow for Python and Java

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 :)

Win7 inegrated graphics card - gl crahes

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.

Get result of game

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 

Отсутствует seed в результатах localrunner

В прошлые годы в результатах можно было увидеть seed, чтобы потом проще воспроизвести игру. Сейчас для этого приходится всегда генерировать заранее известный свой.

Игроки не перемещаются

В local runner все работает прекрасно.
Загружаю код на сайт - проверку проходит.
Бота ставят в матчи и иногда он играет, а иногда игроки стоят и ничего не делают.
Тоже самое у многих других игроков наблюдается.
Стратегия на С++, но как говорят на форуме - на других языках та же проблема.

Постоянный перезапуск ЛР

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

Cython

Будет ли возможность работать с Cython для пакета Python3?

Нелогичная физика

Согласно правилам, первый микротик используется старое значение радиуса и поверхностной скорости, и только оставшиеся 99 микротика используют новое значение из Action. Нельзя ли сделать более логично: сначала обновить радиус/скорость и потом весь макротик использовать обновленное значение?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.