星際爭霸AI研究相關工具資料整理
作為老牌的RTS遊戲,星際爭霸系列已經博得了眾多玩家的喜愛,同時也吸引了人工智慧相關研究人員的興趣,尤其是在谷歌DeepMind宣布將星際爭霸作為圍棋之後的研究項目以來,星際爭霸的AI研究掀起了一波熱潮。
為了方便研究者與開發人員的研究與開發,在此我將星際爭霸相關的工具資料和文獻進行整理與簡要的評價,由於篇幅較長,分為工具資料篇與文獻篇,本篇為工具資料篇。
一、星際爭霸一相關開發工具
1、BWAPI
BWAPI全稱為Brood War API,是某位高手黑客hack了星際爭霸:母巢之戰底層數據之後整合的API。雖然Hack了底層數據,但是API中只暴露了玩家可以觀測到的內容,而戰爭迷霧之後的信息並不會顯示,也就最大程度的保證了公平性。現在星際爭霸絕大部分的AI開發會依賴於該API,下面介紹的星際爭霸一的工具均依賴於該API。
現在在github上有眾多語言版本的BWAPI介面封裝,方便使用不同編程語言的人開發,官方支持的語言為C++,Java兩種。
官方網址:
The Brood War APIgithub地址:
bwapi/bwapi2、CommandCenter
由阿爾伯塔的著名RTS研究人員David Churchill基於著名的UAlbertaBot開發的星際AI框架,可以同時應用於星際一與星際二兩個遊戲,該框架集成了底層的簡單操作,可以大幅提升開發效率。
github地址:
davechurchill/commandcenter3、TorchCraft
由FaceBook研發人員開發,實現了Torch機器學習框架與星際爭霸之間的通信。由於Torch是著名的深度學習框架,使用TorchCraft可以更方便地在星際爭霸平台上進行深度學習與強化學習的研究。
github地址:
TorchCraft/TorchCraft論文地址:
a Library for Machine Learning Research on Real-Time Strategy Games
4、BWEM
基於BWAPI的地圖分析工具,提供對星際爭霸一地圖的分析,可以獲取例如平坦區域,路口,基地位置等信息。一個尤其有用的功能是,從路口分析信息中,開發AI的人員可以直接獲取堵口建築的建造位置,而不必自行分析計算。
SourceForge地址:
http://sourceforge.net/projects/BWEMBWEM
BWEM官網地址:
BWEM library Homepage二、星際爭霸一相關比賽
現在星際爭霸一相關的比賽主要包括SSCAIT、CIG和AIIDE。David Churchill在AIIDE 2017發表的一篇論文對此三者有很好的總結與評述:
http://agents.fel.cvut.cz/~certicky/files/publications/aiide17-certicky-churchill.pdf下面將分別簡要對以上三個比賽進行介紹:
1、SSCAIT:
全稱是Student StarCraft AI Tournament,這個比賽主要面對的是主修人工智慧與計算機科學的學生,可以在SSCAIT的官方網站上提交bot,網站會自動進行對戰並直播:
官方網站:
http://www.sscaitournament.com/2、CIG
全稱是: Computational Intelligence in Games,是每年8月份左右舉行的遊戲AI重要會議IEEE CIG會議的比賽的一部分(CIG比賽還包括Dota2,爐石,憤怒的小鳥等等,甚至包括pokemon的比賽)。
2018年IEEE CIG會議中星際爭霸比賽的部分如下:
IEEE CIG StarCraft AI Competition - Sejong University3、AIIDE
全稱是Artificial Intelligence and Interactive Digital Entertainment,是受到AAAI支持的一個研究遊戲AI的會議,大約每年10月份舉辦,AIIDE與IEEE CIG是遊戲AI研究的兩個重要會議。
2017年AIIDE的星際爭霸比賽如下:
StarCraft AI Competition更多信息可以參考在StarcraftAI的wiki,鏈接地址:
http://www.starcraftai.com/wiki/Main_Page三、星際爭霸二相關工具
在2017年年中deepmind宣布開發星際二AI失敗以及開放pysc2機器學習平台之後,星際二的AI研究出現了一個小的浪潮,但是其從根本上與星際一之間沒有大的差別,並且星際二運行時對電腦配置要求高,並且不能隨意加速,導致在訓練AI,測試bot時與星際一的效率有較大的差別。因此最近的很多星際相關的研究文章均是以星際一為平台。
1、s2client-proto & s2client-api
s2client-proto是暴雪官方開放的星際二通信介面,當前所有的星際二相關工具均依賴於該通信介面。s2client-api是暴雪官方對介面包裝的c++庫,方便開發者進行AI開發。
s2client-proto地址:
Blizzard/s2client-protos2client-api地址:
Blizzard/s2client-api2、CommandCenter
這貨又來了,在升級之後,該框架同時支持星際一與星際二。
davechurchill/commandcenter3、pysc2
谷歌開發的著名的星際二機器學期平台,其為星際的一個python介面,將星際中的狀態信息轉換成向量的形式(主要以簡化圖像的形式)提供給調用者,可以非常方便地應用於強化學習以及機器學習演算法。
我使用了一段時間的pysc2,發現pysc2表示狀態的圖像數據是有很大局限性的,pysc2以不同feature layer的圖像表示不同的信息,例如單位信息表示為一個feature layer上的特定數字標號的區域,這種形式導致一則不容易表示重疊的單位,二則是因為數據離散化導致深度學習演算法應用困難(例如二維圖像矩陣中,數字1的單元表示此處槍兵,數字2的單元表示此處雷神,一旦單位種類變多,則演算法學習困難度會極大提升)
但是pysc2針對一些簡單的星際二小遊戲,例如微操場景或者收集礦石碎片場景,工作的還是比較好的。
pysc2的鏈接:
deepmind/pysc24、python-sc2
這是個人開發的基於python的bot開發框架,可以快速開發出一個可堪使用的bot來,介面簡單,易於上手。但是由於這是個人開發,因此難免有bug。
鏈接:
Dentosal/python-sc2四、星際爭霸2比賽平台
現存主要的比賽平台是Starcraft 2 AI Ladder,但是由於開發星際二bot的人數不多,提交到這個平台的bot數量很少,也沒有平時的直播,該平台也不能進行自動對戰。
鏈接:
Starcraft 2 AI Ladder更多信息可以參考在Starcraft2 AI的wiki,鏈接地址
Starcraft 2 AI以上基本上就是星際AI研發的工具與比賽平台,若有錯漏,希望大家及時儘快提出~
推薦閱讀:
※人工智慧方面頂級會議(轉)
※python機器學習的準備工作
※全球最聰明的大腦怎麼看AI?他們預測了這13大發展趨勢
※斯坦福CS231n項目實戰(二):線性支持向量機SVM
※人工智慧背後的數據科學