Для написания собственной стратегии для CodeCraft опубликованы языковые пакеты. Также доступно в репозитории на GitHub. На данный момент мы поддерживаем языки:
Язык | Компилятор | Ссылки |
---|---|---|
C++20 | GNU C++ 10.2 | download |
C# | .Net 5.0 | download |
D | dmd 2.080 | download |
Go | Go 1.15 | download |
Java | Java 15 | download |
Kotlin | Kotlin 1.4.20 | download |
Python | CPython 3.9 / PyPy 3.6 | download |
Ruby | JRuby 9 | download |
Rust | Rust 1.48 | download |
Scala | Scala 2.13.4 | download |
F# | .Net 5.0 | download |
JavaScript | NodeJS 15.3 | download |
Каждый языковой пакет содержит в себе набор моделей, класс MyStrategy, в котором вы пишете логику своей стратегии, а также прочие файлы необходимые для запуска процесса стратегии и обмена данными с игровым сервером.
Екатеринбург
а в мавен можно добавлять библиотеки? lombok например? логирование? Помню раньше пользовательские классы заменялись на оригинальные перд сборкой, теперь как с этим?
АлтГУ
Если у кого пакет C++ откажется собираться, ссылаясь на "неразрешённый внешний символ __imp_*“, то добавление в начало своего TcpStream.hpp строки #pragma comment(lib, ”Ws2_32.lib") решит проблему
Ренессанс жизнь
Ребят, пожскадите, пожалуйста: 1. Как понять, какая версия Python3 будет использована сервере? 2. Где то есть описание API для python (или вообще какое то) человеческим языком, чтобы не надо было угадывать по коду и названию? Кажется, в прошлых соревнованиях была PDFка с описанием API
Не смог найти информацию о лицензии. Код языковых пакетов прошлых лет опубликован на гитхабе под GPL-3.0, а сейчас?
Сразу Java 15 - сильно!
Тоже не понял. В прошлый раз была 8-ка, и всё было замечательно.
Так трудно было явно указывать типы в пакете на питоне? Ни автодополнение, ни линтер, не работают…
Codeforces
Есть ли пример базовой стратегии на питоне?
Примеры стратегий для всех языков будут позже
а в мавен можно добавлять библиотеки? lombok например? логирование? Помню раньше пользовательские классы заменялись на оригинальные перд сборкой, теперь как с этим?
Сборка на сервере происходит без доступа к интернету. Добавить библиотеку можно будет через пулл реквест на гитхабе, как только появится репозиторий
Кто-нибудь знает используемую версию NodeJS ?
Используется последняя версия, 15.3
Ребят, пожскадите, пожалуйста: 1. Как понять, какая версия Python3 будет использована сервере? 2. Где то есть описание API для python (или вообще какое то) человеческим языком, чтобы не надо было угадывать по коду и названию? Кажется, в прошлых соревнованиях была PDFка с описанием API
Используется последняя версия - 3.9. Документацию API можно найти на странице с правилами
NTUA, Athens
Hello all, gl hf! Are there sample strategies for languages other than the Rust example?
Hello all, gl hf! Are there sample strategies for languages other than the Rust example?
Not yet, but they will be added later
Телекомпания СЭТ
Как на Java отправить стратегию? Как в прошлом году pom + src не работает
Кто на питоне пишет, сталкивались вы с тем, что ошибки в классе MyStrategy всплывают, как ошибки в классе StreamWrapper? Например, помнится я неправильно создал экземпляр класса Vector32Int, мне вместо ошибки о создании объекта давало ошибку, что StreamWrapper в каком то методе получил 1 байт вместо 4-х. Если кто то у себя это пофиксил или знает, как, это сделать, отпишите, пожалуйста)
УрФУ
Кто пишет на JavaScript, подскажите пожалуйста, у меня при локальном запуске выдается ошибка: Socket error: write ECONNABORTED, а на платформе: Socket error: write EPIPE. Не понимаю что это значит и от чего падает, кроме этого ничего не пишет.
Москва
Visual Studio 2019 еще не обновилась, чтобы использовать GNU 10.2)) Или я не нашел как это сделать
Москва
Скачал gcc-10.2.0-no-debug. Еле нашел эту версию компилятора. При попытке компилировать проект выдается куча ошибок
Codeforces
Visual Studio 2019 еще не обновилась, чтобы использовать GNU 10.2)) Или я не нашел как это сделать
необязательно использовать тот же компилятор, что на сервере. должно собираться и в Visual Studio
Эх php снова обошли стороной :)
Если вы можете создать языковой пакет для PHP по аналогии с другими языками, мы его добавим. Можно сделать пулл реквест в репозиторий: https://github.com/MailRuChamps/raic-2020
Артем
Кто понял как текст писать? Я примерно делаю: db.PlacedText(debugvertex,‘testtesttesttesttest’,0,20) debug_interface.send(DebugCommand.Add(db)) Но ничего не выходит
Кто на питоне пишет, сталкивались вы с тем, что ошибки в классе MyStrategy всплывают, как ошибки в классе StreamWrapper? Например, помнится я неправильно создал экземпляр класса Vector32Int, мне вместо ошибки о создании объекта давало ошибку, что StreamWrapper в каком то методе получил 1 байт вместо 4-х. Если кто то у себя это пофиксил или знает, как, это сделать, отпишите, пожалуйста)
Пофиксилось с помощью скачивания новой версии приложения
Москва
Кто-то, кто справился скомпилировать под c++, расскажите плз, как вы это сделали У меня выскакивает ошибка с кучей “undefined reference to”: /usr/bin/ld: main.cpp:(.text._ZN6Runner3runEv[_ZN6Runner3runEv]+0x55): undefined reference to
MyStrategy::MyStrategy()’ /usr/bin/ld: main.cpp:(.text._ZN6Runner3runEv[_ZN6Runner3runEv]+0x79): undefined reference to ServerMessage::readFrom(InputStream&)' ...
Компилирую так: g++ -std=c++2a -o code main.cpp
ИП
Кто-то, кто справился скомпилировать под c++, расскажите плз, как вы это сделали У меня выскакивает ошибка с кучей “undefined reference to”: /usr/bin/ld: main.cpp:(.text._ZN6Runner3runEv[_ZN6Runner3runEv]+0x55): undefined reference to MyStrategy::MyStrategy()’ /usr/bin/ld: main.cpp:(.text._ZN6Runner3runEv[_ZN6Runner3runEv]+0x79): undefined reference to …
Такая же ерунда при компиляции под Win :-( C:\Temp\ccfQq10s.o:main.cpp:(.text$_ZN6RunnerC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS7_[ZN6RunnerC1ERKNSt7_cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS7_]+0x54): undefined reference to `TcpStream::TcpStream(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, int)’
Codeforces
Кто-то, кто справился скомпилировать под c++, расскажите плз, как вы это сделали У меня выскакивает ошибка с кучей “undefined reference to”: /usr/bin/ld: main.cpp:(.text._ZN6Runner3runEv[_ZN6Runner3runEv]+0x55): undefined reference to MyStrategy::MyStrategy()’ /usr/bin/ld: main.cpp:(.text._ZN6Runner3runEv[_ZN6Runner3runEv]+0x79): undefined reference to …
помимо main.cpp
в пакете есть другие исходники, так что компилировать их тоже надо) приложен cmake проект (CMakeLists.txt
), который можно испортировать с помощью вашей ide, либо через консоль cmake . && cmake --build .
Москва
Примеры стратегий для всех языков будут позже
а когда ждать ? очень хочется увидеть пример назначения действий юнитам для java …
Яндекс
Я правильно понимаю, что в исходном пакете на Rust я могу менять любые файлы, включая Cargo.toml?
Добавьте модуль numba для Python, позволяет делать расчёты со скоростью с++, при этом использует обычный синтаксис в отличии от cython. Это jit компилятор для стандартного CPython, лучше чем PyPy.
Я правильно понимаю, что в исходном пакете на Rust я могу менять любые файлы, включая Cargo.toml?
Можно менять все файлы языкового пакета, но сборка будет происходить без доступа к интернету, так что добавление новых зависимостей только через пулл реквесты на GitHub
Fesco
при попытке построить нового юнита внутри базы C# пакет падает с ошибкой т.к не может обработать пакет ответа от сервера
при попытке построить нового юнита внутри базы C# пакет падает с ошибкой т.к не может обработать пакет ответа от сервера
аааа нет это эксепшн если строить что угодно за пределами карты
аааа нет это эксепшн если строить что угодно за пределами карты
например с координатами (-1,1)
Москва
Вопрос к знатокам C++: почему у меня следующий код: if(playerView.entities[i].entityType = EntityType::BUILDER_UNIT) { /*do something*/ } выполняется, даже когда у сущности другой тип? в отладчике поставил точку останова внутри данного условия и вижу, что попадаю в цикл когда левая часть - любой союзный юнит или постройка?
Вопрос к знатокам C++: почему у меня следующий код: if(playerView.entities[i].entityType = EntityType::BUILDER_UNIT) { /*do something*/ } выполняется, даже когда у сущности другой тип? в отладчике поставил точку останова внутри данного условия и вижу, что попадаю в цикл когда левая часть - любой союзный юнит или постройка?
потому что должно быть “==” а не “=”
потому что должно быть “==” а не “=”
А, ну да - ошибся. Я не вставил в сообщение “==” - в коде все верно. Но все равно не работает - уже всю голову себе сломал
Москва
При вызове любого метода debugInterface на go падает ошибка в /stream.ReadInt32, кто-нибудь сталкивался?
Москва
Вот полный код метода getAction(): Action result = Action(std::unordered_map<int, EntityAction>()); int myId = playerView.myId; for (size_t i = 0; i < playerView.entities.size(); i++) { const Entity& entity = playerView.entities[i]; if (entity.playerId == nullptr || entity.playerId != myId) { continue; } if (entity.entityType == EntityType::BUILDER_UNIT); { / do something */ int i = 1; } continue; } Точка останова на строке int i = 1 - заходит в условие при любом entityType
Москва
Прошу прощение, с маркдауном разобраться с виду так же сложно, как с другой моей проблемой…
Прошу прощение, с маркдауном разобраться с виду так же сложно, как с другой моей проблемой…
а в отладчике playerView.entities[i].entityType точно другого типа , просто i =1 как то странно и возвращает итератор вначало , а там уже нас ждет этот самый билдер
Тула
Здравствуйте! Не поделится ли кто примером на Java, кок можно через API лог писать.
Кто пишет на JavaScript, подскажите пожалуйста, у меня при локальном запуске выдается ошибка: Socket error: write ECONNABORTED, а на платформе: Socket error: write EPIPE. Не понимаю что это значит и от чего падает, кроме этого ничего не пишет.
Проверь координаты, у меня такое было, когда я отправил в target new model.Vec2Int(0, 0)
После new model.Vec2Int(1, 1) стало успешно
Проверь координаты, у меня такое было, когда я отправил в target new model.Vec2Int(0, 0) После new model.Vec2Int(1, 1) стало успешно
Нет, не помогло, всё равно падает =( пошёл дебажить
Кто пишет на JavaScript, подскажите пожалуйста, у меня при локальном запуске выдается ошибка: Socket error: write ECONNABORTED, а на платформе: Socket error: write EPIPE. Не понимаю что это значит и от чего падает, кроме этого ничего не пишет.
Раздебажил свой случай - я пихал в stream.writeInt(value) // value === undefined
Добавь в stream-wrapper логирование того, что шлёшь. По итогу, я вместо Map отправлял Array, и у него не определёно свойство size
Freelancer
При загрузке C# приложения архивом возникает ошибка компиляции Unable to load the service index for source https://api.nuget.org/v3/index.json. Хотя никаких сторонних библиотек я не использую и csproj файл не изменял. В чем причина?
Piano.io
Можно, пожалуйста, зааппрувить https://github.com/MailRuChamps/raic-2020/pull/101 ?
Кто-то может подсказать: (языковой пакет JavaScript) как задать действия юниту? Можно ли как-то не задавать “полный набор” команд? Например хочу чтобы юнит просто шел, а если не возможно, то стоял. Но создается впечатление, что все равно нужно указывать и остальные команды (строительства, атаки и ремонта).
Кто-то может подсказать: (языковой пакет JavaScript) как задать действия юниту? Можно ли как-то не задавать “полный набор” команд? Например хочу чтобы юнит просто шел, а если не возможно, то стоял. Но создается впечатление, что все равно нужно указывать и остальные команды (строительства, атаки и ремонта).
в правилах написано что можно задать все команды , но будет выплняться та что приоритетней , например если задать move то выполняется он а другие игнорируются
Екатеринбург
При сабмите выдаёт вот это:
`stdout:
stderr: + cd /output + dotnet ./aicup2020.dll gameserver 31001 0cce0bceb1c4b2c5bb321998833bbea3c9d4255e_0 Unhandled exception. System.IO.EndOfStreamException: 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 /project/Model/ServerMessage.cs:line 8 at Aicup2020.Runner.Run() in /project/Runner.cs:line 29 at Aicup2020.Runner.Main(String[] args) in /project/Runner.cs:line 56 run.sh: line 4: 8 Aborted (core dumped) dotnet ./aicup2020.dll “$@” Exit code:134 Memory used: 157MB Consumed time: 1013 Player crashed: IO error: Resource temporarily unavailable (os error 11)`
Что с этим делать?
При сабмите выдаёт вот это:
stdout: stderr: + cd /output + dotnet ./aicup2020.dll gameserver 31001 0cce0bceb1c4b2c5bb321998833bbea3c9d4255e_0 Unhandled exception. System.IO.EndOfStreamException: 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 /project/Model/ServerMessage.cs:line 8 at Aicup2020.Runner.Run() in /project/Runner.cs:line 29 at Aicup2020.Runner.Main(String[] args) in /project/Runner.cs:line 56 run.sh: line 4: 8 Aborted (core dumped) dotnet ./aicup2020.dll “$@” Exit code:134 Memory used: 157MB Consumed time: 1013 Player crashed: IO error: Resource temporarily unavailable (os error 11)
…
Предыдущую стратегию пропускает, эту - нет. Вдруг это важно :)
Санкт-Петербург
При сабмите выдаёт вот это: Обычно подобные ошибки в случае, если отправляются неверные команды (координаты за границами карты и тому подобное)
Изюм
А не осталось ли у кого-нибудь языковых пакетов 2018 года? А то за все года все файлы сохраняю, а за 2018 куда-то посеял, а найти не могу.
ХНУРЭ (бывш. ХИРЭ, ХТУРЭ)
А не осталось ли у кого-нибудь языковых пакетов 2018 года? А то за все года все файлы сохраняю, а за 2018 куда-то посеял, а найти не могу.
У меня есть, если еще актуально
Изюм
У меня есть, если еще актуально
А можете прислать на почту d@izyum.su или сюда бросить https://dyavol.su/ur ?
ХНУРЭ (бывш. ХИРЭ, ХТУРЭ)
А можете прислать на почту d@izyum.su или сюда бросить https://dyavol.su/ur ?
закинул по ссылке
А не осталось ли у кого-нибудь языковых пакетов 2018 года? А то за все года все файлы сохраняю, а за 2018 куда-то посеял, а найти не могу.