莫要瞧不起土豆廠:遊戲界最牛的AI就藏在他家
最近遊戲界共有兩個關於人工智能的大新聞。第一件是曾經開發了Alpha GO的公司DeepMind公佈了他們進軍《星際爭霸2》的最新進展:暫時棄療,短期內難有突破。DeepMind認爲,基於現有技術想要讓AI真正打《星際爭霸2》是不可能的。這裡說的“真正的打遊戲”即DeepMind不是想做一個“瘋狂電腦”,而是想做一個面對複雜且未知的環境真正擁有自我決策能力的“強力AI”。
爲此,們儘可能地模擬人類,例如將《星際爭霸2》的輸出信號轉換爲二維圖像,讓AI“讀屏幕”而不是直接讀取底層數據。這導致出現各種奇葩狀況,例如一條小狗進入戰爭陰影后再出現,AI就沒法判斷此小狗是否是先前的小狗。如果使用暴雪提供的可以直接讀取單位屬性API接口就不會有這種問題,但DeepMind不是爲了打造一個能只打遊戲的AI,所以選擇了一條更難的路。
二維圖像的《星際2》,也差不多是AI眼中的《星際2》
結果幾番嘗試後,他們發現基於現有算法的AI只能完成一些微觀任務:比如尋路和控狗。一旦進行宏觀的全局遊戲,AI就沒法實時處理如此龐大數據。自學的結果就是連簡單電腦都打不過,最後只學會了一招“忍辱偷生”——升基地逃跑。所以DeepMind乾脆公開了基於Python的封裝的《星際爭霸2》API接口,就相當於把研究設備給了所有人,讓全世界的研究者集思廣益以求得算法的突破。等於在說我不行了,誰行誰來吧。
第二件大新聞是OPEN AI開發的OPEN DOTA(以下以OD代稱)在TI7總決賽上1V1影魔中路對決中暴打了Dendi,V社還放了一段視頻證明OD同時也暴打了ATZ和Sumail等一衆世界頂級中單。開發者在TI7舞臺上稱OD只學習了兩週,但這話其實是隨口跑火車。根據後續披露的資料來看從第一次能實戰到擊敗Sumail OD共用了五個月——不過這也足夠驚人了。
蘇跳跳被AI暴揍,賽後他聲稱AI是不可戰勝的
不過之後還發生了一個小插曲,在TI7期間的開放試玩中,玩家發現了各種可以戰勝OD的野路子,比如開局勾兵、1級學影壓和毒球鞋墊出門就會把OD帶入未知領域,之後便能輕鬆擊敗OD。野路子戰術的成功證明OD仍有缺陷,但它的進步速度飛快。Sumail在第一次對抗OD時2:1,第二天再戰就被0:6剃光頭。只要OPEN AI想,玩家的野路子第二天就會失靈。
因爲勾兵被人類戰勝後的OD一定是這麼想的
但OPEN AI想要的顯然不是這種你來挖坑我填土的模式。和DeepMind一樣,他們不是爲踢DOTA2玩家的屁股纔開發OD,而是爲了開發一個真正能適應各種場景的強AI。OD現在只能在,限定英雄、限定分路、沒有神符、沒有野怪、不能運瓶這樣一個被嚴格控制變量的場景中對抗人類,而他們的最終目的是讓AI打5v5的真正DOTA2比賽。至於哪一天才能做到?從官網文章的措辭來看,他們心裡也沒有X數。
國際象棋淪陷的時候,我沒有發聲,因爲我不玩國際象棋;圍棋淪陷的時候,我也沒有發聲,因爲我不玩圍棋;現在,AI開始進軍DOTA2和《星際爭霸2》了,雖然距離這兩個項目淪陷還有很長一段路要走,但是狼真的來了。不過,就在DeepMind和OPEN AI還在死磕怎麼讓AI能在遊戲裡暴打人類的時候,有一家公司已經另闢蹊徑,率先在遊戲領域將人工智能實用化。猜猜這家公司是誰?
——法國土豆大廠育碧。
沒錯,就是我,萌萌的育碧啦!
遊戲+AI=?
想到人工智能在遊戲中的應用,很多人的第一反應都是設計一個AI和玩家對戰。這就是因爲媒體在報道上太過強調人與人工智能的對抗,也是因爲人類又在一個項目被人工智能超越的標題天然抓人眼球,導致很多時候我們忘記了最初人們爲什麼要創造AI。
人類創造AI的目的,並不是爲了讓AI戰勝人類,不是爲了證明AI比人類更優越。而是爲了幫助人類做到之前做不到的事情。育碧不是人工智能領域的領頭羊,但他們卻結合人工智能技術開發出了一款就某方面來說具有劃時代意義的遊戲。這款遊戲你可能已經玩到了,而且你絕對不會把超級AI與它聯想到一起。
沒點BUG你還好意思說自己是育碧家的?
乍聽起來有些搞笑,《榮耀戰魂》這樣一款讓玩家們拿着刀槍棍棒相毆的遊戲是怎麼和AI扯上關係的?爲什麼在遊戲中完全感覺不到AI的存在感?難道是雜兵變聰明瞭?而它又是何德何能成了具有劃時代意義的遊戲?——有這種疑問很正常,玩家在遊戲中感受不到AI的存在,是因爲育碧將AI應用在了遊戲最底層的部分——動作。
在2016年3月的遊戲開發者大會(GDC)上,育碧的資深動畫程序員Simon Clavet向所有人展示了育碧的一項黑科技,下一代人物動畫技術:動作匹配(motion matching)。在當年十月份的“人工智能和互動數字娛樂會議(AIIDE)”上,Simon Clavet又做了長達一小時的報告,詳細解釋了這套系統,而最先應用動作匹配技術的遊戲便是《榮耀戰魂》。
育碧動畫程式師Simon Clavet最早向大衆介紹了育碧的黑科技
現階段的人物動畫技術是哪樣?
要了解動作匹配技術究竟先進在哪,我們就要先知道現在的人物動畫技術是什麼樣。我們如今在遊戲中看到的人物一套完整動作,都是由預先準備好的數個動畫片段組合而成。比如“衝過去兩刀砍翻敵人”的動作,系統動畫的播放順序就是“跑-重擊1-重擊2-收劍”。
真實的動畫都是來自真人動作捕捉,例如《巫師3》便是請來波蘭的劍術家擔任白狼的動捕演員。遊戲動作捕捉不像電影記錄整套動作,而是記錄一個個動作片段,例如走、跑、蹲、跳、揮劍。這就是目前的主流技術,前期動作捕捉,在遊戲裡拼成一個完整動畫,但這種模式也有缺陷。
這位負責白狼的動作捕捉,身法是不是很眼熟?
首先,一種動作要準備數個動畫,因爲準備少了玩家很快就會發現自己的戰鬥動作千篇一律。比如《刺客信條》(沒錯還是育碧),玩家只要負責按攻擊/破防/格擋鍵,程序會自動分配連招動畫。玩了一段時間之後你就會發現戰鬥其實就是QTE加上幾套不斷重複的處決動作。
其次,動作與動作之間如何銜接?沒有銜接措施人物動作就會變成幻燈片。前一刻人物還在蹲着,下一刻就飛起來砍人。《真三國無雙》直接從普通攻擊動作“跳”進無雙動畫就是典型例子,酷炫但是和動作流暢已經不沾邊了。無雙屬於把無銜接作爲遊戲機制的一部分,但如果所有動作之間都沒有銜接人物動作就會變成鬼畜。
其實過去的街機遊戲也很少有銜接動畫,慢放就會很明顯
所以要想動作流暢自然,必須要在兩個動作之間準備過渡幀(動畫)。過渡幀起到串聯動畫的作用,玩家輸入操作A、B,程序就會依次播放A、A-B過渡幀、B。這只是最簡單的解釋,有時要根據上一個動作狀態的不同要選用不同的過渡幀,一個動作可能會分出四個過渡幀,每一個動作幀銜接的動作又會分出N個過渡幀,這就是所謂的狀態樹。
第三個問題就是如果想要動作流暢,必須放完一段動畫後才能放下一段動畫。玩家給的操作指令要排隊依次執行,誰也不能插隊。最典型的例子就是魂系列,專治各種瞎按,這一劍揮出去了就只能等動畫放完才能重新控制角色,這會讓玩家感到一種慣性。一些格鬥遊戲中的“動作取消”其實就是直接結束當前動畫播放下一個動畫,會帶來操作優勢(連續技)但導致人物動作不流暢,會出現跳躍式動作。
“動作取消”這個概念最早誕生在街霸2,原本是一個BUG
另外多說一句,動作流暢和打擊感、爽快感其實是兩碼事。爲了流暢度強制播完動畫會讓玩家感到操作的遲滯感,而《鬼泣》的每一個攻擊動作都能取消前一個攻擊動作的打擊後幀,反而會產生一種“我不知道但丁是怎樣做出這種動作,但我打的很爽”的感覺。在一些遊戲中,格擋/彈反能夠強制取消任何動作並立即切入格擋/彈反動畫,很突兀但配合音效會讓人感覺很爽。例如《命運之手》的反擊、《羅馬之子》的格擋、《刺客信條:黑旗》的防反,玩家可以無限反擊/格擋/防反。
人物動畫雖然有動作捕捉輔助,但也要靠後期手工調整。過渡幀很難靠動作捕捉捕捉獲得,幾乎全靠動畫師手工製作,成本很好。理論上人物動畫和過渡幀越多,動作就越自然。但限於成本不可能準備無限多的過渡幀和動畫,光是少量動作的排列組合所產生的過渡幀數量的爆炸,所以現階段遊戲人物動作仍然很難做到真正流暢。
《黑旗》的特點是無論當前在執行什麼動作,都能優先發動防反
AI加育碧,大力出奇跡!
回到我們上一個話題:育碧的動作匹配技術究竟黑科技在什麼地方?它允許玩家從一個動畫直接跳到另一個動畫。《榮耀戰魂》最初立項時,育碧希望創造出一種能精準控制的真實流暢的操作體驗,即人物動作既要真實流暢,還要能對玩家的操作做出即時反饋。
在舊的人物動畫技術裡,即時反饋和真實流暢本身就是矛盾的:前者意味着玩家任何時候按下按鍵都會有動作反饋,即玩家能隨時改變角色動作,中止當前動畫播放;後者則要求必須放完一整段動畫才能過渡到下一段動畫。這個自相矛盾的要求,卻能被育碧的動作匹配技術完美解決,這就是動作匹配厲害之處。
即時反饋和真實流暢原本是一對不可兼得的屬性
育碧的靈感最初來自Lucas Kovar十年前的論文,當時Lucas Kovar認爲可以事先準備好一大段未預先處理的動作捕捉數據,通過機器學習中的增強學習技術讓計算機自己合成最合適的動畫和過渡。機器學習是人工智能的主要實現技術之一,深度學習/神經網絡就屬於機器學習的分支。Lucas Kovar的思路就是先給人工智能一些動作的半成品,讓人工智能學會自己“合成”動畫。
十年前Lucas Kovar認爲這項技術暫時沒法實現,因爲這意味着要實時處理海量的數據,無論是當時的增強學習算法還是主機內存都沒法滿足要求。換句話說,那個時候人工智能的智商還不夠,就算有夠先進的人工智能遊戲主機也跑不起來,所以革命目標只能指望下一代主機實現了。
十年前,就AI能算得動主機也帶不起來
不過十年後,育碧把Lucas Kovar的想法揀了起來,重新試了一下,結果驚喜地發現……還是不行。數據量還是太驚人了AI處理不過來。但如果不是讓AI合成動畫,而是讓AI負責生成狀態樹,讓AI去挑選合適的過渡動畫和動作呢?Lucas Kovar的想法是給AI半成品讓AI自己組成動畫,既然這個任務目前對AI太難,那就簡化任務,讓AI不必負責生成動畫,只要負責“剪輯”就可以了。
這,就是動作匹配技術的精髓,在人工智能的輔助下,讓人物動畫隨時可以從一幀跳到另一幀。動作匹配的流程是這樣的:不再記錄動作捕捉演員單個動作片段,而是記錄一整段動作。比如走這個動作,會讓動作捕捉演員繞場走數圈,爭取將各種形態的“走”在一整段“3D錄像”中記錄下來。
動作匹配記錄的便是這樣整段的數據
而在遊戲中,如果玩家下指令讓角色從“走”切換成“跑”,AI會根據當前人物的姿勢和運動參數在“跑”的錄像中一幀一幀地挑選,直到找出一個最合適最能無縫銜接的一幀“跑”圖像,再從該幀開始播放跑的動畫。這項技術被Simon Clavet戲稱是“大力出奇跡”(驚人的愚蠢和野蠻的解決方法)。
雖然我的描述比較簡單粗暴,但“大力出奇跡”只是最基礎的思路——實際上育碧在此基礎上又付出了很多很多的汗水,比如尋找動作匹配時人物姿態和速度、加速度等參數的最佳權重比、如何平衡真實感和舒適感、不斷優化算法以節約內存、通過預測玩家下一步動作以提高響應速度、微調部分動畫已獲得更流暢的效果。而且由於AI(準確說是算法)具有學習能力,它吃的數據越多,響應速度就會越快,動作就會越流暢。
本質上來說仍不算AI生成動畫,但相比舊技術已經是飛躍般的進步
這項技術有一個小缺點,因爲所有的動作都是AI“剪輯”而成,有無數種可能的複雜動作組合,這導致測出所有BUG是不可能的(土豆廠:我們BUG多,真不是沒有原因的)。所以某些沒有測試到的地方就會有不自然的動作出現,實際開發中育碧也要不斷地填坑(加入新的動作捕捉數據)。但相對於這項技術的優點而言,缺點簡直不值一提。
這項技術最大的優點就是成本低,不必再靠人工一點點製作狀態樹,也不必再錄入單獨的動畫。所以育碧奢侈地爲《榮耀戰魂》中的每一個角色都製作了一套獨一無二的動作,這在以前簡直不可想象。其次,真實感。攻擊、格擋、閃避等動作之間銜接的異常流暢,人物動作如絲般順滑。(再次重申,真實感和打擊感是兩碼事)
第三,響應速度快,流暢度超高的前提下響應速度只有0.3秒,真正達到了育碧想要的“精準控制”的目標,還有其他細微的優點不再一一列舉。這些優點就是爲什麼育碧敢說動作匹配是“下一代人物動畫技術的原因。”
動作匹配技術的另一段演示
動作匹配技術PLUS——神經網絡動畫技術
雖然用上了育碧的黑科技,《榮耀戰魂》最後還是鬼服了。但這項技術卻沒有被埋沒,目前育碧有數個正在進行的項目正在使用這項次時代技術。動作匹配技術不僅震撼了遊戲界,其影響力甚至倒灌回了學術界。要知道動作匹配的理論依據都是現成的,學術界已經完成了大量的前置工作,但育碧首次證明了這項技術的實用性。
於是在2016年5月,愛丁堡大學的研究者Daniel Holden、Taku Komura以及來自企業的Jun Saito搞出了動作匹配技術PLUS版——神經網絡角色動畫生成技術。這個技術是真·AI生成動畫,比育碧的黑科技還要黑。
這項技術的黑科技在於,它是真正在實時生成動畫
研究者先通過動作捕捉數據製作一個大型數據庫,不需要預先儲存所有數據,設定播放哪一個動畫片段。只要玩家輸入指令,AI就會直接實時生成動畫。他們用了兩個小時記錄了1.5G的動作捕捉數據,然後讓AI自己學習了30個小時,然後製作了一段演示錄像。
通過30個小時的學習,AI學會了如何將動作捕捉動畫重新組合,並在遊戲環境中生成動畫。演示角色展示出了驚人的真實感,演示角色的小腿會適應凹凸不平的地表改變發力方向,演示角色會根據自身重心的不同活動胳膊平衡身體,爬斜坡時演示角色會彎腰採取爬的姿勢。AI甚至突破了原有動作捕捉數據的限制,自發生成了新的動作。
請注意看他的腿部動作
應用這項技術,遊戲角色的每一刻的每一個動作都是獨一無二的。AI會根據環境調整每一個身體部位的姿勢。1.5G的訓練數據學習成果僅需要幾十兆的儲存空間,神經網絡的決策速度大概在0.01秒左右。但神經網絡暫時也有侷限,比如在某些沒有學習過的地形下,動畫就會崩潰。動畫師無法對輸出動畫進行二次修正,而且目前來看角色動作仍然有些粗糙。
但這並不妨礙遊戲廠商們對開發出這一技術的研究者拋出橄欖枝,論文的第一作者Daniel Holden已經被遊戲廠商高薪聘走。猜猜是那一家廠商?當然還是育碧。看來育碧是下定決心要保持自家在人物動畫領域的技術領先地位了。
我大育碧人物動畫技術世界第一一一一!!
其實將遊戲與人工智能結合的努力從未停止過,比如在2000年E3上斬獲數項大獎的《黑與白》的核心就是增強學習。玩家作爲反饋者存在,讓AI適應玩家從而培養出複雜生物表現能力的智能“神獸”,但實際效果不甚理想,因爲一名玩家能給的樣本太小了。DeepMind的SC2bot經過數百萬次練習才學會忍辱偷生升基地逃跑,一個玩家能給出多少數據呢?
相比於讓AI直接和人類產生交互,不如通過人工智能技術改善遊戲的其他體驗。畢竟這纔是人類開發人工智能的目的——幫助人類,而不是和人類對打。至於下一款用到育碧黑科技的遊戲,也許就正是《刺客信條:起源》?
如果AI真的都是愛醬這樣的智障我想人類也不會有戒心了
招募野生寫手!尋找遊戲達人!快來參加愛玩百萬稿費活動吧
遊戲專欄投稿信箱:otaku@vip.163.com
歡迎關注愛玩APP【精選】板塊,更多精彩等着你!