Home Tags 用變分自動編碼器來實現可控的游戲關卡混合(Controllable Level Blending between Games using Variational Autoencoder)

Tag: 用變分自動編碼器來實現可控的游戲關卡混合(Controllable Level Blending between Games using Variational Autoencoder)

談談人工智慧、計算創意學和混搭式自動遊戲生成

作為一個玩家,相信你一定曾很多次腦補過: 「如果一個遊戲A跟另一個遊戲B組合在一起會變成什麼樣的遊戲」這樣的問題。比如,如果《超級馬力》是個像《火焰之紋章》那樣的策略戰棋遊戲會怎麼樣;如果《最終幻想》能像《文明》系列那樣有資源調配和調兵遣將會怎麼樣;如果《寶可夢》是個Galgame會怎麼樣…… 專業的遊戲設計師們也一定常常進行這樣的思考,因此才會出現像CAPCOM/任天堂角色大亂鬥、《寶可夢》X《信長之野望》、《火紋無雙》、《勇者鬥惡龍 創世小玩家》這些夢幻聯動。 這些專業遊戲設計師擁有專業的遊戲設計技能、專業的遊戲開發團隊和資金,所以一旦有了這些想法,是真的可能去實現的。而普通玩家的我們,通常就只能在腦補中過過癮了。 關注AI的大家們可能知道,最近OpenAI推出了基於神經網絡語義模型GPT-3的Codex,能夠瞬間將用戶輸入的文字描述轉換成遊戲。 這項技術讓沒有專業遊戲開發技術的普通玩家也看到了將腦補變成現實的希望。如果連將文字描述變成遊戲程序這麼魔幻的事情都能辦到了,那麼是不是也有可能開發一種AI,只要給它兩個現成的遊戲,它就能馬上生成一個真正的遊戲來告訴我將這兩個遊戲組合在一起會變成什麼樣的遊戲呢? 雖然還遠遠沒有成熟到能夠實用的地步,但是確實有不少人在研究開發這樣的AI。今天就想來給大家分享這方面的一些進展。 首先需要說明,遊戲混搭這個研究方向,跟叫做計算創意學(Computational Creativity)的研究領域有相當緊密的關系,尤其是其中的組合性創造力(Combinatorial Creativity)這個分支領域。接下來要分享的自動遊戲混搭的方法,都可以看做是組合性創造力的算法實現。 這里請允許我安利一波自己的另一個系列文章 計算創意學。這個系列的文章對計算創意學這個領域作了一個系統性的、通俗易懂(?)的介紹,非常歡迎感興趣的大家們閱讀和討論。在接下去關於遊戲混搭的介紹中,如果大家看到有意思的概念想要深入了解的話,我也會附上相關章節的連結作為擴展閱讀。 概念整合理論和遊戲混搭 學者瑪格麗特·博登(Margaret Ann Boden)在她的著作《創造力心智(The Creative Mind: Myths and mechanisms)》中將創造力(Creativity)分為了多種類別,其中一種叫做組合性創造力(Combinatorial Creativity),其中創作者通過在多個看起來無關的知識領域之間建立聯系,發現了融合這些知識領域的新概念,繼而得到有價值的新點子。 比如,由自然界的鳥類得到啟發而發明了飛機、從生物學意義上的「病毒」概念得到啟發而發明了計算機「病毒」,將傳統棋類遊戲和角色扮演電子遊戲結合而發明出策略戰棋類電子遊戲,都是組合性創造力的例子。 關於組合性創造力,近幾十年在認知科學和語言學的領域,有一種非常流行的理論叫作概念整合(Conceptual Blending)理論(擴展閱讀)。它以嚴謹的科學語言形式化(Formalize)了組合性創造力,將新點子的產生描述為思考主體將多個原本無關的概念網絡中的概念映射到整合概念網絡中的新概念的過程。 概念整合理論將來自兩個領域的可類比的概念(比如「程序」和「病毒」)表示成兩個輸入概念網絡(「輸入空間」)。這些可類比的概念分別處於各自的概念網絡,聯結著各自領域的其他相關的概念。組合性創造力主體會創建一個新的整合概念網絡,其中混合了來自兩個輸入概念網絡的概念(「輸出空間」)。 由於這套理論提出了關於組合性創造力的一個實實在在的過程模型,它推動了大量用電腦程式來實現自動組合性創造力的嘗試(擴展閱讀)。 因此一個自然的想法就是,如果我們將一個遊戲也表示成這樣的概念網絡,是不是就能通過概念整合理論來實現遊戲的混搭?這個概念網絡應該涵蓋關於這個遊戲機制的一切,從而通過混合兩個遊戲概念網絡,我們就能得到一個全新的遊戲機制。 由喬治亞理工大學的學者Guzdiel和Riedl在2016年發表的論文《機器學習混合遊戲關卡(Learning to Blend Computer Game Levels)》,就實現並探索了這個點子。 在這篇論文中,作者們針對2D平台跳躍遊戲(比如《超級馬力歐》和《星之卡比》)設計了一種表示遊戲關卡結構的層次化的概念網絡。這個概念網絡中的概念(節點)包括: 每一個有獨立行為邏輯的基本遊戲對象(比如馬力歐、栗寶寶、庫巴、一根水管),每一個基本遊戲對象的所有可能的形態(不同尺寸、不同樣式、不同形狀的版本),每一個基本遊戲對象可能出現在一個關卡中的數量,在一個關卡中重復出現的關卡片段。 通過在上述這些概念之間建立聯接,我們能夠用這個概念網絡來表達關卡結構的一些內在規律。比如, 庫巴有三種形態,可以表示為庫巴概念和分別表示庫巴的三種形態的概念之間的聯結;水管有高的水管和矮的水管,可以表示為「水管」概念分別與「高的水管」概念和「矮的水管」概念之間的聯結;栗寶寶只會出現在普通的地面上(而不會出現在水管上面或者懸空),可以表示為栗寶寶節點和普通地面節點之間的聯結;火山關卡中有很多熔岩地形,可以表示為火山關卡片段和熔岩地形板塊概念之間的連結。 這些聯結表示遊戲元素之間的關系,一方面有具體關系類型的標注,同時還可以有量化的標注。在這篇論文中,作者們就為每個聯結引入了一個機率量值。從而,我們不僅可以表達「火山關卡中有很多熔岩地形」, 還可以具體到「火山關卡中出現熔岩地形的機率是多少」。 有了這樣的機率標注之後,這樣構建起的概念網絡同時也是一種機率圖形模型(Probabilistic Grapical Model)。通過根據這個機率圖形模型進行采樣,我們能夠生成符合某個遊戲內在邏輯的全新的關卡。 對於一個有著大量的關卡、成百上千的遊戲對象、復雜的遊戲機制的遊戲來說,可以想像這個概念網絡會是非常非常龐大的,以至於手工去構造這樣的概念網絡成為幾乎不可能的事情。 為了解決這個問題,作者們在這篇論文中提出了用統計機器學習的方法自動構建這個概念網絡。用戶只需要提供一個關卡遊玩過程的視頻,機器學習算法就能夠通過聚類分析(Clustering)的方法將視覺相似度達到一定程度的像素圖單元(Sprite)自動識別為一個遊戲對象,從而建立其對應的概念網絡節點。 類似的聚類分析方法也能用於構建那些在關卡中被重復使用的關卡片段所對應的概念網絡節點。有了這個節點之後,就能進一步通過統計節點兩兩之間共同出現的頻次來得到它們之間聯結的機率標注。 需要注意的是,這里的這種建立概念網絡的統計機器學習方法並不是深度學習(Deep Learning),並不需要使用參數數量龐大的深度神經網絡,因此也不需要非常龐大的訓練數據集。 有了這樣的方法之後,我們就能讓算法讀取一個遊戲關卡1的遊玩視頻,自動構建概念網絡1,再讓讓算法讀取另一個遊戲關卡2的遊玩視頻,自動構建概念網絡2,最後使用概念整合的方法來整合兩個概念網絡得到整合概念網絡。 如前所述,整合概念網絡同時也是一個機率圖形模型,按照它來進行采樣,就生成了一個混合了關卡1和關卡2的整合關卡。 我們注意到這種方法的一個局限:它所提出的概念網絡只能描述一個靜態的遊戲關卡結構,還沒有真正觸及到遊戲機制——也就是玩家遊戲世界的交互規則。 在Guzdial和Riedl在2018年所發表的另一篇論文《Automated...