來源:新智元
導讀
GameGPT出世,多代理多線程完美再現游戲制作流程!
不得了了!GPT技能樹再成長,現在直接連游戲都能做了!?要知道,現在這個時代,已經不是過去那個做個小游戲就可以搶占市場的時代了。如今的游戲開發流程超級復雜。先說人力,每個游戲團隊的人員都是數以幾十甚至上百來記。有人負責編程,有人負責美工,有人負責維護,等等。每個游戲還都有龐大的代碼庫、素材庫。結果就是,開發一款優秀的游戲大作,需要大量人員,投入大量時間才能完成。而這個時間周期,往往要長達數年。
更直觀的,就是錢。游戲團隊開發一款能讓人們記住并且愛玩兒的大作,預算動不動就要超過1億美元。要不然怎么說,游戲制作算是一種用愛發電呢。現在,情況有變!有研究人員開發了一個叫GameGPT的模型,GameGPT可以整合多個AI智能體(agent)來自動完成游戲開發中的部分流程。而不同的智能體各司其職,工作起來井井有條。有智能體負責審查游戲的設計計劃,并進行相應的修改和調整;有的負責將任務轉化為具體的代碼;有的負責對上一步生成的代碼進行檢查,對運行結果進行審核;還有智能體負責驗證全部的工作是否符合初始預期。
如此這般,通過細化分解工作流程,GameGPT就可以簡化AI智能體的工作。這種各司其職會更加有效率,實現起來也比一個全能型的智能體完成一切要簡單得多。研究人員表示,GameGPT可以簡化傳統游戲開發流程中一些重復和死板的內容,比如代碼測試。大量開發人員就可以從繁雜的檢驗工作中解放出來,專注于AI所不能替代的,更有挑戰性的設計環節。當然,這篇論文目前還處于一個比較初步的階段。目前還沒有任何具體的結果或者實驗來證明性能上的提高。換句話說,還沒人用GameGPT真的開發過游戲,這個模型目前還處在概念形成階段,在有具體的應用結果以及可量化的數據之前,咱也不好評估。不過,總歸是個努力的方向。有網友表示,人們對LLM的想法是有一定偏差的。現在,研究人員有了一種能夠100%解決NLP問題的工具,而人們卻只關心如何實現某些工作流程的自動化。舉例來說,想象一下如果游戲世界對你的決定做出的反應,要比你在五分鐘內判斷出基于規則的硬編碼引擎的反應更正常,那將會是怎樣的情景。再想象一下,如果一款游戲能根據你做出的決定(比如在路上隨機屠殺你看到的敵人等),為你臨時安排一些支線任務,那會是什么場景。而開發者在創建這樣一個系統時,會使用提示工程來指導LLM,而不是編碼這些東西。
但是,這樣做的目的不是為了節省成本,而是為了在以前無法制作更多游戲的階段制作游戲(是不是有點拗口)。
GameGPT
首先,讓我們來看看GameGPT模型的大框架——全流程。
作者將每個智能體擬人化,更生動地展示了他們是如何各司其職的。流程最左側是用戶端,向GameGPT輸入prompt,然后開發經理和審核進行初步計劃。接著,再把需求發送給開發工程師,以及游戲引擎工程師,來執行具體的任務,生成代碼。
最后檢查一下有沒有遺漏,有的話發回左側,再跑一遍。沒有就繼續向右,由負責檢查的工程師來進行testing。
AI開發游戲??
實際上,AI開發游戲歷史的雛形也許可以追溯到更早。
AI在游戲開發中的應用可以追溯到「星際爭霸」和「暗黑破壞神」等經典游戲。在當時,開發人員需要用AI系統來制作交互式的虛擬世界和角色。而這些系統已成為此類互動平臺開發的標準配置。早期和游戲開發AI相關的研究強調控制非玩家的角色(NPC),而隨著自然語言處理(NLP)技術的發展,出現了一些利用深度學習技術生成關卡的開創性工作。其中代表作是MarioGPT,它通過微調的GPT-2模型成功生成了「超級馬里奧兄弟」中的部分關卡。而眾所周知,LLM又在今年取得了巨大進步,在NLP和計算機視覺(CV)領域都取得了不錯的成績。我們知道,LLM的訓練是一個多階段的過程。初始階段包括在廣泛的語料庫中訓練這些模型,促進基本語言能力的獲得。隨后就是更重要的階段了,通過指令(instruction)生成各種NLP任務的數據對模型進行微調。這種指令調整,增強了模型在廣泛應用中的泛化能力,從而可以讓LLM能夠在之前訓練中沒有執行過的任務中取得零誤差的性能。最后,人類反饋強化學習(RLHF)階段保證了模型的結構完整性和可靠性。
這里還有一點需要注意——RLHF階段能讓模型生成模仿人類風格的內容,從而增強其作為智能體的多功能性。此外,LLM的進步還促進了智能體在軟件開發過程中的自動化。許多研究都曾經把目光放在過這個問題上——如何開發一個基于LLM的智能體,用來執行不同的任務。比方說AutoGPT就曾經采用LLM智能體來處理現實世界中的某些決策任務,而HuggingGPT則采用的是單個LLM作為一種控制器,來協調完成更加復雜的AI任務。雖說這些方法都依賴于唯一的LLM智能體,但它們都加入了一個審核者(就是上面流程圖里的reviewer)來完善決策。還是拿AutoGPT舉例,模型會從監督學習器中獲取一些輔助性的意見來提高自身性能,HuggingGPT也可以接入GPT-4,弄成一個reviewer,來評估決策的準確性。還有一些別的例子,比方說MetaGPT就引入了一個多智能體框架,可以用于各種軟件的自動化開發。而回到我們今天討論的游戲開發,我們要知道,與一般的軟件開發不同,游戲開發行業的運作需要緊跟潮流,因此整個開發過程必須更加精確和簡潔,以達到最佳效率。此外,在沒有幻覺和高精度的情況下,調整和使用單個LLM來服務于游戲開發的整個開發周期是不切實際的,而且成本高昂。因此,游戲開發AI的框架需要多個reviewer參與,這樣就能有效緩解語言模型所固有的幻覺傾向。研究人員還發現,在游戲開發中,語言模型還有另一個局限性——冗余性。LLM在游戲生成時,可能會生成不必要的、無信息量的任務或代碼片段。為了有效解決幻覺和冗余問題,今天的主角——GameGPT戰略性地采用了多種方法來解決這個問題,包括雙重協作、通過內部詞匯庫進行指令調整以及代碼的解耦。值得我們關注的是,雙重協作涉及到LLM與小型深度學習模型之間的互動,以及負責執行的智能體與reviewer智能體之間的協作參與。
研究人員表示,這些協同作用已被證明,在減輕GameGPT的幻覺和冗余方面是有效的。
方法介紹
接下來,研究人員從全流程剖析一下GameGPT的創新。
首先,在游戲設計階段,在收到用戶請求后,GameGPT的任務包括生成整個游戲的開發計劃。這個計劃階段是關鍵步驟之一,極大地影響了整個開發過程的無縫進展。這個階段由基于LLM的游戲開發經理策劃,先提出一個初始計劃,隨后分解成任務列表。值得注意的是,由于LLM固有的局限性,這個初始計劃經常會出現幻覺,從而產生意想不到的任務,包括沒有信息或不必要的冗余任務。為了應對這些問題,研究人員提出了四項可以減輕這些難題的策略,這四種策略相互正交的,并且可以分層執行以獲得更好的效果。方案一:對傳入請求進行分類,目的是辨別游戲的類型。目前,GameGPT框架支持五種不同游戲類型的開發,即:動作、策略、角色扮演、模擬和冒險。對于每種類型,研究人員都會提供標準化的計劃模板,指導游戲開發經理智能體使用相關信息完成模板。通過采用這種方法,冗余任務的頻率顯著降低,同時減少了幻覺發生的可能性。策略二:涉及計劃審查員智能體的參與,這是另一個基于LLM的代理。這個智能體通過精心設計的prompt進行操作,以此來對任務計劃進行全面的審查。它的主要目標是盡量減少幻覺和冗余的發生。該智能體評估計劃并提供反饋,旨在改進并提高其準確性、效率和簡潔性。同時,這一部分生成的指令可以作為游戲開發經理智能體的新輸入,使任務計劃更加準確和完善。策略三:通過專門的指令來調整游戲開發經理智能體的LLM本身,以便更好的進行游戲開發層面的規劃。這個微調過程的目的就是讓模型能生成一個既準確又簡潔的計劃。為了方便起見,研究團隊收集并整合了一個內部數據集,其中包括許多輸入輸出的搭配。雖然這些組合在長度或結構上不符合標準格式,但它們都圍繞著游戲開發的要求。
這部分固定搭配由業內的開發人員提供。通過采用這種方法,研究人員有效地彌合了LLM的一般語言能力與游戲開發規劃能力之間的差距。策略四:規劃階段的「安全網」。在整個計劃過程中,游戲開發經理智能體始終在前端界面上與用戶分享中期結果,使其余的智能體能夠隨時了解正在進行的開發是什么。為了增強這一點,研究人員集成了一種交互式方法,使用戶能夠根據他們的期望積極地審查、糾正和增強計劃。這種方法也保證了設計計劃和用戶需求之間的一致性。說完了這些策略,我們來看看GameGPT的優越性。首先,這個模型中的任務分類過程要求在識別任務類型及其對應參數方面具有很高的準確性。因此,研究人員為了確保這一階段的準確性,創建了一個名為游戲開發工程師的智能體。該智能體由兩個模型共同組成,它們協同參與任務分類的流程。這種協作方法提高了任務識別的準確性和有效性。同時為了避免LLM幻覺的出現,提高任務分類的準確性,研究人員提供了游戲開發中可能出現的任務類型列表。為了對此進行更好地分類,他們采用了BERT模型。BERT模型已經用內部數據集進行了完整的訓練。該數據集包含針對游戲開發任務所量身定制的各項數據條目。而輸入則是從預定列表中繪制任務,而輸出對應的則是任務的指定類別。任務類型和參數的審閱都在這個階段進行,引入一個叫做任務審閱人員的智能體,主要負責每個類別的識別和參數是否合理。評審(review)的過程包括審核任務類型是否在預定范圍內,是否是最適合的任務。
同時,它還會檢查參數列表,看看它是否與任務一致。某些場景下,比如一些基于上下文任務信息的,或者用戶請求無法推斷參數的情況,GameGPT采用了一種主動的方法來解決。Reviewer通過在前端界面上啟動提示,并請求參數所需的附加信息來吸引用戶注意。這種交互方法的好處在于,即使在自動推理不足的情況下也能確保論證細節的完整性。此外,還有另一個智能體負責識別任務之間的依賴關系,并構造一個封裝這些關系的圖表。在建立該圖之后,再采用算法來對該圖進行遍歷篩選,由此產生一個確定的任務執行順序。這個過程確保了模型可以按照任務的依賴關系有序和系統地執行,從而產生連貫和結構化的開發流程。另一個問題是,使用LLM生成冗長的代碼會帶來更大的幻覺和出現冗余的風險。為了解決這個問題,研究人員引入了一種新的方法來解耦游戲設計中出現的代碼,簡化了LLM的推理過程,從而極大程度減輕了幻覺和冗余。這個方法也并不難理解——研究人員會將預期的腳本劃分為許多長度更短的代碼片段,以供LLM處理。這種解耦方法大大簡化了LLM的工作。還有一種叫做上下文學習的有效推理方法,也可以有效地減輕幻覺。此外,GameGPT中應用的另一種消除幻覺的技術,包括為每個任務生成一組K個代碼的代碼片段。
這些代碼片段隨后會在虛擬環境中進行測試,并同時呈現給用戶。測試過程和用戶反饋都被用來識別和消除有問題的代碼片段,最終只留下最可行的選項來執行。這種方法同樣有助于進一步減少幻覺的發生。此外,研究人員還有一個內部的庫,包含為游戲開發設計的大量代碼片段。每一個代碼片段都由標簽器進行了注釋,提供了明確說明其預期目的的說明。概括一下就是,為了讓代碼不冗余,不幻覺,開發人員做了兩手準備,事前的和事中的。同時,上面提到的這個庫也是對模型進行微調的寶貴資源。代碼審查和改進在游戲引擎智能體生成代碼之后,代碼審查智能體會對代碼庫進行徹底的審查和檢查。該智能體會進行全面的評估,努力找出任何可能會偏離原始請求的實例,或代碼中出現的意外幻覺。經過徹底的審查,智能體不僅能標記出潛在的差異,而且還能據此提供改進代碼的建議,最終產生更為合理的版本。在審查過程之后,修改后的代碼以及智能體的反饋都將通過前端界面與游戲引擎工程師智能體和用戶共享。如果用戶認為有必要,可以直接通過前端界面提供代碼修改建議。之后這些建議會繼續傳遞給代碼審查智能體,它會進行評估,并有選擇性的合并這些建議,從而進一步生成一種協作和迭代的方法來增強代碼。最后,一旦代碼生成完畢,該干的也都干完了,責任就落到了游戲引擎測試智能體的身上,由這個智能體來負責執行生成的代碼。在這一階段,該智能體還會遵循在前一階段所制定的執行順序。具體的執行過程包括將每個單獨任務的代碼發送到游戲引擎,進行執行,并在執行期間持續跟蹤,生成日志。在完成執行序列中指定的所有任務后,智能體會合并整個執行過程中生成的所有日志。最終,這種編譯生成了一個簡潔而全面的摘要,再通過前端界面呈現給用戶。此外,測試工程師智能體還會識別并報告在執行過程中觀察到的任何回溯情況的出現。這些回溯會作為關鍵的指示器,指示AI對執行流程或代碼進行更進一步的調整,使整個過程得以細化,并有助于生成一個完美的最終產品。
最后,再來看下多個代理同時工作的框架公式:首先,在GameGPT中,每個代理都有一個私有的記憶系統,并且它們可以訪問共享的公共內容,以獲取必要的信息來指導其決策過程。對于時間步長為t的代理i來說,這一過程可表示為:其中pθi對應的是和代理i相關的LLM或專家模型,Oit表示代理i在時間步長為t時的產出或可交付成果,Mit和Pt分別指截至時間步長t內,所有的私人記憶和必要的公共記錄。由于游戲開發行業的特殊性和大語言模型的局限性,在GameGPT中,具有不同角色的多個代理的存在至關重要。鑒于游戲開發周期通常長達數月,如果只依賴一個擁有全面記憶和上下文信息的單個代理,語言模型(包括LLM)的效率將大打折扣。而隨著時間的推移,項目變得越來越復雜,這種方法也會帶來可擴展性方面的挑戰。此外,考慮到LLM所處理的標記數量的限制,在大型游戲開發項目中使用具有全面內存的單獨代理并不實用。還有,在LLMs中觀察到的幻覺和冗余等固有問題凸顯了多個代理之間協作的重要性,尤其是那些具有批判性角色的代理。這種協作對于減輕LLM幻覺和冗余帶來的挑戰意義重大。因此,GameGPT才利用一系列不同的角色來促進其運作,包括整個游戲開發周期的職責。這些角色包括上文提到的游戲內容設計師、游戲開發經理、計劃審核員、游戲開發工程師、任務審核員,還有游戲引擎工程師、代碼審核員和游戲引擎測試工程師。在整個游戲開發過程中,每個角色都承擔著不同的任務。
-
AI
+關注
關注
87文章
30757瀏覽量
268902 -
人工智能
+關注
關注
1791文章
47206瀏覽量
238274 -
模型
+關注
關注
1文章
3229瀏覽量
48811
發布評論請先 登錄
相關推薦
評論