🚩
This is the development repo! You most likely won't need anything in here; do not clone this. Instead, follow the instructions here to get started.
/engine: Game engine in Java/specs: Game specs in Markdown (and HTML generation)/schema: Game serialization schema (basically, an encoding of all units and events in a game)/client: Game client (visualizer and playback) in TypeScript/example-bots: A bunch of example bots for the game!
Windows users: Instead of ./gradlew, use gradlew for all commands.
(whenever Gradle has problems with something, run ./gradlew clean and see if it helps)
To run a game, run
./gradlew headless
The replay file will be in /matches. Use headlessX for bots that are in battlecode20-internal-test-bots. You can specify the robot code and map like this: ./gradlew headless -Pmaps=maptestsmall -PteamA=examplefuncsplayer -PteamB=examplefuncsplayer.
(Make sure you have a recent version of npm: sudo npm cache clean -f && sudo npm install -g n && sudo n stable && PATH="$PATH".)
Navigate to the client folder and run npm run install-all. You can then run
npm run watch
which will launch the client on http://localhost:8080 (if available).
When the next edition of Battlecode comes around, it will probably useful to reuse a fair amount of this codebase. Maintaining git history is nice. Use git-filter-repo for this:
pip3 install git-filter-repo
Make sure you have a recent git version (run git --version and make sure it's compatible with git-filter-repo).
As an example, the following steps were taken to port from battlehack20 to this repo:
First, create a fresh battlecode21 repo on GitHub. Clone it. Then, starting in that repo:
cd ..
git clone https://github.com/battlecode/battlehack20 battlehack20-export
cd battlehack20-export
git filter-repo --tag-rename '':'bh20-'
cd ..
cd battlecode21
git pull ../battlehack20-export —allow-unrelated-histories
(Git filter-repo can do lots of cool things; see its documenation, old examples in our repo, etc. for ideas. For example, renaming directories is possible. )
Then, port all of the codebase! Don't forget to update the files in the highest level of the repo too, such as this readme itself, and the release script.