commandcenter是星海爭霸 AI 機器人,可以玩《星海爭霸:母巢之戰》和《星海爭霸 2》。
commandcenter是使用 BWAPI 和暴雪的星海爭霸 II AI API 用 C++ 編寫的。它圍繞著這兩個 API 提供了許多包裝函數,使其能夠透過相同的原始程式碼在兩個遊戲中執行相同的功能。它的作者是紀念大學電腦科學助理教授、AIIDE 星海爭霸人工智慧競賽的組織者 David Churchill。
commandcenter基於 UAlbertaBot 的架構,旨在成為一個易於使用的架構,供您快速修改、使用和建立自己的機器人。機器人本身並不包含太多硬編碼的策略或戰術,但它為您在任何比賽中實施自己的策略提供了一個很好的起點。
commandcenter目前提供以下功能:
commandcenter最終應該具有 UAlbertaBot 的所有功能,但其大部分功能目前尚未完成。以下是commandcenter當前缺少的功能的最新列表,這些功能將很快實現:
星海爭霸 BW:您必須安裝星海爭霸:母巢之戰版本 1.16.1 以及 BWAPI。
星海爭霸 2:您必須安裝最新零售版本的星海爭霸 II 才能運行機器人。您還必須下載並安裝一些地圖才能與機器人一起使用,您可以在這裡找到這些地圖:https://github.com/Blizzard/s2client-proto#downloads。請注意,該頁面上提供了用於從 zip 檔案中提取地圖的密碼。
該機器人附帶一個名為 BotConfig.txt 的配置文件,您可以在其中修改構建順序、在屏幕上打印各種調試信息以及設置一些機器人參數。您可以在檔案的「策略」部分定義多個建置順序,並選擇當機器人進行特定比賽時要實施的命名策略。建構順序中的單位名稱區分大小寫,並且必須與它們在遊戲中的顯示方式完全相同,且不帶空格。設定檔中的某些選項目前尚未實現,例如 KiteWithRangedUnits 選項。
請注意,此設定檔採用 JSON 格式,除非它是格式正確的 JSON,否則機器人將不會運作。設定檔必須與commandcenter位於同一目錄中,才能使機器人正確運作。如果您在 JSON 語法中出現錯誤且無法自行查找,您可以使用線上 JSON Validator 為您檢查。
預設情況下,當您執行commandcenter .exe 時,它將作為隨機競賽與內建 SC2 Easy AI 的隨機競賽進行比賽。您可以透過「BotRace」和「EnemyRace」選項修改設定檔中進行的比賽。您也可以指定“MapFile”選項來修改要播放的地圖。請注意,MapFile 選項與您的《星海爭霸 II》地圖目錄相關,預設位於您的 StarCraft_Install_Directory/maps/ 中,如果不指定有效的地圖文件,機器人將不會運作。
如果機器人崩潰或做了其他令人討厭的事情,請耐心等待,我會使其更加穩定:)
透過這些步驟,您應該能夠建置和安裝 SC2 API 並將其包含到commandcenter中。它已針對 aba2d3813571c344090f3de5b58a5c912cd5acb3 進行了成功測試,因此,如果下面的安裝說明不起作用,請檢查該版本的 SC2 API
$ git checkout aba2d3813571c344090f3de5b58a5c912cd5acb3 .
並重複說明。
$ 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
如果你熟悉UAlbertaBot的架構,那麼commandcenter的邏輯就非常相似。最大的區別是與地圖、基地位置等相關的資訊不再在全球範圍內訪問。該資料現在位於主 CCBot 類別內,並且必須透過對該類別實例的參考來存取。因此, commandcenter中的大多數類別都帶有對機器人的主要 CCBot 物件的引用,可以從中進行所有遊戲相關的資訊、觀察和查詢。
深入的開發指南即將推出,但請暫時參考 UAlbertaBot wiki,因為架構非常相似(減去建造順序規劃器和戰鬥模擬器)。