【PC遊戲】NLG自然語言生成技術:讓遊戲給自己做設計


3樓貓 發佈時間:2022-06-04 12:49:35 作者:NAGO萬能事務所 Language

無論是大型3A作品還是小型獨立作品,開發遊戲從來不是簡單的事,故事、影像、音效甚至遊玩內容,工作量之大不容小覷。然而如果將遊戲一部分交由電腦AI隨機制作自動生成,開發組既不需要多花工夫逐個細節制作,也能保持遊戲的多變,這似乎是個不錯的點子。


一些打著隨機生成劇情噱頭的遊戲,比如《漫野奇譚》,會根據角色演出參數來從庫裡選取出相應的演員替換,《80天》超高自由度的背後是擁有75萬字的海量文本量支持,甚至我們喜聞樂見的“魔怔歷史”的P社遊戲也繞不開國策樹的束縛和國家設定。這些隨機生成劇情遊戲只是採用了程序化生成敘事,遊戲本質上仍然是在程序設定好的框架下運行,並沒有實現真正的自我設計,也沒有實現初衷,即增大遊戲自由度,減小工作量。

【PC遊戲】NLG自然語言生成技術:讓遊戲給自己做設計-第0張

《漫野奇譚》根據參數從預置文本中選出角色對話

【PC遊戲】NLG自然語言生成技術:讓遊戲給自己做設計-第1張

《80天》文本量極大,有75萬之多

AI創作的出現則很有可能打破遊戲開發過程中的“困境”。AI創作是指通過一定的計算機程序,對輸入的信息進行自動化的分析、處理和加工,從而生成一篇較為完整的文章。其背後的原理非常複雜,核心是自然語言處理技術,同時涉及到數據挖掘、機器學習、知識圖譜等多項人工智能技術。

 

目前的AI寫作分為三種模式——模板式,抽取式,生成式NLG(自然語言生成技術)。前兩者一個只是簡單地套用模板,概括新聞摘要生成,對於遊戲隨機生成劇情並無過多參考意義,而新興的NLG技術才可能是破局的要素。

 

而本文所探討的,就是如何利用NLG技術來進行遊戲自動化


NLG(自然語言生成)

【PC遊戲】NLG自然語言生成技術:讓遊戲給自己做設計-第2張

自然語言生成可以分為三類:文本到文本生成、數據到文本生成和圖像到文本生成。



  • 文本到文本生成

文本到文本生成技術主要是指以文本作為輸入,進行變換處理後,生成新的文本作為輸出。此技術包括機器翻譯、文本摘要、文本更正和文本複述等。這對於遊戲自動化並沒有過多幫助,筆者就不加以贅述了。


  • 數據到文本生成

數據到文本生成技術分為基於規則和模板方法基於神經網絡序列生成方法


前者本質只是系統事先設計並構造相應的規則或模板,其中都包括一些不變的常量和可變的變量,用戶輸入信息之後,文本生成器將輸入的信息作為字符串嵌入到模板中替代變量。


後者,即基於神經語言模型的方法不需要太多人工干預,易產生豐富流暢的文字描述,不過受限於語料和模型,使用者無法直接控制內容生成,難以確保所輸出的文本內容同輸入數據中的信息吻合,需要優化來提高實用性。可通過知識圖譜嵌入來輔助自然語言生成,使得生成的文章新穎多樣且主題一致。



  • 圖像到文本生成

圖像到文本生成是指根據輸入的圖像信息生成描述圖像的自然語言文本主要可分為三類:基於模板的圖像描述檢索式圖像描述以及生成式圖像描述


前兩者雖然能保證文本的正確性與流暢性,但生成效果欠缺新穎性且在描述複雜場景或包含新穎事物的圖片中存在侷限性。


從視覺空間或多模態空間中生成圖像描述的做法是,在分析圖像內容的基礎上,使用語言模型來生成圖像的描述。因為此方法利用了深度學習技術,所以可以適應為多種的圖像生成新的描述的任務需求,生成文本的相關性和準確性較之前方法有所提升。因此,基於深度學習的生成式圖像描述是目前研究的熱點。


接下來來淺談下以上這些技術在遊戲自動化方面的可能應用。


  • NLG模型的對比

【PC遊戲】NLG自然語言生成技術:讓遊戲給自己做設計-第3張

NLG在遊戲自動化的可能應用


NLG在遊戲自動化的可能應用

  • 根據UI圖片來生成描述文本

【PC遊戲】NLG自然語言生成技術:讓遊戲給自己做設計-第4張

描述文本看似不起眼,其實也有大量玩家閱讀

【PC遊戲】NLG自然語言生成技術:讓遊戲給自己做設計-第5張

《奧日》極具獨特風格的旁白介紹

筆者短暫的遊戲開發經歷期間,UI的設計以及生成可謂是繁瑣枯燥的,如果我們利用NLG的圖像到文本生成技術來生成UI對應描述文本,這也許會減少大量的工作。


比如說對各種經典常見的物品進行文本描述。對於一些簡單的物品比如蘋果雨傘皮革等等,這些AI 的表現穩定且優秀。


不過即使在生成了對應的描述文本後也需要遊戲策劃加以改進,畢竟絕大多數遊戲在描述物品時都會帶上游戲本身的或詼諧或黑色幽默或冷漠的風格。


  • 根據背景或開頭來生成劇情

這裡筆者舉個例子,即時下熱火的AI續寫軟件——彩雲小夢。


它僅僅需要一段故事的開頭輔以故事背景,禁止輸出的詞語等來續寫故事,經過筆者測試,隨著它的篇幅不斷變長,它的續寫會糅雜各種無厘頭的風格,雖然軟件提供了風格定製以及可供篩選的其他續寫,但是不如人意翻車走偏的概率依舊大。而且即使利用此軟件編寫適宜的劇情,遊戲策劃根據此文本來改編為劇情的難度也高。

【PC遊戲】NLG自然語言生成技術:讓遊戲給自己做設計-第6張

讓彩雲小夢試寫本文,很明顯行不通

因為彩雲小夢並不是開源的,筆者也不清楚其原理是什麼,只能揣測其核心可能是基於循環神經網絡的模型。


那這就能證明根據背景或者開頭來生成劇情在遊戲方面的應用走不通了嗎?並不是這樣的,相反,筆者根據現在AI續寫在模擬唐詩宋詞乃至續寫某些奇幻小說的優秀表現反而信心十足。


首先彩雲小夢的訓練數據集來源於用爬蟲爬取的各式文學作品,誠然這樣的它海納百川,對各類作品都能加以續寫,但是質量上卻不過硬。因此我們可以將目標縮小至某一固定題材,在確定好所要開發的遊戲的題材風格後,自行收集與此遊戲相關風格的文學作品來作為數據集訓練,著重於訓練符合此款遊戲風格的模型。


雖然收集特定風格的作品的難度要高於網絡爬蟲,但是這樣一能確保我們模型的“純潔性”,二來由於目的的明確性,模型訓練難度應該不會太高。


但是這樣仍然不能解決一個基本問題:即使憑此生成了優秀的劇本,也不代表我們的工作量因此少了一個劇本策劃該做的工作,相反,對這些劇本的人工梳理精進,工作量想必也不低吧?


  • 根據背景或開頭來續寫對話

【PC遊戲】NLG自然語言生成技術:讓遊戲給自己做設計-第7張

續寫對話在多個遊戲類型都有作用


上述人工改進AI劇本的問題既然難以解決,那如果我們換一個思路呢?將AI生成劇情改為AI續寫對話,結果如圖所示。

【PC遊戲】NLG自然語言生成技術:讓遊戲給自己做設計-第8張

黑色部分為原文,紅色部分為AI續寫。比如說我們事先設定好兩個性格的npc,通過編寫兩者的少量背景或者劇情開頭,讓AI來替我們生成其餘的日常對話或者以劇情為導向相關的對話呢?


這樣建立一套流水化自動化體系,其目的並不是完全替代遊戲策劃的作用,而是輔助策劃人員乃至開發人員完成一些繁瑣的事務,甚至只用寫個插件按照對話格式和事先設定的程序檢索讀取,就可以直接導入轉化為unity上的演示效果了。


    但是AI並不是萬能的,其背後的邏輯又是什麼呢?同樣的,我們大概率還是得訓練一個日常對話的模型或者一個與遊戲風格相近的模型,輔以開頭和背景,npc的對話才不會談天論地。


  • 未來前景

正如上文所述,只是生成UI描述,特定劇情,特定背景下的人物對話,即使這樣我們仍未達到我們的初衷,即大幅度地增加自由度,減少工作量。


那有沒有一種可能,我們將角色的屬性,背景故事作為輸入,讓某一模型生成我們想要的劇情對話呢?雖然沒有相關研究證明,但筆者預測,時下熱火的GAN生成對抗神經網絡可能具備這樣的潛力與可行性,它由1個生成網絡和1個判別網絡組成,在兩個神經網絡相互博弈中進行學習。輸入隨機噪聲後,生成網絡會模擬真實樣本進行輸出。


除此之外,即使現在AI創作質量不佳,但是技術更新換代非常快,目前傳統的AI創作模型RNN循環神經網絡的缺點比如短期記憶,不能並行計算,這些導致RNN在NLG方面逐漸被Transformer模型所代替,也許在不久的未來我們的AI續寫能更兼顧上下文聯繫,為我們呈現更好的文章。


  • 模擬美術風格

補充一個不隸屬於NLG技術但同樣具有應用前景的技術,即深度學習的風格遷移。

如圖,左邊的大橋被改成中間這張海浪圖片的風格,變成右圖的油畫風格。事實上此類風格遷移的算法模型已經相當豐富,如果美術資源過於貧瘠,或可用此法來生成需求風格。

【PC遊戲】NLG自然語言生成技術:讓遊戲給自己做設計-第9張

  • 參考資料

https://baijiahao.baidu.com/sid=1717313583180028207&wfr=spider&for=pc

https://www.zhihu.com/question/31689004

https://baijiahao.baidu.com/sid=1701052922475966495wfr=spider&for=pc

http://www.360doc.com/content/15/1226/11/19203469_523197909.shtml

https://www.qlwb.com.cn/detail/16333500.html

https://blog.csdn.net/weixin_38858749/article/details/111870498


[1]李雪晴, 王石, 王朱君,等. 自然語言生成綜述[J]. 計算機應用, 2021, 41(5):9.


#曬出宅基地


© 2022 3樓貓 下載APP 站點地圖 廣告合作:asmrly666@gmail.com