Skip to content

Releases: chriscoxe/ZZZKBot

ZZZKBot v1.9.1

17 Aug 07:11

Choose a tag to compare

A combination of the changes after Version 1.7.0 up to and including Version 1.9.1. Also, text files now use different line endings, which unfortunately makes it hard to see the differences using GitHub. You can try appending ?w=1 to the GitHub URL for the commit, but it doesn't seem to work for files that have large diffs. If you want to compare using git diff or diff, I suggest using e.g. git diff --ignore-cr-at-eol v1.7.0..v1.9.1 or git diff --ignore-space-at-eol v1.7.0..v1.9.1 or compare different directories using diff -r --strip-trailing-cr dir1 dir2 | less or diff -r --ignore-trailing-space dir1 dir2 | less. Pasting from CHANGES.md:

Version 1.9.1

Version updated on GitHub (not for a particular competition). Notable differences:

  • Feature: if exploring when selecting initial strategy, use sampling logic based on Thompson sampling (combined with some additional heuristics). Before, when sampling, it sampled from an even distribution across all available strategy combinations (combined with different heuristics) regardless of how successful that strategy combination has been in previous games, but was more greedy when it found a successful strategy combination. The new sampling logic is designed using a model that assumes that opponents do not adapt by learning from previous games, so it is intended to learn quicker in the long-term against opponents that do not adapt by learning from previous games, but is expected to perhaps perform worse in the long-term against opponents that adapt by learning from previous games. It's unclear how well it learns in the short-term compared to the previous version - it probably varies a lot depending on the opponent.
  • Feature: inserted a config file setting (between the race field and the is4PoolBO field) for each configured strategy settings combination that controls whether it is just a hint (1) or not (0). If it is a hint then other strategy settings combinations may be used (e.g. explore other strategies after losing games, or if other strategies have won in any existing data) but if it is not a hint then the specified strategy settings combination will be used for all games in future (regardless of whether others have won in past games).
  • Feature: add hard-coded creep location for more maps (i.e. just Roadkill, Polaris Rhapsody map version 1.0, Longinus 2).
  • Change: remove tailored initial strategy parameters against all opponents.
  • Change: changed the VCXPROJ file to upgrade from using Microsoft Visual Studio Community 2017 version 15.7.4 to using Microsoft Visual Studio Community 2017 version 15.9.64 with side-by-side minor version MSVC toolsets using the instructions at https://devblogs.microsoft.com/cppblog/side-by-side-minor-version-msvc-toolsets-in-visual-studio-2017/ to use the "VC++ 2017 version 15.7 v14.14 toolset" (which corresponds to Microsoft.VisualStudio.Component.VC.Tools.14.14, and use it to link with the re-release of BWAPI 4.2.0 (i.e. BWAPI.VS.15.7.3.7z as-is, without rebuilding it) (note: I previously used 15.7.4 and that works too).
  • Fix: fixed a production freeze in the case where doing 4pool with numSunkens == 0 after a certain number of lings have died - the problem was that production freezes (no buildings/lings/drones/etc when I intended for it to keep making lings) until after the frame threshold is reached.
  • Fix: fixed a bug where configuring race-specific number of sunkens always used 1 after their race is scouted (only a problem if you use the config file and it's a Random race opponent).
  • Fix: fixed some compiler warnings, e.g. unused parameters/variables, deprecated functions, memory safety, casting issues, unecessary lambda/this captures. Seems to fix crashing on BASIL.
  • Refactor: don't use static variables - make them class member variables.
  • Refactor: use the override keyword where appropriate.

Note: this version is identical to the executable version that has been on SSCAIT since 2024-07-26 09:00:29 except that the version on SSCAIT has tailored initial strategy parameters against opponents (and the program version number is different). Also, I'm now adding some TXT files to this repository about some competitions that ZZZKBot competed in.

Version 1.8.0

Version submitted on 10th July 2018 for the CIG 2018 Starcraft AI competition. The only noteworthy changes in this version are three small bugfixes to the learning algorithm (e.g. it was mistakenly using the is4PoolBO field as the timerAtGameStart field and this was causing it to mainly only alternate between two strategy setting combos; a bug with StratSettings comparator (i.e. comparator must satisfy strict weak ordering) which might have caused the learning logic to not work properly and was causing error pop-ups when run in Debug mode), learn plasma map independently to the other maps, re-added/added tailored initial strategy parameters against some opponents, blanked-out the DAT fields relating to system info such as CPU info and time zone, and version data files separately to the program version (set the data version to 1.7.0, so that data produced by version program 1.7.0 can be read). None of the underlying strategy logic has changed at all.

ZZZKBot v1.7.0

07 Nov 18:57

Choose a tag to compare

Pasted from CHANGES.md:

Version uploaded to SSCAIT bot name "Chris Coxe" on 7th November 2017, solely because some people wanted a more up-to-date version of ZZZKBot on SSCAIT that works on any map and works when playing as any player name. I am not intending to support/maintain/develop ZZZKBot in future and am not intending to compete in SCAIT 2017, although I haven't ruled either of them out either. This is just a release to allow people to more easily train their bots against ZZZKBot on their own environments and on SSCAIT/CIG/other maps. It is not as strong as the AIIDE 2017 or CIG 2017 versions of ZZZKBot
because the hardcoded default strategy parameter values for opponents were removed in v1.6.0. If it is used in SSCAIT 2017 or other future competitions, I doubt it will do very well because of that, and also because so few games are played in SSCAIT compared with AIIDE/CIG, so it doesn't have much opportunity to learn before or during SSCAIT 2017.

The changes in this version are that it is now fixed so it works properly on any map and when playing as any player name (thanks Jaj22!), added hardcoded creep locations for SSCAIT & CIG maps, added special logic and fixes for Plasma map (was included in CIG 2017 version), added ability to use an optional config file to tailor strategy parameter values to opponents (the file shouldn't exist by default), fixes/improvements to the buggy learning logic that was causing it to learn unnecessarily slowly, fixed a problem relating to the learning logic where the bot was getting stuck waiting forever for a sunken to be made when particular combinations of strategy parameter values were being used, minor updates to TXT file documentation (including adding old competition survey answers), converted some TXT files to MD files, added comments for map names and versions etc (incl. AIIDE, SSCAIT, CIG maps) for clarity, added some comments to explain some logic, added some old commented-out code just FTR.

ZZZKBot v1.5.0 (used in AIIDE 2017)

05 Nov 17:51

Choose a tag to compare

The exact archive file (ZZZKBot-1.5.0.zip) that I submitted to the AIIDE 2017 Starcraft AI Competition on 1st September 2017. It won 1st place by achieving first rank out of twenty eight in the competition (http://www.starcraftaicompetition.com) which is run annually and presented annually at the Artificial Intelligence and Interactive Digital Entertainment (AIIDE) Conference. Contains source code and the DLL that I compiled (note: I expect that the AIIDE organizers later compiled their own DLL themselves). To get started, see the AIIDE2017_ENTRY.txt file within the ZIP file, but here are some summary excerpts from that file:

ZZZKBot runs using BWAPI version 4.2.0, and is only supposed to play as Zerg in the AIIDE 2017 Starcraft AI competition. It does not use any 3rd-party libraries such as BWTA2/BWTA/BWEM at all. ZZZKBot uses disk I/O (i.e. has logic to use the "bwapi-data/read" and "bwapi-data/write" folders). It tailors its behavior to particular opponents based on in-game player names of the opponent bot(s).

A simple throw-away proof-of-concept cheesy kamikaze 4-pool bot implemented in a short amount of time to reach low-hanging fruit. Effective against many bots that do not have a solid opening economy/defence. Has some simple logic for scouting, targeting and resource-gathering. Apart from targeting its micro is very limited. Stays at 9 or 10 supply for several minutes of in-game time then techs straight to mutalisks or guardians (on only 1 base... soon runs out of gas...) in an attempt to finish off static defences of idle opponents, and mutalisks in an attempt to destroy lifted buildings. Uses speedling or muta rush or hydra rush build against some opponents. Uses file I/O to learn which types of rush are most effective against each opponent. Doesn't do much else.

Originally implemented in a quick and dirty fashion so releases would be ready for the CIG & AIIDE 2015 Starcraft AI competitions. If you want to examine/use the source code, be warned that the source code is messy, full of kludges, undocumented, has undocumented limitations/gotchas, and lacks hardly any good architecture/abstraction/encapsulation (e.g. the logic is almost all in one method (onFrame()) and uses static variables, and significant duplication of source code) because it was written in a rush (I was expecting to throw it away if it didn't do well in CIG 2015) and I haven't focused on cleaning it up or rewriting it properly. I used BWAPI version 4.1.2's ExampleAIModule project as the source code starting point (i.e. C++), but later upgraded to BWAPI 4.2.0.

License: GNU Lesser General Public License (LGPL) version 3. It is compatible with the GNU public license.

To see a summary of changes for each version, see CHANGES.txt and the answer to question "If you competed in previous tournaments, what did you change for this year's entry?" in competition_survey_AIIDE_2017_ZZZKBot.txt.

ZZZKBot v1.4.0 (used in CIG 2017)

05 Nov 17:33

Choose a tag to compare

The exact archive file (ZZZKBot-1.4.0.zip) that I submitted to the CIG 2017 Starcraft AI
Competition on 16th July 2017. It won 1st place (but not eligible for the USD 500 prize because not a student/young professional) by achieving first rank out of twenty in the competition (https://cilab.sejong.ac.kr/sc_competition/) which is run annually and presented annually at the IEEE Conference on Computational Intelligence and Games (IEEE CIG). Contains source code and the DLL that I compiled (note: I expect that the CIG organizers later compiled their own DLL themselves). To get started, see the CIG2017_ENTRY.txt file within the ZIP file, but here are some summary excerpts from that file:

ZZZKBot runs using BWAPI version 4.1.2, and is only supposed to play as Zerg in the CIG 2017 Starcraft AI competition. It does not use BWTA2/BWTA. ZZZKBot uses disk I/O (i.e. has logic to read and write files) but currently only uses them for logging/record-keeping purposes - it does not currently use them for any learning logic. It tailors its behaviour to particular opponents based on in-game names of the opponent bot(s).

A simple throw-away proof-of-concept cheesy kamikaze 4-pool bot implemented in a short amount of time to reach low-hanging fruit. Effective against many bots that do not have a solid opening economy/defence. Has some simple logic for scouting, targeting and resource-gathering. Apart from targeting its micro is very limited. Stays at 9 or 10 supply for several minutes of in-game time then techs straight to mutalisks or guardians (on only 1 base... soon runs out of gas...) in an attempt to finish off static defences of idle opponents, and mutalisks in an attempt to destroy lifted buildings. Uses speedling or muta rush build against some opponents. Doesn't do much else. ZZZKBot is an improved and heavily refactored version of ZZZBot (ZZZBot won first rank in the CIG 2015 Starcraft AI competition).

Originally implemented in a quick and dirty fashion so releases would be ready for the CIG & AIIDE 2015 Starcraft AI competitions. If you want to examine/use the source code, be warned that the source code is messy, full of kludges, undocumented, has undocumented limitations/gotchas, and lacks hardly any good architecture/abstraction/encapsulation (e.g. the logic is all in one method (onFrame()) and uses static variables, and significant duplication of source code) because it was written in a rush (I was expecting to throw it away if it didn't do well in CIG 2015) and I haven't focused on cleaning it up or rewriting it properly. I used BWAPI version 4.1.2's ExampleAIModule project as the source code starting point (i.e. C++).

License: GNU Lesser General Public License (LGPL) version 3. It is compatible with the GNU public license.

To see a summary of changes for each version, see CHANGES.txt and the answer to question "If you competed in previous tournaments, what did you change for this year's entry?" in competition_survey_CIG_2017_ZZZKBot.txt.

ZZZKBot v1.2 (used in AIIDE 2016)

05 Nov 16:44

Choose a tag to compare

The exact archive file (ZZZKBot-1.2.zip) that I submitted to the AIIDE 2016 Starcraft AI Competition on 7th September 2016. It won 2nd place by achieving second rank out of twenty one in the competition (http://www.starcraftaicompetition.com) which is run annually and presented annually at the Artificial Intelligence and Interactive Digital Entertainment (AIIDE) Conference. Contains source code and the DLL that I compiled (note: I expect that the AIIDE organizers later compiled their own DLL themselves). To get started, see the SCAI2016_ENTRY.txt file within the ZIP file, but here are some summary excerpts from that file:

ZZZKBot runs using BWAPI version 4.1.2, and is only supposed to play as Zerg in the AIIDE 2016 Starcraft AI competition. It does not use BWTA2/BWTA. ZZZKBot itself does not use disk I/O (i.e. has no logic to read or write files - not even log files), apart from any logic already built into BWAPI (if any). It tailors its behaviour to particular opponents based on in-game player names of the opponent bot(s).

A simple throw-away proof-of-concept cheesy kamikaze 4-pool bot implemented in a short amount of time to reach low-hanging fruit. Effective against many bots that do not have a solid opening economy/defence. Has some simple logic for scouting, targeting and resource-gathering. Apart from targeting its micro is very limited. Stays at 9 or 10 supply for several minutes of in-game time then techs straight to mutalisks or guardians (on only 1 base... soon runs out of gas...) in an attempt to finish off static defences of idle opponents, and mutalisks in an attempt to destroy lifted buildings. Uses speedling build against some opponents. Doesn't do much else. ZZZKBot is an improved and heavily refactored version of ZZZBot (ZZZBot won first rank in the CIG 2015 Starcraft AI competition).

Originally implemented in a quick and dirty fashion so releases would be ready for the CIG & AIIDE 2015 Starcraft AI competitions. If you want to examine/use the source code, be warned that the source code is messy, full of kludges, undocumented, has undocumented limitations/gotchas, and lacks hardly any good architecture/abstraction/encapsulation (e.g. the logic is all in one method (onFrame()) and uses static variables, and significant duplication of source code) because it was written in a rush (I was expecting to throw it away if it didn't do well in CIG 2015) and I haven't focussed on cleaning it up or rewriting it properly. I used BWAPI version 4.1.2's ExampleAIModule project as the source code starting point (i.e. C++).

License: GNU Lesser General Public License (LGPL) version 3. It is compatible with the GNU public license.

To see a summary of changes for each version, see CHANGES.txt.

ZZZKBot v1.0 (used in AIIDE 2015 & CIG 2016)

09 Nov 19:59

Choose a tag to compare

The exact archive file (ZZZKBot-1.0.7z) that I submitted to the AIIDE 2015 Starcraft AI Competition on 10th October 2015. It won 2nd place (also officially announced as a statistical tie with 1st place) by achieving second rank out of twenty two in the competition (http://www.starcraftaicompetition.com) which is run annually and presented annually at the Artificial Intelligence and Interactive Digital Entertainment (AIIDE) Conference. Contains source code and the DLL that I compiled (note: I expect that the AIIDE organizers later compiled their own DLL themselves). This version was also used in the CIG 2016 Starcraft AI Competition where it achieved fourth out of sixteen in the competition (https://sites.google.com/site/starcraftaic/result) which is run annually and presented annually at the IEEE Conference on Computational Intelligence and Games (IEEE CIG). To get started, see the SCAI2015_ENTRY.txt file within the ZIP file, but here are some summary excerpts from that file:

ZZZKBot runs using BWAPI version 4.1.2, and is only supposed to play as Zerg in the AIIDE 2015 Starcraft AI competition. It does not use BWTA2/BWTA. ZZZKBot itself does not use disk I/O (i.e. has no logic to read or write files - not even log files), apart from any logic already built into BWAPI (if any). It tailors its behaviour to particular opponents based on in-game names of the opponent bot(s).

A simple throw-away proof-of-concept cheesy kamikaze 4-pool bot implemented in a short amount of time to reach low-hanging fruit. Effective against many bots that do not have a solid opening economy/defence. Has some simple logic for scouting, targeting and resource-gathering. Apart from targeting its micro is very limited. Stays at 9 or 10 supply until about 15 minutes in-game time then techs straight to guardians (on only 1 base... soon runs out of gas...) in an attempt to finish off static defences of idle opponents, and mutalisks in an attempt to destroy lifted buildings. Uses speedling build against some opponents. Doesn't do much else. ZZZKBot is an improved and heavily refactored version of ZZZBot (ZZZBot won first rank in the CIG 2015 Starcraft AI competition).

Implemented in a quick and dirty fashion so releases would be ready for the CIG & AIIDE 2015 Starcraft AI competitions. If you want to examine/use the source code, be warned that the source code is messy, hacky, undocumented, has undocumented limitations/gotchas, and lacks hardly any good architecture/abstraction/encapsulation (e.g. the logic is all in one method (onFrame()) and uses static variables, and significant duplication of source code) because it was written in a rush (I was expecting to throw it away if it didn't do well in CIG 2015) and I haven't focussed on cleaning it up / rewriting it properly. I used BWAPI version 4.1.2's ExampleAIModule project as the source code starting point (i.e. C++).

License: GNU Lesser General Public License (LGPL) version 3. It is compatible with the GNU public license.

To see a summary of changes for each version, see CHANGES.txt and the answer to question "If you competed in previous tournaments, what did you change for this year's entry?" in competition_survey_AIIDE_2015_ZZZKBot.txt.