藉助人工智慧,文字冒險遊戲迎來了新生
你叫小明,是拉里昂的一名貴族領主,手下有一大票忠心耿耿的騎士。一天深夜,城堡中號角突然響起,你警覺地翻起身來,寢房內外早已燈火通明。幾個隨身護衛未經傳喚闖了進來,匆忙向你彙報:大隊獸人來犯,形勢危急萬分!
所有人都在等著你的應敵之策,但你疑惑的是為什麼獸人莫名其妙就打來了。
片刻過後,你決定動用一種神祕而強大的魔法——直接改變世界程式的那種。獸人原地消失了,沒有任何理由。所有人都驚呆了,面面相覷。
你是否好奇接下來劇情該怎麼繼續下去呢?別急,繼續往下看吧。
寫小說的人工智慧
《AI Dungeon》(《AI地下城》)是一個文字冒險遊戲,一個地地道道除了文字就沒有任何畫面、音樂的遊戲。我們輸入一句話(目前僅支援英文),遊戲內的人工智慧(AI)予以回應,這就是《AI Dungeon》的全部。
真正的文字遊戲
別誤會,《AI Dungeon》並不像微軟小冰那樣主攻聊天問答,它的專長是寫小說。
開始遊戲之前,我們可以選擇探索特定世界觀,或泛泛地選擇一個基本題材,包括奇幻、神話、喪屍、後啟示錄、賽博朋克等等,然後簡單設定自己的身份和名字,作為主角進入遊戲。文章開頭小明的故事,就是奇幻型別、貴族出身。
設定好之後就是自由發揮的時間了,我們寫一小段,AI再續寫一小段。《AI Dungeon》對玩家輸入內容基本沒有限制,但還是要遵循一定的規則。遊戲提供三種輸入模式編(Story)、說(Say)以及做(Do),彼此稍有不同。
點選“Say”可切換至其它輸入模式
Story模式就是直接把我們輸入的內容認定為故事情節。在面對獸人進攻時,我打出“獸人侵略者突然原地消失”這幾個字,AI就接著這句話編下去。雖然這個情節毫無邏輯,但AI似乎還是在努力把故事圓回來,它會補充說“你很疑惑,呆在原地”。
在Say模式下,我們輸入什麼,AI就以“你說:‘……’”的句式起頭寫下去。小明在大戰稀裡糊塗取得勝利後,我讓士兵們喝酒吃肉慶祝,然後抱著玩笑態度在Say模式下輸入“我的寶貝兒子呢?他怎麼不在這裡?”
AI的續寫完全出乎我的意料:“你突然扭頭看見手下中有一個人,什麼美食也顧不上了。那正是阿蒂默斯,你的兒子,他本已失蹤多年。”倒不是因為父子名字差這麼遠,而是我沒想到AI還能安排失蹤多年這種挖坑情節。
我配合著問,“這些年你到底去哪了?”AI緊跟道:“他那雙綠色的眼睛緊盯著你。他似乎不像你兒子了,儘管他看上去一點沒變。”
我“警惕起他來,在想他是不是可能被消失的敵人控制了。”這裡我用的是Do模式,按照要求必須輸入以動詞開頭的句子。
而通過“消失的敵人”這一關鍵詞的引導,AI居然分析出他是被此前原地消失的獸人給附身了……故事越來越複雜,這裡還是就此打住,我們已經介紹完了這三種模式。
只要玩家自己輸入的內容有一定連續性,AI續寫的情節一般不會過於跳躍。更重要的是,它大體能夠保持世界觀的前後一致;適當控制故事長度的話,它基本能分清各個角色誰是誰。此外,初始狀態下AI一般都會設定一個目標,不管是貴族要抵禦獸人入侵,還是勇士要實現屠龍大業。
穩定的世界觀、相互區別的NPC,明確的目標和任務,一般遊戲所具有的這些特徵,在《AI Dungeon》中同樣有所體現。而且,《AI Dungeon》通常都是以“你怎樣怎樣”的句式行文,一定程度上增強了代入感。
雖然它的遊戲內容全部以文字呈現,但比起那些只能做有限選擇的RPG,《AI Dungeon》允許一切可能。如果實在對AI給出的某一段劇情不夠滿意,我們也可以撤回讓它重寫。
除了簡易開局中的幾個固定題材型別,《AI Dungeon》還提供了其它更復雜、更具體的世界觀。比如主打“暗黑”、“奇幻”的Kedar大陸,你進入以後需要詳盡地選擇自己的出身、種族、性別、職業等等。這個大陸也有自己的行政區劃和歷史沿革,遊戲中你隨時會受到“世界事件”的影響,和形形色色的預設人物發生關係。
多個可供選擇的具體世界觀
可以說,《AI Dungeon》通過現代自然語言模型,僅用文字就搭建起了一個個生動的遊戲世界。
技術帶來的自由
2019年2月,矽谷OpenAI實驗室釋出了震動業界的GPT-2(Generative Pre-Training Transformer)模型,意味著人工智慧在自然語言識別領域上了一個新的臺階。
那時,就讀於計算機相關專業的尼克··沃爾頓(Nick Walton)正處於大學最後一學年,一次校園程式設計競賽,讓他想到藉助GPT-2做一個文字冒險遊戲。
Nick Walton
3月份,沃爾頓完成了《AI Dungeon》的初版。之所以取這個名字,以及遊戲中的通用貨幣被命名為“龍鱗”(Scales),都是因為受到他酷愛的經典桌面遊戲《龍與地下城》(Dragons and Dungeons)的啟發。
桌面遊戲《龍與地下城》
起源於上世紀70年代的《龍與地下城》擁有一套豐富、成熟的規則體系,各種遊戲行為都可以被規則化約、計算,產生相應後果,因此玩家享有極高程度的行動自由。但是,後來的電子遊戲受限於技術和成本等問題,能夠提供的選擇反而非常有限。
《AI Dungeon》就試圖在電子遊戲中賦予玩家更多的自由。只不過,遊戲的初版很多地方並不完善,玩家還是隻能從一長串選項中逐步選擇行動方式。另外初版必須在Colab(谷歌的一項雲電腦服務)框架內執行,對沒有相關知識背景的人來說也不便獲取。
沃爾頓後來自己評價這個初版“很有娛樂性,風格也很獨特”,“但幾乎無法構建一個完整的故事”。
初版《AI Dungeon》
2019年5月,沃爾頓創立了Latitude公司,專注於人工智慧研究和《AI Dungeon》的改進。年底,OpenAI終於放出完全版的GPT-2模型,《AI Dungeon 2》隨之推出(之後仍稱《AI Dungeon》),並且可以直接在官方網站遊玩。
待到2020年5月GPT-3釋出,事情又要另當別論了。完全版的GPT-2使用15億個預訓練引數,需要6GB儲存空間;而GPT-3使用的引數是1750億個(超過人類大腦神經元數量),儲存空間佔用達到700G。
GPT-3的自然語言識別能力更進一步,不僅能夠寫文,還可以答題、翻譯,甚至生成程式碼、做數學推理。當然,GPT-3對語義和邏輯的“理解”也更加深入。
簡單來說,GPT-3寫出來的東西更像人寫的了。尼克·沃爾頓這樣評價前後兩個模型的區別:
“GPT-3是目前世界上最強大的AI了……它的邏輯一致性明顯比2代更強,能更好地理解誰是誰,誰在說什麼,到底有什麼事情正在發生,它能夠寫出有趣而可信的故事。”
在有了GPT-3的支援後,《AI Dungeon》才真正成了一個合格的寫手。
不過,GPT-3雖然強大,但還是存在一些固有問題,這是由它所使用的的深度學習(deep learning)方法決定的。反映在《AI Dungeon》遊戲中,就是故事越長邏輯性越差,AI雖然文思泉湧但連陰天和晴天哪種天氣更涼快這種常識都分不清(事實上還是語義理解問題)。
你說“陰天比晴天更涼快嗎?” 你看著陰雲密佈的天空,感覺到有幾滴雨拍打在你的頭上
此外,似乎是為了故事的連續性,對於極端偏離故事邏輯的輸入,AI會拒絕續寫。比如我在遊戲進行時直接來了一句“Game Over”(遊戲結束),AI很實誠地表示自己無能為力……
小明的故事中,在Story模式下輸入“Game over”,AI給出黃字表示不知道該說啥
但更大的問題是,連研究人員自己也無法解釋為什麼AI寫出了那些東西,這是如今基於深度學習的人工智慧無法避免的弊端——模型本身不可解釋。他們可以“燒光”頂級效能的CPU和顯示卡,把訓練引數堆到誇張的千億級別,投入千百萬美元的訓練成本,為的只是讓AI寫出人話,就算其中的原理是不可解釋的。
這多少還是暴力了些。
文字冒險的進化
回看由來已久的文字冒險類遊戲,它們從來就沒有過《AI Dungeon》這樣的技術和自由度,但仍然誕生了遊戲史上的諸多經典。
1977年,在那個電子遊戲的蠻荒時期,雅達利2600剛剛問世,所有玩家都在為簡單的畫素畫面興奮不已,而同時期的電腦上卻出現了一款僅有文字的的遊戲:《Adventure》(《冒險》)。
和名字一樣直白的是遊戲的劇情,如果把《Adventure》的內容直接寫成一本小說,並不具備多大文學價值。但它的特色在於,玩家可以輸入關鍵詞和機器互動,主動地、參與式地推進故事情節。
《Adeventure》開始介面
到了一個岔路口是向東還是向西?看到一扇門是開還是不開?雖然接下來的情節不一定有多麼巧妙,但不同的決定能夠產生不同的結果,整個故事都好像是玩家自己創造的。
當年的許多玩家,因為《Adventure》而第一次在遊戲的敘事環節感受到了人機互動的魅力。於是,越來越多類似的遊戲相繼出現,如《Adventure International》(《世界冒險》)和《Zork》(《魔域》),它們都被歸為文字冒險遊戲。
隨著圖形技術和硬體效能的進步,文字冒險遊戲在加入畫面、配樂後又獨立出一個型別,成為日後的冒險遊戲(AVG)。與此同時,遊玩方式則從輸入關鍵詞和語句變成了做選擇題,儘管後來的日式Galgame和RPG與早期的文字冒險遊戲已經相去甚遠,但還是繼承了其基本核心:選擇影響結果。
互動電影遊戲如《底特律:變人》始終關乎“做選擇”
不過,那種“玩家輸入,機器輸出”的純粹文字冒險遊戲反而逐漸沒落了。畢竟,早期的文字冒險遊戲既不具備其它遊戲的視覺衝擊力,又只允許玩家按照預設程式輸入特定資訊,很難吸引到更多的人。
這一狀況直到新世紀人工智慧的發展才稍有改觀。2005年,一款基於AI互動的遊戲《Façade》(《假象》)出場了,它採用了當時最前沿的自然語言識別AI,也獲得過諸多大獎和媒體關注。但是,由於沒有太多宣傳,當時獨立遊戲也不如今天受眾廣泛,沒有多少玩家注意到《Façade》。
這個看上去畫風幼稚搞怪的遊戲,將場景設定在“你”的一個朋友家中,他和他的妻子正在經歷一場感情衝突,隨時可能離婚。你要做的,就是和他們說話(手動輸入語句),看看能導向什麼結果。
不得不說,《Façade》中的AI已經有一點像真人了,比如如果你一開始就說粗話,可能連房門都進不去。又或者如果你評價房間中某件物品,那對夫婦也會和你聊起相關的故事。
不過在那個年代,畢竟連深度學習、強化學習等今日人工智慧常用的訓練方法都還處在探索階段,這個遊戲也就只能做到“有一點像”的地步,它的AI識別自然語言很大程度上還是依賴預設規則,多數時候的表現仍然是“滑稽”和“笨拙”的。
直到十多年後,《Façade》才被油管的大主播Pewdiedie等人重新發現,紅了一段時間,但他們圍繞遊戲製作的內容完全是娛樂向的,都在以調戲人工智慧為樂。
B站Up主@逆風笑也做過一期節目,頗有喜劇效果
這裡就需要提到我們常說的遊戲AI和科技領域的AI之間的區分。以往遊戲中的所謂AI,不管看上去有多麼智慧和自然,其實都是按照預設的程式指令碼行動,因而有很強的可預測性。而現實中,如今的AI做什麼都存在一個“訓練”、“學習”的過程,結果往往不可預測。
真正應用瞭如今這種AI,或者說應用了現代自然語言模型的,還是要以《AI Dungeon》為起點。它不僅復活了早期文字冒險遊戲,而且很可能為今後遊戲AI的升級提供啟發。
當然,尼克·沃爾頓也承認,要真正把適用於文字冒險遊戲的AI應用到具體可視的NPC身上,還需要做大量探索工作。
從自然語言識別到AI生成虛擬世界的距離到底有多遠?
不過有些矛盾的是,玩家們固然希望遊戲中的人物和情節能夠有更多的可能性,但未經設計、雜亂無章的故事又未必是好故事。
這一點在《AI Dungeon》已經有所體現。它無疑是一個有趣的遊戲,我會在自己敲下一句話後對AI接下來的表現充滿好奇,但在經過一些隨意而荒誕的嘗試後,又很快失去了熱情。原因恰恰在於,它給我的自由太滿當了,我反而體驗不了一個完整、自洽的故事。
可能除了自由,遊戲終究還是需要一部分設計的。
來源:遊戲動力
原文:https://mp.weixin.qq.com/s/LWdewN_HE4biED1D6JqO0Q
相關文章
- RTS能否藉助移動電競迎來新生?這款遊戲指出了方向遊戲
- 冒險遊戲已逝?冒險遊戲萬歲!遊戲
- 2018年, Steam上新了哪些國產文字冒險遊戲?遊戲
- 文字冒險遊戲AI Dungeon 故事由AI寫就遊戲AI
- 國產文字冒險遊戲《葬花》立項、製作全流程分享遊戲
- 歡迎來到瑞吉斯3號!科幻冒險敘事遊戲《無敵者》現已上線!遊戲
- 遊戲史記(四):文字裡的冒險世界,早期網路遊戲的起源遊戲
- 2020國產文字冒險遊戲觀察:Steam首發篇遊戲
- 紙藝歷險Papetura Mac - 點選冒險遊戲Mac遊戲
- 深度解析冒險遊戲必不可少的幾大元素,它們讓“冒險”更有遊戲性遊戲
- 7年做一款文字冒險遊戲,開發團隊經歷了這三大“天坑”!遊戲
- 在《JOJO的奇妙冒險》裡,我們能看到哪些冒險遊戲的設計要素?遊戲
- 位元組跳動的遊戲大冒險遊戲
- 動作冒險遊戲俠盜獵車手遊戲
- 大咖來了:共話人工智慧技術新生態人工智慧
- 三位知名開發者座談:冒險遊戲(AVG)已經走向末路了嗎?遊戲
- 冒險島IP正版新作《冒險島:聯盟的意志》來襲,預約就送扎昆套!
- 肝了兩年半,這對情侶開發了一款“Rogulike+策略冒險”遊戲遊戲
- 遇見最初的冒險! 《冒險島:楓之傳說》騰訊遊戲釋出會宣佈定檔遊戲
- Mac海洋冒險遊戲:潛水員戴夫Dave The Diver 遊戲下載Mac遊戲
- 《雨中冒險》: 教科書式好玩的Roguelike遊戲遊戲
- H5 遊戲開發:指尖大冒險H5遊戲開發
- 藉助物聯網和人工智慧治療上癮人工智慧
- 為冒險解密遊戲設計一個好謎題解密遊戲設計
- 大航海時代4威力加強版 for Mac(冒險遊戲)Mac遊戲
- 沙盒冒險遊戲:泰拉科技TerraTech Mac中文版遊戲Mac
- Sneaky Sasquatch Mac(搗蛋大腳怪搞怪冒險遊戲)Mac遊戲
- 【Python】 Python小遊戲-貪吃蛇大冒險Python遊戲
- 通過 ncurses 在終端建立一個冒險遊戲遊戲
- 兀十三的星露谷冒險
- 藉助ai來分析程式碼,理解程式碼AI
- 阿里人工智慧這五年:天才的冒險與自證阿里人工智慧
- 突發奇想!藉助CSS自定義彩色字型來實現多行文字展開收起CSS
- 人氣聯機遊戲《只只大冒險》登陸WeGame遊戲GAM
- Sneaky Sasquatch Mac(搗蛋大腳怪生存冒險類遊戲)Mac遊戲
- Jeff Wofford:冒險遊戲如何再次引領主流趨勢?遊戲
- 藉助查詢引數來利用 Laravel 快取Laravel快取
- js之真心話大冒險JS