正文

星際爭霸1的AI設計思路:以人族開局為例

(2013-01-15 18:17:12) 下一個
星際爭霸1的AI設計思路:以人族開局為例現在看來,伯克利分校的星際爭霸1AI—— “主宰”充其量是個微操機器人。它一如既往地沒有認識到,AI能夠“隨機應變”這個問題的解決,最終的答案就是問題本身——隨機地應變。星際爭霸1是一款即時策略類遊戲。我們就從策略入手,以人族的開局為例說明如何設計真正的AI。電腦AI選定人族後如何發展自己呢?不妨將它視為一連串策略的發生、執行與完成,這一切又都由AI自己隨機決定。為何要隨機的理由很充分,任何一種無論多麽成功的策略體係出現一次後都會被針對,一旦如此,AI就不再是AI了,人們發現那變成了愚蠢的行為。相反,有時看似愚蠢的行為,隨著事情的發展卻變得很聰明。1、主動型策略(1)采礦;(2)建造:放BS;放BB;放BR;放BC。(3)訓練(比如,造SCV);(4)探路;(5)攻擊;(6)野BB。2、被動型策略(1)穿礦聚團攻擊;(2)散點圍攻。3、偶發型策略(1)野BS;(2)封氣礦。這些策略屬於基本策略,是不完整的,你還可以將其歸為兩類供選擇。不管怎樣,我們將它們的集合統稱為策略集。重要的是還有一類:4、優化型策略(1)先定分析如同一名人類選手新學星際這個遊戲,AI需要對地圖、兵種等進行基本的分析,依據有關數據確定每個時段的必須完成的任務、基本的發展路線。能做到這一點是因為,星際的資源、兵力和科技在一定時間內是有上限的。(2)指令序列指令序列必須具備策略集(供選擇策略)、計算和比對功能。進入遊戲後,AI為每個SCV建立一個指令序列(相當於一個獨立的電腦進程或應用程序),來控製SCV。假如隨機取到采礦這個策略,那麽,四個SCV可以同時去距自己最近的水晶采礦。與之同時,為大本建立起的指令序列訓練一個SCV。假如電腦在擁有9個SCV時選到探路策略,那麽就隨機選一個SCV,計算出一條路線,出去探路。假如這個SCV在探到對方後遭遇攻擊,指令序列根據先定分析中的數據比對攻擊與防禦,決定攻擊還是躲避。假如這個SCV不幸地遭遇散點圍攻(類似於6條小狗合圍)後陣亡,則該指令序列刪除。(3)策略中心控製線。對(1)的問題做出回應的就是它。在遊戲進行到某個時間,依據自身采集的資源情況、偵查情況,修正或繼續執行原來的策略。例如,當水晶達到100時,大本返回(或控製線直接讀取到)這個信息,控製線從自身的策略集中選擇策略,決定是放BS,或是等待,繼續訓練SCV,滿150水晶時放BB。這些信息返回給大本。水晶達到150時,控製線隨機選一個SCV放BB。當探路的SCV探完對方後,返回信息給控製線表示任務完成,控製線決定這個SCV的下一步動作,比如,此時對方探路農民同樣到達了AI家中,AI家中尚未造建築,則控製線有可能選到野BS或野BB。理由是,從人類選手的操作可以知道,一個要放建築的農民可能很長時間都放不下。所以,指令序列給出的任務應當是有時間屬性的,超過某個時點則交由控製線處理,這同樣可以用來對付對方的封氣礦策略。控製線還應當有個某個時段占據某個有利地形,或某些兵種前往某地的策略,等等。它決定了兵力部署、站位。交叉策略中心。SCV遭遇對方探路農民的騷擾性攻擊後,可能選擇攻擊策略(穿礦聚團攻擊或散點圍攻),這需要多個指令序列的協同,因此可以選擇創建一個新的指令序列來進行控製。我們將它稱為一個交叉策略中心。(4)分析中心先定分析屬於這部分的內容。隻是它如此重要,以致將它提前了。分析中心又應當具備更多的功能。學習。也就是對AI自身的整體性訓練,包括自我對戰訓練、與其他選手的對戰訓練和調整策略集、控製線等。策略集一開始是不完整的,但可以通過與一個同自身一樣的程序來對戰,擴充和優化策略集。分析中心通過對對戰錄像的分析(當然隻能是代碼形式的),讀取有關數據,切分各時段資源、兵力和科技等情況,選取較優的部分納入策略集,刪除不合理的策略。如有必要,為策略賦予時間屬性。這樣,就可能出現一個AI學習到的大招。其他也是如此。基於隨機性的電腦AI不會每次都勝,因為世界是公平的。但是,隨著電腦AI的強大,完全可以預言,星際爭霸1的平衡性將被徹底打破。公平將不再是對一個人類選手和一個電腦AI而言,而隻是對一個AI與另一個AI而言。我們需要的將是1024線,看到的將是真正的不夜城。3個槍兵旋轉打地刺不是奇跡,也許,我們打開AI間的對戰一看,一個AI正在甩槍兵。相關閱讀★絕對真理的內涵、架構與印證★概率論:完全可能性的理論與現實圖景★悖論問題的統一解★從延安文藝座談會到人類社會的未來★發現號航天飛機——自然算法偉大的飛矢變換★諸神之戰在星際爭霸1的實現[001]AI遊戲的發端
[ 打印 ]
閱讀 ()評論 (0)
評論
目前還沒有任何評論
登錄後才可評論.