commandcenter es un robot de IA de StarCraft que puede jugar tanto a StarCraft: Broodwar como a StarCraft 2.
commandcenter está escrito en C++ utilizando BWAPI y la API de IA de StarCraft II de Blizzard. Proporciona muchas funciones contenedoras en torno a ambas API que le permiten realizar la misma funcionalidad en ambos juegos a través del mismo código fuente. Está escrito por David Churchill, profesor asistente de informática en la Memorial University y organizador del concurso AIIDE StarCraft AI.
commandcenter se basa en la arquitectura de UAlbertaBot y pretende ser una arquitectura fácil de usar para que puedas modificar, jugar y construir rápidamente tu propio bot. El bot en sí no contiene muchas estrategias o tácticas codificadas, sin embargo, proporciona un buen punto de partida para que implementes tus propias estrategias para cualquier carrera.
commandcenter actualmente ofrece las siguientes características:
commandcenter debería eventualmente tener todas las funciones de UAlbertaBot; sin embargo, muchas de sus funciones no están completas actualmente. Aquí hay una lista actualizada de funciones que actualmente faltan en commandcenter y que se implementarán pronto:
StarCraft BW: Debes tener instalado StarCraft: Broodwar versión 1.16.1, así como BWAPI.
StarCraft 2: debes tener instalada una versión comercial actualizada de StarCraft II para ejecutar el bot. También debes descargar e instalar algunos mapas para usar con el bot, que puedes encontrar aquí: https://github.com/Blizzard/s2client-proto#downloads. Tenga en cuenta que en esa página se proporciona una contraseña para extraer los mapas de los archivos zip.
El bot viene con un archivo de configuración llamado BotConfig.txt en el que puede modificar las órdenes de compilación, imprimir diversa información de depuración en la pantalla y establecer algunos parámetros del bot. Puedes definir múltiples órdenes de construcción en la sección 'Estrategias' del archivo y elegir qué estrategia con nombre implementar cuando el robot juegue una carrera específica. Los nombres de las unidades en el orden de construcción distinguen entre mayúsculas y minúsculas y deben ser exactamente como aparecen en el juego, sin espacios. Algunas de las opciones del archivo de configuración no están implementadas actualmente, como la opción KiteWithRangedUnits.
Tenga en cuenta que este archivo de configuración está en formato JSON y el bot no se ejecutará a menos que tenga un formato JSON correcto. El archivo de configuración debe estar en el mismo directorio que commandcenter .exe para que el bot se ejecute correctamente. Si ha cometido un error en la sintaxis JSON y no puede encontrarlo por su cuenta, puede utilizar un validador JSON en línea para comprobarlo por usted.
De forma predeterminada, cuando ejecuta commandcenter .exe, se reproducirá como una carrera aleatoria frente a una carrera aleatoria integrada en SC2 Easy AI. Puedes modificar qué carreras se juegan en el archivo de configuración a través de las opciones "BotRace" y "EnemyRace". También puedes modificar qué mapa se reproducirá especificando la opción "MapFile". Tenga en cuenta que la opción MapFile es relativa a su directorio de mapas de StarCraft II, que de forma predeterminada se encuentra en su StarCraft_Install_Directory/maps/, y el bot no se ejecutará sin especificar un archivo de mapa válido.
Si el bot falla o hace otras cosas desagradables, tengan paciencia mientras lo hago más estable :)
Con estos pasos debería poder compilar e instalar la API SC2 e incluirla en commandcenter . Se ha probado con éxito para aba2d3813571c344090f3de5b58a5c912cd5acb3, por lo que si las instrucciones de instalación a continuación no funcionan, consulte esa versión de la API SC2.
$ git checkout aba2d3813571c344090f3de5b58a5c912cd5acb3 .
y repita las instrucciones.
$ 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
Si está familiarizado con la arquitectura de UAlbertaBot, la lógica de commandcenter es bastante similar. La mayor diferencia es que la información relacionada con el mapa, la ubicación base, etc. ya no es accesible globalmente. Estos datos ahora se encuentran dentro de la clase CCBot principal y se debe acceder a ellos mediante una referencia a la instancia de esa clase. Debido a esto, la mayoría de las clases en commandcenter llevan consigo una referencia al objeto CCBot principal del bot, desde el cual se puede realizar toda la información, observaciones y consultas relacionadas con el juego.
Próximamente habrá una guía de desarrollo detallada, pero consulte la wiki de UAlbertaBot por ahora, ya que la arquitectura es muy similar (menos el planificador de órdenes de construcción y el simulador de combate).