Hi~ o(* ̄▽ ̄*)ブ ,大麥的《星際争霸十萬個為什麼》又和大家見面啦!對于遊戲廠商來說,任何人破解自家的遊戲甚至還将最重要的核心代碼公之于衆絕對是不可接受的,但是在星際争霸這款遊戲當中,曾經有黑客成功反編譯了後還利用底層代碼制作成了一個API接口讓其他玩家随意使用。有意思的是,暴雪不僅沒有發律師函,後來甚至還鼓勵全世界的各大廠商都來使用這個接口,這就是曾經在星際争霸AI開發圈最知名的接口BWAPI,其核心作用是用于開發星際争霸AI。
也是因為這個接口的出現,星際争霸的AI開發有了一個不錯的環境,以至于之後還衍生出了星際争霸的AI開發大賽吸引了不少全球最頂尖的程序員和公司來開發星際争霸的AI進行對抗,暴雪為此還為一些比賽提供了獎金。今天大麥就想來和各位說說當年星際争霸AI開發背後的故事。
最初形态星際老玩家們一定都接觸過星際争霸1時代最早的AI,那時候的AI我們甚至都不能将其稱作AI,在1.08版本以前,玩家隻要仔細觀察,就會發現這些AI實際上都是在執行已經預先設計好的流程,而且執行還都比較僵硬死闆,比如人族他就是固定會有5波進攻。
第一波是12個槍兵,第二波12個槍兵帶3個坦克,第三波14個槍兵帶5個坦克,第四波12個槍兵帶5個坦克以及4個鬼兵,第五波10個鬼兵再帶4個大和。因此玩家隻要摸清套路以後,在繼續和AI進行對抗沒有什麼意思了,每一局的戰鬥都不會帶來太多變化。
而且随着玩家不斷深入,也會發現一些投機取巧的方式,其中最廣為人知的就是AI很容易被輕易勾引,如果拿一個農民或者小狗到AI家裡探路,那很可能引得AI所有的農民都來追這你滿地圖跑,也能夠以此來嚴重影響AI的經濟。
當然了,對于當時剛剛接觸星際争霸的玩家來說,有時AI可能比真實玩家更難解決,因為所執行的運營基本算是比較合理的方式,新玩家在家裡才剛生産五六個槍兵時,AI就帶着第一波12個槍兵過來了,自然不少新手連AI第一波都堅持不住。再加上當初星際争霸不像後來的魔獸争霸還有AI分級系統,因此往往玩家們在剛玩遊戲時也是被AI虐得死去活來。
到1.08版本以後,其實也就是母巢之戰資料片推出後,星際争霸AI有了比較大的改善,AI開始有了變化,最明顯的變化就是在前期的戰術當中會出現了多種不一樣的選擇,但說是戰術實際上就是簡單變化了一下兵種搭配。比如過去人族第一波的進攻一直都是12個槍兵,後來出現了機槍加護士,或者是機槍加噴火兵的搭配,這取決于AI偵查到的對手是什麼樣的種族以及距離的遠近。
有趣的是,人族和神族都做了相應的變化,唯獨蟲族從遊戲開始發售到後來,AI初期永遠都采用一個策略就是6條狗rush,不知道是不是因為蟲族本身程序設計的問題導緻的。
不過,總體來說星際AI相比于最初也有了比較大的進步,但在官方層面也就到此為止了,暴雪之後就沒有在對遊戲中的AI進行什麼修改,而玩家可不僅僅滿足于此。所以就出現文章最開頭說的有大佬成功破解了星際争霸後隻做了一個BWAPI并且進行了開源,讓星際AI開發的工作交到了所有玩家們的手中。
不斷進化從那時候開始,民間各種各樣的星際AI增強補丁就遍地開花,比較出名的應該是BWAI Launcher這個軟件,裡面幾乎囊括了所有當時市面上比較知名的AI。而這個BWAPI有一個比較特殊的地方,就是他沒有開放戰争迷霧的數據,利用其開發的AI基本上和人類在玩遊戲時所獲得消息是一緻的,需要AI自行去判斷場面局勢,這屬于星際争霸AI開發時最核心的難點和之後出現的那種直接讀取内存的AI截然不同,也對于AI行業的發展有更具有現實意義。
所以,基于BWAPI所開發的星際AI其實嚴格意義上來說是最具有一定的現實意義,因此在之後的幾年中有越來越多的公司或者個人加入到了這個項目中來,就為了能夠開發出真正戰勝人類的星際AI,而這個影響力也越來越大,以至于到了2010年出現了第一屆星際争霸AI大賽,“AIIDE2010”。
那次的比賽既有個人開發者參加同時也有一些知名的人工智能實驗室參賽,那時候星際AI使用的基礎理論是當時機器人領域最常用的“人工勢場法”,簡單來說人工勢場包括引力場合斥力場,其中目标點對物體産生引力,引導物體朝向其運動(這一點有點類似于A*算法中的啟發函數h)。障礙物對物體産生斥力,避免物體與之發生碰撞。物體在路徑上每一點所受的合力等于這一點所有斥力和引力的和。說白了,就是當時一個比較常用的機器人尋路的原理。
其實當年第一屆的星際AI大賽,大家集中關注的問題都還在遊戲中的尋路問題上,簡單來說就是誰尋路做得好誰就占優勢,可以看出這也是星際1自身的問題,由于當年暴雪地圖以及建模的問題,導緻星際中的單位路過狹小路口時經常會發生擁堵。而這種擁堵對于真實控制的玩家來說還好解決,但對于AI來講就是個大難題。
所以第一屆赢得星際AI比賽冠軍的是主要使用用了飛龍這個單位的Overmind,本身飛龍作為飛行單位也不需要考慮尋路問題,所以也算是用了一個投機取巧的辦法吧。但客觀來說,那時候星際AI依然還沒有觸碰到RTS遊戲最核心的問題決策和策略。
不過随着星際AI大賽不斷舉辦,每年參加的AI能力也在不斷進化,值得關注的是一款叫做Aiur的AI,它首次提出了采用随機決策的人工智能,說白了就是開發者給它設計了五種戰術天性,在比賽開始前會随機從這五種戰術中選擇一種,是rush還是保守發育全靠随機,如此一來讓對手無法進行針對。因此實際上這些AI還處于比較初級的水平。
但基本上在谷歌的深度學習出現之前,星際争霸的AI還是沒有觸碰到AI真正的核心要點,為何這麼說呢?那時候的星際AI與其說是AI之間的對決,不如說是人之間的對決,因為每年的AI大賽上,各個參賽選手都會針對去年對手的AI特點針對性的設計程序,比如有些AI很喜歡前期Rush,那麼自家的AI設計就針對其在前期設計為偏向防守方式,而最重要的AI自我決策能力并沒有多少,基本上還是按照If then的方式在執行。
轉折點大概在2016年的時候,星際AI的發展發展出了一個有意思的分支,更多還是玩家們為了自娛自樂,最經典的還是那個在星際2當中号稱“悍馬2000”的超級AI。這個AI本身在程序設計上并沒有什麼精妙之處,在決策上也不存在什麼過人的地方,但是最大的亮點是它擁有高達數萬的APM。如此可怕的APM所帶來的優勢就是能以人類根本無法實現的操作來彌補“智力”上的不足,也就是俗稱的大力出奇迹。
這個AI還有一個比較賴皮的地方就是他可以直接讀取遊戲内存,不僅戰争迷霧對其沒有影響,同時玩家的操作他也能了如指掌,除了開局無需探路之外,還能精準地躲避AOE傷害。就比如當時放出來一段小狗圍殺坦克的視頻就可見一斑。
為什麼當時會出現這樣一種奇怪的AI,或許是因為那時候的星際AI發展陷入了一個比較悲觀的情緒。當時星際AI從大家開始研究起已經經過了十幾年的時光,但是直到2016年的時候星際AI在面對水平一般的職業選手時依然像是個小學生一樣,尤其是在戰術或者是決策層面上,絕大多數還依靠人類提前預設好的程序來執行。所以有不少人認為,人工智能在短期内是無法突破像星際争霸這樣複雜的遊戲。
然而谷歌的深度學習出現以後出現了巨大的轉折,可以說是徹底轉變了之前星際AI開發的思路,讓AI自己去學習自己去發明戰術,短短幾年的時間就徹底攻克了星際2這款遊戲。不過,或許是谷歌的深度學習AI的研發成本過高,在之後幾年的AIIDE大賽裡,參與的星際AI依然是采用人類編程的方式不具備高級别決策系統,因此在沒有其加持的情況下人類依然保持這在星際1領域對于AI的碾壓狀态。
一個小彩蛋最後在說一個小彩蛋吧,其實星際争霸2早在2010年就發售了,星際争霸AI大賽卻還堅持使用星際1呢?其重要原因除了星際1擁有BWAPI這樣開放的接口外,還有就是暴雪對于星際2的版權态度非常嚴格,即使是作為開發星際AI所使用暴雪也堅決不向公衆開放和星際1時代類似的API。隻有得到了暴雪官方授權的機構才允許進行開發,因此對于一些個人開發者來說想要得到暴雪的官方授權并不是一件容易的事情,而且不少研究機構也不願意接受暴雪的一些嚴格的管理,所以星際2的AI開發實際上一直是少數的大型機構在進行,比如谷歌這樣的,也因此直到現在星際AI大賽絕大多數還是在星際1領域中進行。
,