commandcenter é um bot de IA do StarCraft que pode jogar StarCraft: Broodwar e StarCraft 2.
commandcenter é escrito em C++ usando BWAPI e StarCraft II AI API da Blizzard. Ele fornece muitas funções de wrapper em torno de ambas as APIs que permitem executar a mesma funcionalidade em ambos os jogos por meio do mesmo código-fonte. Foi escrito por David Churchill, professor assistente de ciência da computação na Memorial University e organizador da competição AIIDE StarCraft AI.
commandcenter é baseado na arquitetura do UAlbertaBot e pretende ser uma arquitetura fácil de usar para você modificar, brincar e construir rapidamente seu próprio bot. O bot em si não contém muitas estratégias ou táticas codificadas, no entanto, fornece um bom ponto de partida para você implementar suas próprias estratégias para qualquer corrida.
commandcenter atualmente oferece os seguintes recursos:
commandcenter deverá eventualmente ter todas as funcionalidades do UAlbertaBot, porém muitos de seus recursos não estão concluídos atualmente. Aqui está uma lista atualizada de recursos atualmente ausentes no commandcenter que serão implementados em breve:
StarCraft BW: Você deve ter StarCraft: Broodwar versão 1.16.1 instalado, bem como BWAPI.
StarCraft 2: Você deve ter uma versão de varejo atualizada do StarCraft II instalada para executar o bot. Você também deve baixar e instalar alguns mapas para usar com o bot, que você pode encontrar aqui: https://github.com/Blizzard/s2client-proto#downloads. Observe que há uma senha fornecida nessa página para extrair os mapas dos arquivos zip.
O bot vem com um arquivo de configuração chamado BotConfig.txt no qual você pode modificar ordens de construção, imprimir várias informações de depuração na tela e definir alguns parâmetros do bot. Você pode definir várias ordens de construção na seção 'Estratégias' do arquivo e escolher qual estratégia nomeada implementar quando o bot jogar uma corrida específica. Os nomes das unidades na ordem de construção diferenciam maiúsculas de minúsculas e devem ser exatamente como aparecem no jogo, sem espaços. Algumas das opções no arquivo de configuração não estão implementadas atualmente, como a opção KiteWithRangedUnits.
Observe que este arquivo de configuração está no formato JSON e o bot não será executado a menos que seja um JSON bem formatado. O arquivo de configuração deve estar no mesmo diretório que commandcenter .exe para que o bot seja executado corretamente. Se você cometeu um erro na sintaxe JSON e não consegue encontrá-lo sozinho, você pode usar um validador JSON online para verificar para você.
Por padrão, quando você executa commandcenter .exe, ele será reproduzido como uma corrida aleatória versus uma corrida aleatória integrada no SC2 Easy AI. Você pode modificar quais corridas são disputadas no arquivo de configuração através das opções “BotRace” e “EnemyRace”. Você também pode modificar qual mapa será reproduzido especificando a opção "MapFile". Observe que a opção MapFile é relativa ao diretório de mapas do StarCraft II, que por padrão está localizado em StarCraft_Install_Directory/maps/, e o bot não será executado sem especificar um arquivo de mapa válido.
Se o bot travar ou fizer outras coisas desagradáveis, tenha paciência enquanto eu o torno mais estável :)
Com essas etapas, você poderá construir e instalar a API SC2 e incluí-la no commandcenter . Ele foi testado com sucesso para aba2d3813571c344090f3de5b58a5c912cd5acb3, portanto, se as instruções de instalação abaixo não funcionarem, verifique essa versão da API SC2
$ git checkout aba2d3813571c344090f3de5b58a5c912cd5acb3 .
e repita as instruções.
$ git clone --recursive https://github.com/Blizzard/s2client-api && cd s2client-api
$ mkdir build && cd build
$ cmake ../
$ make
# Assuming that you are located in the 'build' directory
# after you finished the previous step
$ cd ../
# Install SC2 API headers
$ sudo mkdir -p /opt/local/include
$ sudo cp -R include/{sc2api,sc2renderer,sc2utils} /opt/local/include
$ sudo cp -R build/generated/s2clientprotocol /opt/local/include
# Install protobuf headers
$ sudo cp -R contrib/protobuf/src/google /opt/local/include/sc2api
# Install SC2 API libraries
$ sudo mkdir -p /opt/local/lib/sc2api
$ sudo cp build/bin/{libcivetweb,libprotobuf,libsc2api,libsc2lib,libsc2protocol,libsc2utils}.a /opt/local/lib/sc2api
$ git clone https://github.com/davechurchill/commandcenter.git && cd commandcenter
$ cmake .
$ make
Se você está familiarizado com a arquitetura do UAlbertaBot, a lógica do commandcenter é bastante semelhante. A maior diferença é que as informações relativas ao mapa, localização base, etc. não são mais acessíveis globalmente. Esses dados agora residem dentro da classe CCBot principal e devem ser acessados através de uma referência à instância dessa classe. Por causa disso, a maioria das classes no commandcenter carrega consigo uma referência ao objeto CCBot principal do bot, a partir do qual todas as informações, observações e consultas relacionadas ao jogo podem ser feitas.
Um guia de desenvolvimento detalhado estará disponível em breve, mas consulte o wiki do UAlbertaBot por enquanto, já que a arquitetura é muito semelhante (sem o planejador de ordem de construção e o simulador de combate).