Sandbox — contest that lasts the whole period of CodeCraft 2020 championship.
To participate in the championship, you need to have at least one accepted strategy in the Sandbox at the moment Round 1 starts. You can submit your strategies to the Sandbox any time and create games with it. Qualification games are regularly created in the Sandbox. In a qualification game only your last submitted (and accepted by the system) strategy takes part. Participants of a qualification game are chosen randomly. Each strategy takes part in about one qualification game per hour (this interval may be changed by the jury, but is the same for all the participants). Rating of the participants is calculated based on results of these games. The starting rating value of 1200 is assigned to anyone, who submitted a strategy (and it is accepted by the system) to the Sandbox.
A modified version of the Elo rating system is used for rating calculation. In short: an expected place is calculated for each participant, and his rating increases in case of him taking a higher place, and decreases in case of taking a lower place.
1080 participants with the greatest rating in the Sandbox are chosen to participate in Round 1 (in case of equal ratings a participant who submitted his strategy earlier has bigger priority) at the moment of Round 1 beginning.
In addition to qualification games, participants can create their own games. To do so, you need to submit your strategy and choose opponents. You can choose any strategy submitted not later than your last accepted strategy as an opponent. You can select any version of your strategy available at the moment of creating a game. When you create a game, you can choose one of no more than three formats: Round 1, Round 2 or Finals format. Before Round 1 only its format is available, before Round 2 only formats of first two rounds are available. After Round 2 all 3 game types are available.
Results of games created by participants do not affect final results. Qualification games will be held until the end of the championship. These games affect only ratings of the participants in the Sandbox and will not be taken into consideration in the championship itself. Although, before each stage of the championship (except for Round 1) best strategies from the Sandbox will be allowed to take part in the championship. So, strategies with the greatest rating in the Sandbox, that did not pass to Round 2 in the main championship will be allowed to participate in Round 2. Similarly, additional strategies will be allowed to participate in the Finals. After the Sandbox closes, authors of the best strategies will be given prizes (Finals winners will be not included in this list).
Participants who have been eliminated from the championship can still improve and submit their strategies, as well as create their own games. They are still rightful participants of the Sandbox, and in case of high results also compete for special prizes.
Saint Petersburg
После одной созданной игры, возможность создавать новые пропала: появляется и тут же исчезает список игроков. В комментарии сказано, что можно создать 4 игры за 20 минут. Но у меня оказалась всего одна попытка, и, видимо, больше не предвидится.
SOFTPOINT
А как так может быть, стратегия заняла первое место, а ей начислили -248?
А как так может быть, стратегия заняла первое место, а ей начислили -248?
При отправке стратегии поставил галку “Увеличить изменчивость рейтинга”.
А как так может быть, стратегия заняла первое место, а ей начислили -248?
Это самые часто наступаемые грабли на всех раиках. Требуйте переименовать галку с “Изменчивость рейтинга” на “Начать со стартового рейтинга”
SOFTPOINT
Нелогично это. Увеличить изменчивость, по-моему, означает - увеличить влияние очередных игр на рейтинг, а не сломать логику оценки результатов. Т.е. выигрыши и проигрыши должны начислять больший рейтинг в обе стороны, но не менять выигрыш на проигрыш. Выиграл должно быть +, а проиграл -. При любом состоянии галки. Вот это человекопонятный принцип
При отправке стратегии поставил галку “Увеличить изменчивость рейтинга”.
я понимаю, что поставил, только это маразм
Нелогично это. Увеличить изменчивость, по-моему, означает - увеличить влияние очередных игр на рейтинг, а не сломать логику оценки результатов. Т.е. выигрыши и проигрыши должны начислять больший рейтинг в обе стороны, но не менять выигрыш на проигрыш. Выиграл должно быть +, а проиграл -. При любом состоянии галки. Вот это человекопонятный принцип
Ну так все и есть, просто вначале дается “штраф” в несколько сотен очков рейтинга.
Это самые часто наступаемые грабли на всех раиках. Требуйте переименовать галку с “Изменчивость рейтинга” на “Начать со стартового рейтинга”
Всё таки не совсем со стартового, но большими буквами выделить, что рейтинг упадёт и упадёт он не в момент отправки, а со следующей игры, стоит.
Shatura
не заливается стратегия… может кто скажет что имеет ввиду валидатор? Предыдущие норм залились В отладке все работает и теститься.. ПРОТОКОЛ stdout:
stderr: + cd /output + java -Xmx250m -jar ./aicup2020-jar-with-dependencies.jar gameserver 31003 b4eddb8b272fa76aaced30390e68627c07fd4f04_2 Exception in thread “main” java.io.IOException: Unexpected EOF at util.StreamUtil.readBytes(StreamUtil.java:23) at util.StreamUtil.readInt(StreamUtil.java:33) at model.ServerMessage.readFrom(ServerMessage.java:8) at Runner.run(Runner.java:29) at Runner.main(Runner.java:51) Exit code:1 Memory used: 39MB Consumed time: 2883
Sabre
А сколько участников будет в Раундах и Финале? Не могу найти это в правилах
Khanty-Mansiysk
“Unable to read beyond the end of the stream.” at System.IO.BinaryReader.InternalRead(Int32 numBytes) at System.IO.BinaryReader.ReadInt32() at Aicup2020.Model.ServerMessage.ReadFrom(BinaryReader reader) in C:\temp\aicup\aicup-CSharp2\aicup2020\Model\ServerMessage.cs:line 8 at Aicup2020.Runner.Run() in C:\temp\aicup\aicup-CSharp2\aicup2020\Runner.cs:line 32 at Aicup2020.Runner.Main(String[] args) in C:\temp\aicup\aicup-CSharp2\aicup2020\Runner.cs:line 56
Kirov
А сколько участников будет в Раундах и Финале? Не могу найти это в правилах
Раунд 1: 1080 участников Раунд 2: 360 участников (300 - попадает через первый раунд, 60 - через песочницу) Финал: 60 участников (60 - попадает через второй раунд, 10 - через песочницу)
Раунд 1: 1080 участников Раунд 2: 360 участников (300 - попадает через первый раунд, 60 - через песочницу) Финал: 60 участников (60 - попадает через второй раунд, 10 - через песочницу)
И в новой версии правил это теперь указано.
Murino
Баг: https://russianaicup.ru/game/view/58214 Игра закончилась победой vickingur (остался 1 на карте), но победу почему-то засчитали мне.
Баг: https://russianaicup.ru/game/view/58214 Игра закончилась победой vickingur (остался 1 на карте), но победу почему-то засчитали мне.
Он же по очкам отстал, это баг его стратегии
Он же по очкам отстал, это баг его стратегии
Заодно моей, я вообще первый вылетел
Заодно моей, я вообще первый вылетел
Перепроверил по правилам. Я был уверен что очки добавляются в конце, если остался 1 на карте. Судя по правилам - это есть только в Финале.
Getting this verification error:
stdout:
stderr:
+ cd /output
+ python ./main.py gameserver 31001 6029769f6a44565a73e7882652e5b9a79029aa33_0
Traceback (most recent call last):
File “./main.py”, line 45, in
Runner(host, port, token).run()
File “./main.py”, line 26, in run
message = model.ServerMessage.read_from(self.reader)
File “/output/model/server_message.py”, line 4, in read_from
tag = stream.read_int()
File “/output/stream_wrapper.py”, line 26, in read_int
return self.INT_FORMAT_STRUCT.unpack(self.stream.read(4))[0]
struct.error: unpack requires a buffer of 4 bytes
Exit code:1
Memory used: 8MB
Consumed time: 1804
Player crashed: IO error: -1 is invalid value
anyone know why this might be happening?
Getting this verification error: stdout: stderr: + cd /output + python ./main.py gameserver 31001 6029769f6a44565a73e7882652e5b9a79029aa33_0 Traceback (most recent call last): File “./main.py”, line 45, in Runner(host, port, token).run() File “./main.py”, line 26, in run message = model.ServerMessage.read_from(self.reader) …
As the error says, “-1 is invalid value”. This is most likely one of the coordinates that you have sent. Only non-negative coordinates are valid
Getting this verification error: stdout: stderr: + cd /output + python ./main.py gameserver 31001 6029769f6a44565a73e7882652e5b9a79029aa33_0 Traceback (most recent call last): File “./main.py”, line 45, in Runner(host, port, token).run() File “./main.py”, line 26, in run message = model.ServerMessage.read_from(self.reader) …
Probably you return invalid coordinates which are outside the world in one of actions.
As the error says, “-1 is invalid value”. This is most likely one of the coordinates that you have sent. Only non-negative coordinates are valid
Thanks kuviman and mixei4. Seems I was using negative coordinates.
VMedia
Фича-реквест: Думаю, было бы здорово показывать хинт при наведении на ник участника в списке игр. Было бы удобно видеть там рейтинг участника - количество очей и текущее место.
Will Sandbox games switch to type Round 2 after Round 1 finishes (also to type Final after Round 2) ? Or will it include all available types of Rounds?
Will Sandbox games switch to type Round 2 after Round 1 finishes (also to type Final after Round 2) ? Or will it include all available types of Rounds?
It will be include all available types of Rounds.
It will be include all available types of Rounds.
Thanks. Do you know if there will be an indication as to what type of Round it is?
Thanks. Do you know if there will be an indication as to what type of Round it is?
Sorry, never mind. It can be inferred.
San Diego
I am somewhat frustrated about the grading method. I get a lot of TLEs, but upon benchmarking (by just printing to stdout the amount of time spent), my program (the total sum of processing each tick) has never exceeded 2 seconds, while inputting takes 80 seconds. I am using java. Any suggestions?
I am somewhat frustrated about the grading method. I get a lot of TLEs, but upon benchmarking (by just printing to stdout the amount of time spent), my program (the total sum of processing each tick) has never exceeded 2 seconds, while inputting takes 80 seconds. I am using java. Any suggestions?
There is a time limit for strategy to reply with an action for each tick - 1 second of real time, as well as a time limit for the whole game - 40 seconds of cpu time.
I believe the time limit is only 1 sec.
San Diego
There is a time limit for strategy to reply with an action for each tick - 1 second of real time, as well as a time limit for the whole game - 40 seconds of cpu time. I believe the time limit is only 1 sec.
The sum of all my ticks never exceeds 2 seconds, and I’m getting TLE because of the total time exceeding 40 seconds.
The sum of all my ticks never exceeds 2 seconds, and I’m getting TLE because of the total time exceeding 40 seconds.
Oh, sorry. Weird.
Хотам и П.В
Nizhny Novgorod
У меня такое было в том числе при использовании DebugInterface без проверки на nullptr. Похоже он не null только локалраннере.
San Diego
I am somewhat frustrated about the grading method. I get a lot of TLEs, but upon benchmarking (by just printing to stdout the amount of time spent), my program (the total sum of processing each tick) has never exceeded 2 seconds, while inputting takes 80 seconds. I am using java. Any suggestions?
Bump
Не могу понять, почему строитель не может построить дом в выбранном месте. Вижу на карте, что он стоит с отступом от других строений, но дом не строится. Прошу помочь, в частности, пояснить правила выбора места для строительства.
Не могу понять, почему строитель не может построить дом в выбранном месте. Вижу на карте, что он стоит с отступом от других строений, но дом не строится. Прошу помочь, в частности, пояснить правила выбора места для строительства.
Строитель должен стоять вплотную к стене дома, по диагонали нельзя.
PT Visionet Internasional
Quick tip from me, if you keep getting verification error for no real reason, check your strat running time per ticks, especially in the beginning, if in the beginning you take up 500ms++, then the server may kick you out immediately
Moscow
а кто-нибудь знает, как повторить игру в песочнице с той же картой ? делаю копию игры, участники те-же, а карта то другая …
Simferopol
а кто-нибудь знает, как повторить игру в песочнице с той же картой ? делаю копию игры, участники те-же, а карта то другая …
никак
Moscow
никак
а может локально конкретную карту можно как-нибудь подгрузить, чтоб на ней протестироваться ?
Moscow
а может локально конкретную карту можно как-нибудь подгрузить, чтоб на ней протестироваться ?
Нет, какой сид был у карты узнать нельзя. Можно только скачать повтор и переиграть его на новой версии через repeater и проверить что-то в отладчике, но получить измененное поведение юнитиов на ней нельзя.
ХНУРЭ (бывш. ХИРЭ, ХТУРЭ)
А что правда никто не придумал? Если локально хочешь ту же карту, то открываешь в повторе. жмешь паузу на 0 тике. и Ctrl+E и потом начинать с сохраненной позиции. а вот на сервере похоже что никак
Moscow
О, это интересно. Но не поможет если есть что-то связанное с другими игроками.
Moscow
А что правда никто не придумал? Если локально хочешь ту же карту, то открываешь в повторе. жмешь паузу на 0 тике. и Ctrl+E и потом начинать с сохраненной позиции. а вот на сервере похоже что никак
ctrl-E сохраняет карту ? а как потом запустить на ней стратегию ?
ХНУРЭ (бывш. ХИРЭ, ХТУРЭ)
ctrl-E сохраняет карту ? а как потом запустить на ней стратегию ?
в меню есть возможность загрузить состояние
Moscow
в меню есть возможность загрузить состояние
Спасибо! пошёл осваивать …
Yandex
А почему некоторые партии считаются упавшими для всех участников? Я прогонял локально копию - по крайней мере моя не падала, да и поведение остальных не похоже на упавших до самого конца. пример: https://russianaicup.ru/game/view/378622
А почему некоторые партии считаются упавшими для всех участников? Я прогонял локально копию - по крайней мере моя не падала, да и поведение остальных не похоже на упавших до самого конца. пример: https://russianaicup.ru/game/view/378622
там TIME LIMIT EXCEEDED у победителя. Бывает такое, что падение одной стратегии вызывает ощущение падения у остальных.