1. AlphaGo的親爹deepmind和暴雪聯手開發了個新的接口,可以訓練AI打《星際爭霸2》了。
2. AlphaGo能來得了這個麼?不能,打遊戲比下棋複雜多多多了。
3. 這接口分兩個部分,一個是暴雪給AI定做的訓練場,可以讓AI以人類視角進入遊戲;另一個是deepmind打造的「通關攻略」,可以調教AI逐漸變強。
4. 普通玩家感興趣的話也可以按照這個教程免費下載試試,不會寫AI的話也有別家的AI打遊戲的視頻可看~
5. 在這個系統的調教下,有人的AI已經可以打過電腦了!
6. 順便一說:隔壁OpenAI做的dota2 AI已經打敗了世界頂級職業選手喲~
作者:歐剃
編輯:Lyroat
最近,Google旗下的人工智慧團隊,AlphaGo的親生父親Deepmind宣布和暴雪娛樂合作,並放出了《星際爭霸2》的應用程式接口(API),讓AI能夠在即時戰略遊戲環境下進行機器學習。
那麼,AI這就要進軍電子競技了嗎?還有,這個API到底是什麼?我們能玩嗎?好玩嗎?該怎麼玩?
近年來,遊戲開發巨頭暴雪娛樂一直和開源社區有著不解之緣,除了為一些開源軟體貢獻了代碼之外,暴雪的開發團隊先後公開了《魔獸世界》、《暗黑破壞神3》的遊戲數據查詢API,還開源了《風暴英雄》和《星際爭霸2》的遊戲回放處理編輯代碼庫。
2016年,暴雪在嘉年華上承諾放出《星際爭霸2》的遊戲API,而在第二年8月9日暴雪就實現了自己的諾言[1]。
圖片來源:暴雪娛樂
另一方面,人工智慧團隊Deepmind從深度學習等人工智慧研究的前沿領域著手,在訓練AI玩Atari遊戲機、走迷宮等項目之後,通過卓越的圍棋AI「AlphaGo」連續擊敗多名世界圍棋頂級高手,一鳴驚人。此後,DeepMind官方就表示將研究方向轉向即時戰略遊戲,而首選的就是《星際爭霸2》[2]。
不,並不能。
按圍棋規則訓練出來的AlphaGo很難應對《星際爭霸2》這類即時戰略遊戲。
首先,在《星際爭霸2》中,玩家既要擁有快速的戰術微操能力,還要有足夠高的戰略規划水平。如果說圍棋每步的可能性有19✕19=361種,那在即時戰略遊戲中玩家用滑鼠點擊下達命令的每步可能性則將超過100000000種,還不包括不同的建築順序、放置布局、兵種搭配和科技樹順序等等。
而且,對於圍棋來說,全盤的信息是完整的,所有的推測可以根據盤面的情況來進行。但在即時戰略遊戲中,由於有「戰爭迷霧」這種設定,玩家只能看到自己的部隊探索或佔據的區域,AI所能獲取到的信息是不完整的。
所以對於未知領域的計算就更加困難了,於是Deepmind決定開發新的應用程式接口來進行AI在即時戰略遊戲上的應用。
可以看到,這兩種遊戲在玩家獲得的信息方面的不同。圖片來源:維基百科、《星際爭霸2》遊戲截圖
這次的放出的接口,全稱叫「星際爭霸2機器學習環境」(StarCraft II Learning Environment,以下簡稱SC2LE),它並不是一個玩家直接打開就能玩的Bot(遊戲AI),而是一個讓程式設計師能用來「訓練」人工智慧的基礎環境。和非人工智慧的程序不同,人工智慧程序並沒有硬編碼了「要怎麼做」的代碼,必須通過機器學習的「訓練」過程來找到最優的解決方案。
作為一個更新穎也更具挑戰性的機器學習環境,SC2LE由兩個部分組成:
SC2LE結構圖:星際2客戶端本身(左側黑色)是核心,通過API和PySC2進行溝通,聯合成一個整體,玩家的AI(右側Agent)通過PySC2得到各種觀察結果和反饋,然後做出具體的行動命令,以模擬人類操作的方式,輸入進PySC2裡,形成一個具體的遊戲操作。圖片來源:Deepmind SC2LE介紹
這裡的「強化學習」,是一種基於決策和交互的機器學習方式。在「訓練」過程中,程序針對當前需要解決的問題,建立一個模型,然後基於當前環境給定的各種規則和條件作出決策,並且通過探索各種可能性,根據獲得的反饋(可能是「獎勵」或「懲罰」,比如成功開了分礦,或者在戰鬥中損失了一支部隊等等情況)來調整下一步決策,通過不斷的試錯和修正,來尋求最優的對策。
通過這樣的方法,訓練出來的AI能夠以模擬人類觀察和操作的方式來進行遊戲,而不是靠直接讀取遊戲數據和APM碾壓的作弊辦法。是不是很有挑戰性?
這種高端的項目,是不是只有程式設計師才能使用?
不,即使你不是程式設計師,也能玩這個東西!而且我可以負責任的告訴你,這並不難!
首先當然是通過暴雪遊戲平臺,下載星際爭霸2的客戶端。如果你已經有了能進遊戲的客戶端,那就不需要額外下載了。另外,免費版也可以運行AI程序。
其次是要準備好代碼運行所需的軟體環境,也就是 Python 語言的解釋器。這可以在 Python 開源項目的官方網站上下載: www.python.org
接下來,我們先看暴雪放出的代碼[4]:
在下載區,前三個是API的編程說明書、C++的代碼庫和Linux版的《星際爭霸2》AI用客戶端——不是程式設計師的你可以安全的忽略它們。第四個是地圖包,第五個是65000個遊戲回放數據。如果只是想看看AI怎麼玩,並不打算實際調教一個AI的話,你只需要下載幾個地圖包即可。下載後解壓壓縮包裡的東西到星際爭霸2的 StarCraft II/Maps 文件夾裡,解壓密碼是 iagreetotheeula 。
解壓完之後,你的 StarCraft II 文件夾裡應該有這些子文件夾:
然後,你需要從 Deepmind 的開源頁面上安裝PySC2模塊[5]。
如果你已經裝好了 Python 環境,只需要在系統的「命令提示符」裡輸入以下命令就可以在聯網狀態下一鍵自動完成安裝了:
pip install pysc2
最後, PySC2 還提供了一套測試基本AI學習功能的「迷你遊戲」的地圖包,在Deepmind的github頁面上可以下載到 ,將其放進 Maps 文件夾裡即可。
安裝好了最基本的SC2LE運行環境後,你就可以通過 python 命令激活一個新的AI開始遊戲了!
在命令提示符輸入以下命令,就可以打開一場新遊戲,看AI的行動了:
python -m pysc2.bin.agent --map Simple64
上面的命令是在一張簡單的1v1地圖上,用一個隨機AI進行遊戲。如果你裝了上面的「迷你遊戲」地圖包,還可以調用 Deepmind 已經調教好的範例AI玩收集資源的小遊戲:
python -m pysc2.bin.agent --map CollectMineralShards --agent pysc2.agents.scripted_agent.CollectMineralShards
遊戲效果如下:
背景是遊戲畫面,而中間我切出來的那個窗口則是PySC2本身的AI工作窗口,裡面顯示了從AI的角度所看到的遊戲數據是什麼樣的。
動圖閃太快看不清?讓我們開一局新的完整遊戲看看:
上圖左邊是經過簡化的遊戲圖像,可以看到中間(大綠圓)是星靈的樞紐(Nexus),帶著一群探機(小綠圓)在採礦(藍圓)。右側則是各個分層數據,包括地形高度、當前視野、小地圖數據,當前窗口上的各個單位類型、血量,已選中的單位數據等等。圖片來源:SC2LE程序界面
過了一會,顯然目前的實驗AI基本就是亂來:
建造順序和建築擺放的方式可以說是十分混亂了。 圖片來源:SC2LE程序界面
根據deepmind的資料顯示,目前各家訓練開發出來的AI(PySC2中附帶了好幾個不同的範例)在完成採礦、控制單位移動、造兵等基礎操作方面沒有太大的問題,但在整個遊戲上還很難和暴雪內置的簡單敵人抗衡。大部分的AI能做到的都只是機械的隨機重複已有的行為而已。看來要玩的好,這門檻也還不低啊,想要「做一個AI打敗電競高手賺錢」還是挺任重道遠的。
目前,表現優秀的是加拿大紐芬蘭紀念大學計算機科學系助理教授大衛·邱吉爾(David Churchill)開發的AI:CommandCenter,它雖然只會一種固定套路,但已經幾乎能打敗暴雪內置的簡單電腦敵人了[6]。
你現在下載這個軟體,也可以在你電腦上模擬一場:
這盤,被CommandCenter殺光農民的電腦敵人打出了gg。 圖片來源:星際爭霸2AI運行截圖
大衛·邱吉爾表示,接下來他將讓這個AI學會建造附屬建築、適時升級相應的科技,未來還會嘗試讓AI能對戰鬥情況進行預判,以及在主動進攻、積極防禦、遊擊騷擾等策略中靈活選擇。
最後,Deepmind和暴雪在SC2LE的發布說明中表示,希望通過這次開源的代碼和範例,能給廣大星際玩家和自製AI愛好者提供更多的便利,更好地發揮出創造力,也希望能給人工智慧領域的研究者一個更強有力的研究工具,以便推進未來人工智慧技術的發展和進步。或許在不久以後,我們就能看到星際爭霸AI版的《機器人大戰》節目了吧?
在《機器人大戰》這個暴露年齡的節目中,參賽者用自己製造的機器人下場決鬥,把對方摧毀的一方獲勝。圖片來源: Battlebots.com
無獨有偶,8月12日早上,特斯拉老闆伊隆·馬斯克(Elon Musk)旗下的人工智慧OpenAI在Dota2的1v1比賽中,以三戰兩勝的成績首次擊敗了人類職業選手Dendi。
被AI單殺的Dendi小哥。圖片來源:Dota2比賽視頻
據OpenAI團隊介紹,他們的AI並不是靠微操數量取勝,他們的AI通過自己和自己比賽的機器學習方式,花了兩周時間達到了目前的水平。
不過,雖然這個AI看起來比星際2的AI厲害了許多,但這種控制單一英雄、中路對單的Dota 2裡,AI需要處理的信息和進行的操作都比完整的星際2對戰簡單很多,表現良好也算是情理之中。
在此之前,這個AI也打敗過SumaiL、Arteezy等職業選手。不過OpenAI CTO Greg Brockman表示,1V1的勝利並不是他們的最終目的,OpenAI希望能在2018年的國際邀請賽上與職業選手進行5V5的比賽。說不定到時候的全明星賽將會是一場新紀元的人機大戰!
不知道OpenAI會不會開源相關代碼,讓我們一飽眼福呢?對於電競玩家來說,能夠和人工智慧對戰還是非常令人期待的!
參考資料:http://us.battle.net/sc2/en/blog/20944009
https://deepmind.com/blog/deepmind-and-blizzard-open-starcraft-ii-ai-research-environment/
https://deepmind.com/documents/110/sc2le.pdf
https://github.com/Blizzard/s2client-proto
https://github.com/deepmind/pysc2
https://github.com/davechurchill/CommandCenter
https://blog.openai.com/dota-2/
想了解更多遊戲裡的小知識嗎?
快來關注↓↓↓
ID:geekgaming
有哪些你不知道的奇葩小遊戲?
遊戲會讓你變得更聰明嗎?
《王者榮耀》的英雄蘊含著哪些現代科技?
遊戲,一部時代的科學史
更多文章,掃碼既看
如有投稿或合作意向可發至geekgaming@163.com郵箱