commandcenter adalah bot StarCraft AI yang dapat memainkan StarCraft: Broodwar dan StarCraft 2.
commandcenter ditulis dalam C++ menggunakan BWAPI dan API AI StarCraft II Blizzard. Ini menyediakan banyak fungsi pembungkus di kedua API yang memungkinkannya melakukan fungsi yang sama di kedua game melalui kode sumber yang sama. Hal ini ditulis oleh David Churchill, Asisten Profesor Ilmu Komputer di Memorial University, dan penyelenggara Kompetisi AI AIIDE StarCraft.
commandcenter didasarkan pada arsitektur UAlbertaBot, dan dimaksudkan sebagai arsitektur yang mudah digunakan agar Anda dapat dengan cepat memodifikasi, bermain, dan membuat bot Anda sendiri. Bot itu sendiri tidak berisi banyak strategi atau taktik yang dikodekan secara keras, namun bot ini memberikan titik awal yang baik bagi Anda untuk menerapkan strategi Anda sendiri untuk balapan apa pun.
commandcenter saat ini menyediakan fitur-fitur berikut:
commandcenter pada akhirnya akan memiliki semua fungsi UAlbertaBot, namun banyak fiturnya yang saat ini belum selesai. Berikut adalah daftar terkini fitur yang saat ini hilang dari commandcenter yang akan segera diimplementasikan:
StarCraft BW: Anda harus menginstal StarCraft: Broodwar versi 1.16.1, serta BWAPI.
StarCraft 2: Anda harus menginstal StarCraft II versi ritel terbaru untuk menjalankan bot. Anda juga harus mengunduh dan memasang beberapa peta untuk digunakan dengan bot, yang dapat Anda temukan di sini: https://github.com/Blizzard/s2client-proto#downloads. Harap dicatat bahwa ada kata sandi yang diberikan pada halaman itu untuk mengekstrak peta dari file zip.
Bot dilengkapi dengan file konfigurasi bernama BotConfig.txt di mana Anda dapat mengubah pesanan build, mencetak berbagai informasi debug ke layar, dan mengatur beberapa parameter bot. Anda dapat menentukan beberapa urutan pembangunan di bagian 'Strategi' pada file, dan memilih strategi mana yang akan diterapkan ketika bot memainkan perlombaan tertentu. Nama unit dalam urutan pembangunan peka huruf besar-kecil, dan harus persis seperti yang muncul dalam game tanpa spasi. Beberapa opsi dalam file konfigurasi saat ini tidak diterapkan, seperti opsi KiteWithRangedUnits.
Harap dicatat bahwa file konfigurasi ini dalam format JSON, dan bot tidak akan berjalan kecuali JSON diformat dengan baik. File konfigurasi harus berada di direktori yang sama dengan commandcenter .exe agar bot dapat berjalan dengan benar. Jika Anda membuat kesalahan dalam sintaksis JSON dan tidak dapat menemukannya sendiri, Anda dapat menggunakan Validator JSON online untuk memeriksanya.
Secara default ketika Anda menjalankan commandcenter .exe, itu akan dimainkan sebagai balapan Acak vs. balapan Acak yang ada di dalam SC2 Easy AI. Anda dapat mengubah balapan mana yang dimainkan di file konfigurasi melalui opsi "BotRace" dan "EnemyRace". Anda juga dapat mengubah peta mana yang akan diputar dengan menentukan opsi "MapFile". Harap dicatat bahwa opsi MapFile relatif terhadap direktori peta StarCraft II Anda, yang secara default terletak di StarCraft_Install_Directory/maps/ Anda, dan bot tidak akan berjalan tanpa menentukan file peta yang valid.
Jika bot mogok atau melakukan hal buruk lainnya, harap bersabar sementara saya membuatnya lebih stabil :)
Dengan langkah-langkah ini Anda seharusnya dapat membangun dan menginstal API SC2 dan memasukkannya ke dalam commandcenter . Ini telah berhasil diuji untuk aba2d3813571c344090f3de5b58a5c912cd5acb3, jadi jika petunjuk pemasangan di bawah tidak berfungsi, periksa versi API SC2 tersebut
$ git checkout aba2d3813571c344090f3de5b58a5c912cd5acb3 .
dan ulangi instruksinya.
$ 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
Jika Anda familiar dengan arsitektur UAlbertaBot, logika commandcenter sangat mirip. Perbedaan terbesarnya adalah informasi terkait peta, lokasi dasar, dan lain-lain tidak lagi dapat diakses secara global. Data ini sekarang berada di dalam kelas CCBot utama, dan harus diakses melalui referensi ke instance kelas tersebut. Oleh karena itu, sebagian besar kelas di commandcenter membawa serta referensi ke objek CCBot utama bot, yang darinya semua informasi, observasi, dan pertanyaan terkait game dapat dibuat.
Panduan pengembangan mendalam akan segera hadir, tapi silakan merujuk ke wiki UAlbertaBot untuk saat ini karena arsitekturnya sangat mirip (kecuali perencana urutan pembangunan dan simulator tempur).