BWAI學習記錄001_星際爭霸BWAPI 4.4.0下AI(ualbertabot)設定安裝

2020-08-08 11:20:36

星際爭霸1真的是兒時的回憶,1999年那時候網咖都是個稀奇事物。那時本人小學,放學了偷跑去網咖,看人玩星際1.04就是一個下午。兒時最大夢想是可以有自己的電腦,不限時間玩星際爭霸。2005年第一臺電腦,裝的第一個遊戲就是星際爭霸。大學畢業的時候接觸到bwapi相關的東西,打開了全新的大門。隨着GOOGLE對於DL,RL的突破,星際爭霸這個RTS遊戲界的鼻祖,又有了新的生命。爲AI世界提供虛擬環境,演練演算法。

BWAPI:Brood War Application Programming Interface(血巢之戰程式通用程式設計介面)

下面 下麪是github的BWAPI解釋介紹:

The Brood War Application Programming Interface (BWAPI) is a free and open source C++ framework that is used to interact with the popular Real Time Strategy (RTS) game Starcraft: Broodwar. Using BWAPI, students, researchers, and hobbyists can create Artificial Intelligence (AI) agents that play the game.

在接觸BWAPI這幾年裏面,他的聯賽,論壇,資料也是越來越多。聯賽2011-2019論壇部落格

還是打算好好記錄一下,學習總結BWAI。不光爲了娛樂,更是爲了學好AI。

以前安裝過名爲ualbertabot的AI,是BWAPI 4.4.0下的。今天再裝一次。最後,BWAPI不是專業的程式設計師,對於github,C++,python不是很熟的話,只能慢慢摸索。千裡之行始於足下。

步驟1:設定環境

安裝vs2019社羣版,最好還是使用C++進行,JAVA版本支援不好。

克隆ualbertabot,github上有。

下載一個純淨的星際爭霸1.16.1

下載BWAPI 4.4.0

安裝Visual Studio

  1. 從Microsoft網站安裝Visual Studio 2019,這可能需要幾分鐘
  2. 僅需要C ++開發選項

安裝星際爭霸

  1. 安裝StarCraft:Broodwar版本1.16.1(這是唯一可以使用的版本)。
  2. 我強烈建議安裝路徑短且沒有空格,例如 c:\Games\Starcraft
  3. 在此步驟之後連線到Battle.net或執行任何遊戲修補程式都會中斷安裝,您需要從頭開始重新安裝Starcraft(注意:這是指在BW中連線到bnet,而不是現代的bnet啓動器程式)

安裝BWAPI

  1. 確保將BWAPI安裝到目錄中,目錄名稱中沒有任何空格。這是由於在UAB專案中使用了不喜歡空格的Windows環境變數。我強烈建議將其c:\libraries\BWAPI_440作爲安裝BWAPI 4.4.0的目錄
  2. 使用BWAPI exe安裝程式,或將.7z檔案提取到安裝目錄
  3. 將檔案從BWAPI的StarCraft資料夾複製到您的StarCraft安裝目錄中
  4. 將檔案從BWAPI的Windows資料夾複製到您的c:\Windows目錄或StarCraft目錄中

Windows環境變數

  1. UAlbertaBot專案利用Windows環境變數來查詢BWAPI庫檔案的位置。這樣做是爲了使專案可以在任何系統上編譯而無需更改專案檔案本身。
  2. 開啓「開始」選單,鍵入,env然後出現編輯環境變數的選項
  3. 建立一個名爲的Windows環境變數BWAPI_DIR。這個變數的值應該是BWAPI安裝目錄的完整路徑(例如:c:\libraries\BWAPI_440

步驟2:編譯BWAPI和UAlbertaBot

編譯BWAPI 4.4.0

  1. BWAPI_DIR/ExampleProjects.sln在VS2019中開啓VS解決方案檔案
  2. 對於BWAPILIBBWAPIClient專案:在專案上單擊滑鼠右鍵,Properties在左側選單中選擇,然後Platform Toolset在右側選單中將更改爲Visual Studio 2019 (v142)。請確保對左上角選擇的ReleaseDebug設定都執行此操作。由於BWAPI最初是使用VS2017建立的,因此此步驟是必需的。
  3. 右鍵單擊並BuildBWAPILIBBWAPIClient專案。這將生成UAlbertaBot將鏈接到的必需的LIB檔案。請確保同時在ReleaseDebug模式中構建,這是在上方工具列中選擇的。
  4. 如果正確完成,則應在BWAPI安裝目錄中建立兩個資料夾:ReleaseDebug。這些資料夾中的每一個現在都應包含BWAPILIB.libBWAPIClient.lib,它們將由UAlbertaBot專案在下一步中通過環境變數值鏈接

編譯UAlbertaBot

  1. UAlbertaBot/VisualStudio/UAlbertaBot.sln在Visual Studio 2019中開啓
  2. 選擇ReleaseDebug模式。該Debug版本的執行速度會慢得多,因爲它會在偵錯時跟蹤所有變數。如果要儘快執行漫遊器,請選擇ReleaseDebug模式編譯速度更快,建議用於開發。
  3. 右鍵單擊BuildUAlbertaBot專案(將建立所有專案)
  4. 編譯後的可執行檔案將轉到UAlbertaBot/bin目錄
  5. 根據是在Release還是Debug模式下編譯,生成的exe檔案將分別是UAlbertaBot.exeUAlberaBot_d.exe

步驟3:執行UAlbertaBot和Starcraft

爲了在Starcraft中使用基於BWAPI的機器人,您必須通過ChaoslauncherBWAPI附帶的程式執行Starcraft 。Chaoslauncher將BWAPI .dll檔案注入Starcraft,以便它可以與您的機器人通訊。Chaoslauncher的可執行檔案Chaoslauncher.exe位於,並且位於中BWAPI_DIR/Chaoslauncher/。Chaoslauncher可以在系統上的任何位置執行,因此可以將其保留在BWAPI目錄中,但是我建議在工作列上爲其建立快捷方式,因爲您將經常使用它。還有一個多範例版本,允許您同時執行多個Starcraft範例。

  1. 確保Chaoslauncher.exeStarcraft.exe設定爲以管理員身份執行。右鍵單擊該.exe檔案,選擇PropertiesCompatibility>檢查Run as Administrator
  2. 跑 BWAPI_DIR/Chaoslauncher/Chaoslauncher.exe
  3. 根據自己的喜好編輯UAlbertaBot組態檔。預設情況下,組態檔位於bin/UAlbertaBot_Config.txt。該檔案必須與UAlbertaBot.exe。除非您熟悉漫遊器及其設定,否則請跳過此步驟。
  4. 確保BWAPI 4.4.0 Injector Release在Chaoslauncher中選中了該選項
  5. 執行UAlbertaBot以下兩種方法之一:1)從VS執行(通過單擊Local Windows Debugger上方),或2)bin/UAlbertaBot.exe通過雙擊檔案或從控制檯執行檔案來執行檔案
  6. 該機器人現在應該在自己的控制檯視窗中執行,Game table mapping not found每秒列印一次。這將一直持續到Starcraft使用BWAPI執行爲止,屆時機器人將自動連線到Starcraft並執行
  7. Start在Chaoslauncher中單擊以執行《星際爭霸》,遊戲開始時UAlbertaBot將連線
  8. 第一次執行步驟7時,Chaoslauncher可能會抱怨它不知道Starcraft的安裝位置。單擊Settings視窗頂部的索引標签,然後編輯Installpath目錄。
  9. 星際爭霸裏面使用開始遊戲Single PlayerExpansionPlay Custom,選擇任何標準的多人地圖和使用Melee設定啓動。注意:漫遊器不能與多個對手一起使用,也不能與單人遊戲一起使用。

注意:預設情況下,bot可執行檔案UAlbertaBot.exe已編譯並放置在binUAlbertaBot專案的目錄中。該檔案實際上可以從系統上的任何位置執行,但是它必須與bot的組態檔位於同一目錄UAlbertaBot_Config.txt中,預設情況下,該檔案也位於該bin目錄中。

步驟4.開發週期

首次啓動並執行所有功能後,建議您使用以下工作流程:

  1. 在開發過程中保持Chaoslauncher開啓,沒有理由將其關閉
  2. BWAPI.ini檔案編輯爲AUTO_MENUon,以便您不必在每次執行遊戲時都選擇Starcraft設定(請參見下文)
  3. 在VS中更改程式碼後,只需單擊Local Windows DebuggerVS中綠色箭頭旁邊的按鈕即可執行漫遊器,然後在Chaoslauncher中單擊「開始」。這將首先執行UAlbertaBot,然後啓動Starcraft
  4. 最後,必須先關閉Starcraft和UAB,然後才能 纔能再次編譯bot。您只需關閉「星際爭霸」視窗即可,該視窗將自動停止該UAlbertaBot.exe過程。

開發者注意:開發機器人並不得不多次執行時,手動導航Starcraft選單變得非常繁瑣。您可以設定BWAPI.ini檔案以使用該AUTO_MENU功能,該功能將使用您的輸入設定來自動選擇要玩的地圖和種族。我建議在開始進行bot開發之前,先使其工作。要編輯BWAPI.ini檔案,請先BWAPI 4.4.0 Injector [RELEASE]在Chaoslauncher內部選擇,然後單擊Config右側的按鈕。這將Starcraft/bwapi-data/BWAPI.ini在記事本中開啓檔案。

有關BWAPI組態檔的完整詳細資訊,請點選此處

感謝UAlbertaBot原作者寫的安裝說明。