Registration
: Registration Form (closed) (Google Questionnaire Link)
Registration Deadline is June 12rd (Sunday) 2022 ==> June 19th (Sunday) 2022.
The following details (only) of all entries that successfully register and the version & BWAPI version details of any unchanged entries from last year will be published by 18th June 2022:
Entry Name, Contact Person, Team Members, Affiliation(s), Dept/lab(s) of Affiliation(s) (if applicable), Occupation(s) (note: just “Hobbyist” can be provided), Nationality(s) (if provided – it’s an optional question), CoG Cash Prize Eligibility, Race to use in this competition. All the other registration details (including Seed Number, registration’s BWAPI Version, submission’s BWAPI Version to use, Contact Email Address and all the other answers) of all entries that successfully register (even if they withdraw or do not submit or their last year’s entry is reused or their submission is not used) will be published but not until sometime after the submission deadline.
In case you encounter problems using the registration form, do not wait until the last hour to register. It may take you quite a while if you write detailed answers to all the optional questions.
Submission
Late or missing files/fixes/changes/instructions/etc sent after the deadline *WILL NOT BE ACCEPTED*, and preparing your submission may take some time, so read the instructions closely, well before the deadline, and do not leave everything to the last day. Especially, test that your bot works on all the maps, check you have included all of your source code & other files/instructions you want to use, and all the information that is required to be in your readme file.
In case you encounter problems using the submission system, do not wait until the last minute to make your submission. You can submit multiple times to update your submission, and we will only use your latest submission. To ensure you make the deadline in time, test that you are able to make a submission at least a day before the deadline, then you can make updated submissions and your final submission closer to the deadline.
Environment Variables / Project Settings
Trying to compile all of your submissions can result in a bit of a headache, due to the number of different configurations in your Visual Studio project files. To make this year’s submission / compilation process much easier, PLEASE adhere to the following scheme inside your Visual Studio (and possibly Java) projects: If you are using Windows (which you probably are) create Environment Variables named “LIBRARY_DIR” for each included library. For example, if your bot uses BWAPI and BOOST, you would make the environment variables BWAPI_DIR and BOOST_DIR. Then, inside your IDE’s project settings, point your project to these Environment Variables rather than hard-coded directories on your computer.
This will not only make it MUCH easier for us to compile your code, but for you to compile your code as well, if you (for example) change your BWAPI version. All you need to do is change the environment variable as opposed to changing multiple instances of the hard-coded directory in your project. If you stray from these suggested settings at all, please provide the details and a GOOD reason for doing so in your submission’s README file.
*IMPORTANT*
When submitting your bot, you must follow these instructions for submitting your bot’s final version:
Before submitting, please test that your bot is able to successfully play a game for every map in the map pool, because many entries to previous competitions always crash or time out on some maps.
To submit, use the submission form to upload a single ZIP file. The filename must be: <name of your entry>.ZIP. It must contain:
– A folder ‘bwapi-data/AI/’ that contains your compiled bot’s binaries and all other static files you want your bot to use in the competition, e.g. configuration files, pre-trained data. We will use this folder for our immediate testing. The configuration files and pre-trained data will also be used in the official competition run, but the compiled binaries that you have uploaded will not be used because the competition organizers will compile that ourselves from your source code. If your bot is not a BWAPI::AIModule DLL (e.g. if your bot is a client/proxy bot such as a Java bot or an EXE bot), please submit a file ‘bwapi-data/AI/run_proxy.bat’ that contains the command(s) to start your bot. It must not set or change the current working directory (CWD) (the Tournament Manager software will run this file with the current working directory set to the Starcraft program folder not the ‘bwapi-data/AI/’ folder under it) and it must only use relative paths not absolute paths. E.g. for a simple EXE bot: “bwapi-data\AI\MyBot.exe”; for a simple Java bot: “java -jar bwapi-data\AI\MyBot.jar”; for a Java bot that loads additional library file(s) such as BWMIRROR from the bwapi-data/AI folder: “java -Djava.library.path=bwapi-data\AI\ -jar bwapi-data\AI\MyBot.jar”; for a Java bot that is expected to need as much as 512MB Java heap size and loads additional library file(s) from the bwapi-data/AI folder: “java -Xmx512M -Djava.library.path=bwapi-data\AI\ -jar bwapi-data\AI\MyBot.jar”.
– A folder containing the full source code of your bot, and if applicable, all source code / instructions used to produce any static files such as pre-trained data that you uploaded that you want your bot to use in its ‘bwapi-data/AI/’ folder.
– A readme file in the top level of your ZIP file containing at least the following information (you can copy and paste the following text). Note: you are not allowed to use different details than you registered with (Entry Name, Race etc), except that you are allowed to use a different BWAPI Version than you registered with (so long as it is one of the allowed versions).
Entry Name (only alphanumeric characters are allowed (no spaces or strange characters etc). Case sensitive. E.g. ExampleBot. The Entry Name will be used as your bot’s in-game player name (and same case-sensitivity). Please don’t include version info in this field):
Contact Person Name (First, Last):
For people working together as a team entry, all past and current team members must be disclosed. You must write a list of their first and last names (or full names), and mention any other individuals/labs/organizations/etc that have contributed significant changes to your source code since the date of last year’s CoG competition submission deadline (or last year’s AIIDE submission deadline if you or your team submitted any entries), e.g. git pull requests or merging changes between your repositories. Working together on versions of projects that your bot uses that were already publicly-released versions such as already released versions of Randomhammer, Steamhammer, CommandCenter, UAlbertaBot, TorchCraft, BWAPI/OpenBW-related libraries, FAP, JFAP, SparCraft, BWEB, BOSS, BWEM, BWTA, BWAPI4J, BWMIRROR is not a problem though. Team Member Names (First, Last):
Race in this competition (Terran or Protoss or Zerg or Random):
BWAPI Version in this competition (3.7.4, 4.1.2, 4.2.0, or 4.4.0):
Bot Type (E.g. BWAPI::AIModule DLL, EXE, BWAPI::Client DLL, BWAPI4J, BWMIRROR, JNIBWAPI, another kind of Runnable JAR, or another kind of client/proxy etc):
Version of BWAPI4J/BWMIRROR/JNIBWAPI/etc (if applicable):
Learns using File I/O (Yes or No. Note: if your bot writes files such as log files but doesn’t actually read & learn from them, write “No”):
License:
Did you use any existing projects as the basis for your bot or do you use any of them in your bot, e.g. the projects mentioned above? If you have copied other bots/projects or used IP/files/source code/logic/techniques etc from other bots/projects, you must write a list of which of them you have used/copied/wrapped/modified/etc (and which versions of them). If you made changes to any of them (rather than simply using versions of them that had already been publicly released), write a list of which you changed, and why, and a summary of what you changed. Details:
Compilation Instructions, including any environment variables or external libraries (boost, etc) used in your bot, with links to the official download pages for those libraries (we will have the latest version of boost and all versions of BWAPI installed), and instructions for what file(s)/subfolders to put into your bot’s ‘bwapi-data/AI/’ folder, including any instructions used to produce static files such as pre-trained data that you uploaded that you want your bot to use in its ‘bwapi-data/AI/’ folder:
– DO NOT include BWAPI or external libraries as part of your submission.
– DO NOT include the BWAPI libraries or source code in your submission. This makes your submission very large and we have to sort through it manually to pick out what is actually your source code when we want to re-host your submission afterward. We *WILL NOT* compile your project with any submitted BWAPI library code as it has to compile with the standard versions available on the BWAPI websites.
– HOWEVER, if you use BWAPI 4.4.0 for your bot, should include BWAPILIB as your project dependency when you submit your project.
The official versions of the BWAPI libraries we will use are here, your bot MUST COMPILE with one of these downloads, depending on which you chose when you registered:
– BWAPI 3.7.4 – https://github.com/bwapi/bwapi/releases/tag/v3.7.4
– BWAPI 4.1.2 – https://github.com/bwapi/bwapi/releases/tag/v4.1.2
– BWAPI 4.2.0 – https://github.com/bwapi/bwapi/releases/tag/v4.2.0
– BWAPI 4.4.0 – https://github.com/bwapi/bwapi/releases/tag/v4.4.0
– Version 3.7.5 of BWAPI is not supported (even though it should be fully compatible with 3.7.4, but only because StarcraftAITournamentManager does not currently support it).
– Follow the guidelines on the registration page for how to properly configure your Visual Studio project / windows environment variable to point to folders like $(BWAPI_DIR) for includes and linking for all 3rd party libraries so that compilation is as easy as possible for us.
– Before submitting, you must check that your project files such as .vcxproj files do not contain any links to headers or link to files on your specific machine, for example no linking to c:\users\yournamehere\whatever.h, this will cause a lot of headaches for us. Check there are no hard-coded paths or relative paths to libraries or other folders that are not part of the source code you uploaded – there should only be relative paths or paths that use environment variables like $(BWAPI_DIR)/include. Use windows environment variables to point to libraries if you are using them and tell us which ones you are using in your readme file. A *very good* way to test this is to install a clean Windows 7 SP1 Windows 10 virtual machine and try to compile your code on it. However hard it was to compile on that machine, it will be at least 19x as hard for me to do it after all the code is submitted.
– If you do not have any additional files other than your compiled binaries and your source code, your submission probably shouldn’t be over 5MB, so if your final submitted .zip file is larger than that, go through it and see what it is you are submitting that is so large. For example, UAlbertaBot from 2013’s .dll + code submission was 3.1mb when zipped, so yours shouldn’t be much larger than that.
– Please test your code on a Windows 7 SP1 Windows 10 machine before submitting. As per the rules, *DO NOT* have any logic that only works on a specific version of windows or specific types of environment or only works on a hard-coded list of game maps or only works against the player names that register. Entries must run/play properly when run in other similar environments and on other similar game maps and against other player names. This is so that they can easily be used in next year’s competition – the players will be different, and the environment/maps might be different – and so that they can easily be used in future by other researchers / developers / competitions.
– Remember, if we cannot compile your code without extreme headaches, your bot *will not* be entered into the tournament, since it is the version WE COMPILE that we run. So be as accurate as possible with instructions in a readme file in the top level of the zip submission.
If you copy other bots or use IP/files/source code/logic/techniques etc from other bots, you must familiarize yourself with their licenses and ensure that you are not infringing their licenses. As per the rules, copying other bot(s) is allowed, so long as it does not infringe their licenses and so long as you modify their logic or if you use/wrap it without modifying it and add some of your own logic on top of it, similar to how MegaBot used Skynet/Xelnaga/NUSBot in year 2017, or wrapping/modifying Randomhammer/UAlbertaBot/CommandCenter etc. If you do something like this, you must provide the source code and compilation instructions etc of the bots that you use, so that we can compile them. We decided that to foster research it is best to have the next generation of programmers stand on the shoulders of giants, rather than re-invent the wheel. We encourage authors to take code from old years of this competition and improve it.