教AI逐幀搓招玩《鐵拳》通關最高難度,現在的街機游戲愛好者牛啊
博雯發自凹非寺量子位|公眾號QbitAI
現在的AI都開始學著逐幀搓招打街機了?
《拳皇98》、《街頭霸王》、《死或生》……一干童年回憶全都玩了個遍 , 其中還有號稱要打5000場才能入門的3D格斗游戲《鐵拳》:

文章圖片
沒錯 , 就是那個對新手極不友好的《鐵拳》 , 隨便拉一張角色的搓招表感受一下這個復雜度:
(沒錯 , 各種壓幀判定的JF技就是其特色之一)

文章圖片
△鐵拳TT2出招表
但AI偏偏就能在入坑沒多久就通關了最高難度:

文章圖片
△左側為AI
這款AI的背后是一位個人開發者 , 也是一位骨灰級的街機游戲愛好者 。
他訓練出來的新手“鐵匠”在Reddit的“比賽錄播”已經有近500的熱度:

文章圖片
強化學習訓練框架
這位AI鐵匠的背后 , 是一個叫做DIAMBRAArena的強化學習交互框架 。
DIAMBRAArena提供了多個強化學習研究和實驗環境 , 具有情節性的強化學習任務 , 由離散的動作(如游戲手柄按鈕)和屏幕中的像素和數據(如人物血條)組成 。
在這一框架中 , 智能體會向環境發送一個動作 , 環境對其進行處理 , 并相應地將一個起始狀態轉換為新狀態 , 再將觀察和獎勵返回給智能體 , 以此交互循環:

文章圖片
要實現上述循環的代碼也非常簡單:
importdiambraArena#Mandatorysettingssettings={}settings["gameId"]="doapp"#Gameselectionsettings["romsPath"]="/path/to/roms/"#Pathtoromsfolderenv=diambraArena.make("TestEnv",settings)observation=env.reset()whileTrue:actions=env.action_space.sample()observation,reward,done,info=env.step(actions)ifdone:observation=env.reset()breakenv.close()
這一框架目前支持Linux、Windows、MacOS等主流的操作系統 。
而這款AI的“實戰場”為早期的TekkenTagTournament , 當然 , 搓招復雜度完全不遜色于之后的新版本……

文章圖片
開發者選擇了風間仁(Jin)和吉光(Yoshimitsu)兩名具有代表性的角色作為主要操作對象 。
【教AI逐幀搓招玩《鐵拳》通關最高難度,現在的街機游戲愛好者牛啊】輸入分別為:從RGB轉換為灰度 , 并縮小到128x128px的游戲屏幕像素值、對戰局數(Stage)、人物血條、游戲界面的一側 。
訓練中的獎勵是一個基于生命值的函數 , 如果對方生命值損傷則得到正面獎勵 , 己方控制的角色生命值損失則得到負面懲罰 。
同時 , AI的動作速率也被限定為最大速率的1/10 , 即游戲中每6步發送一個動作 。
由于框架使用的是一種離散的動作空間 , 因此 , 智能體在訓練中的同一時間只能選擇一個移動動作9向上 , 向下等)或攻擊動作(沖擊 , 踢 , 出拳) 。
因此 , 雖然一個連擊組合的實戰能力更強 , 但由于AI無法同時點擊兩個動作 , 在真實的對戰中 , 便會出現AI頻繁使用踢(Kick)和更換角色(swap)兩個動作的情況:

文章圖片
評論區有資深PVP愛好者表示 , 想要看到這種頂級AI選手互虐的激烈場景 , 而開發者本人對此非常贊同:
我們正在創建一個平臺 , 在這個平臺上 , 程序員將提交他們訓練有素的AI并互相對抗 , 并在我們的頻道上播放比賽 。
相關經驗推薦
- DYG臨陣換帥,指尖卸任,新教練是十六,背水一戰,再輸就去B組!
- 紅警3人防守:遺落幽浮1人單通教程!菜雞王
- 丐幫秒天秒地秒空氣?掌峨眉直接教做人,玩過才知道有多強
- 王者榮耀有錢的用戶有很多|王者榮耀:教你一個可以大量獲取皮膚碎片并且不用做任務的方法
- 為了看完教程 PS5《地平線:西之絕境》加載增長
- 最近啊|王者榮耀:狼隊主帥林教練即將回歸,回歸指日可待
- “這個家不能沒有悲傷”,WE教練銳評戰隊表現,其他人說都不想
- Hope金克絲五殺,Kanavi人馬教學局!JDG輕取OMG斬獲四連勝
- 大家好|熱血傳奇:野外遭遇“紅名”沃瑪教主,交手5分鐘收獲黑鐵頭
- “角色互換”北楓用三只手對線琪亞娜,網友:這波叫作反向教學
