機器學習能在遊戲開發中做什麼?
作者 韓偉
來源:騰訊遊戲學院
機器學習能否玩遊戲呢?
AlphaGo在圍棋領域戰勝人類,給了我們很大的想象空間,我們會想:機器是否也能像人類一樣理解遊戲規則,從而玩遊戲呢?我個人的理解,現在還是不行的。如“監督學習”的模型下,機器只能通過大量的人類“經驗資料”,來模擬人類的遊戲行為,但無法獨立做出判斷和思考。如果使用“深度學習”,確實會有一種“超越人類”的錯覺,但是無法忽視的是,“深度學習”需要一種高度抽象、模擬遊戲勝負規則的公式,來指導機器的自我對弈。在圍棋、象棋這類已經發展了數千年的遊戲領域,“子力計算”等遊戲模式經驗,已經能相當準確地描述這個遊戲了。而對於其他的一些比較複雜的遊戲,要高度抽象地用數學模型來概括一個遊戲,還是需要人類大量的思考。這也是為什麼深度學習在一些規則簡單的遊戲中,還能表現的比較好,而另外一些比較複雜的遊戲上,就需要大量的人工干預才能稍微像樣的原因。
[AlphaGo是用了人類的遊戲經驗的]
所以我認為,機器學習在現階段,最成熟的應用,是利用“監督學習”的方法,對於大量人類的“經驗”大資料進行模擬思考的方面。既可以用於“理解”客觀世界,也可以“模擬”人類對於複雜環境的行為。
遊戲角色AI在開發上的困境
機器學習很容易讓人聯想到在遊戲中的角色AI。一直以來遊戲中NPC或怪物的AI問題都是一個遊戲比較難解決的問題。比如遊戲的角色行為過於單一,讓玩家乏味,或者遊戲角色容易因為BUG陷入一些卡死的境地。為什麼遊戲角色AI會有這些問題?大體不外乎幾個原因:其一是描述一個完整的AI非常的繁瑣,環境越複雜,AI邏輯流程越容易出現漏洞;其二是為了遊戲角色AI的目標非常多樣化,很多遊戲角色並不是越“聰明厲害”越好,而應該是作為一個“演出系統”,來讓玩家體驗遊戲世界的工具。
[一套簡單的遊戲行為就需要十分複雜的行為樹]
現在比較流行的遊戲角色AI開發方法,無外乎“狀態機”和“行為樹”兩種,而這兩種在資料結構上,是可以無損轉換的,也就是說本質上是一樣。這兩個技術,都是為了幫遊戲開發者,更準確、更完整的表述AI邏輯判斷的資料結構。但是遊戲本身的邏輯複雜度,還是要由程式設計師一段段的去理解,然後才能編寫成程式。在另外一些遊戲中,會用到一種叫“面向目標的路徑規劃”的技術,實際上是“狀態機”的一種升級技術:利用A*(A-Star)等尋路演算法,來自動生成“狀態”之間的邏輯路徑,而無需一開始就以人工輸入的方式全部輸入進去。這種技術因為是在執行時產生狀態機圖,所以表現出來的行為會更加豐富和準確,較少會陷入一些“沒有事先預測到的狀況”從而陷入邏輯卡住的情況。
但是不管狀態機和行為樹如何努力,從開發者角度來說,都必須通過人腦來抽象和理解遊戲世界的規則,和各種可能的情況。加上游戲AI很多時候是需要一種“表演”效果,要用程式碼和邏輯去“模擬”出一場表演,是相當繁瑣的工作量。(如果以深度學習技術來說,實際上也無法做出這種表演效果,因為這種表演的邏輯行為,往往不是“最優”的選擇,甚至是相當“差勁”的。)
所以,歸根結底,遊戲中的AI的困境,是由於工作量的原因造成的。由於我們沒有很好地生成“遊戲行為”的工具,導致我們的遊戲行為往往不夠好。
機器學習如何應用在遊戲角色AI的開發上
在機器學習領域,學習人類的行為,並且應用於合適的場景,是“監督學習”下最常見、最成熟的技術之一,經典的應用就是“自動駕駛”。相對於自動駕駛需要昂貴的雷達裝置,才能“感受”現實世界,在遊戲中所有的資料都唾手可得,這種監督學習的應用更是沒有任何障礙。
假設我們的遊戲,已經把基本的遊戲規則開發好,遊戲場景也已經佈置好,剩下的就是如何置入遊戲角色。就好像一部電影,場景、道具都已經到位,攝像機和劇本都已經準備好,那麼剩下的就是演員的表演了。按照以前的做法,我們需要用複雜的狀態機系統,去操控那些遊戲角色演出,而現在,我們可以讓策劃(或者其他開發人員)直接去操控遊戲中的角色,去以真實的遊戲操作行為,讓遊戲角色做出演出行為,而機器學習的程式,就好像錄影機一樣,可以通過記錄我們操控的角色行為,去學習如何模仿我們的操控。當我們表演的足夠豐富後,機器學習就可以完全取代人工的操控,做出一些和預設相同的行為特徵。
如果我們的遊戲能像上面的方法去開發角色AI,我們將會在遊戲AI行為工具上,得到一次巨大的進步。我們不再需要通過人腦去抽象和轉化遊戲的“表演”,而是可以直接去“扮演”,這樣除了可以節省大量的“程式設計師”的開發工作外,對於除錯AI行為,表達更豐富的角色行為特徵(性格),也是有相當大的好處。
[遊戲開發在很多方面已經越來越接近電影製作]
顯然,如果完全用“遊戲”的形式來取代AI開發,即便在機器學習的支援下,可能還會有很多不足之處,比如“人工表演”可能無法覆蓋所有的遊戲場景環境。但是隻要能節省下工作量,我們還是可以利用舊的狀態機技術,來定義比較“完整”的邏輯環境,彌補那些可能存在的漏洞。不過我相信,隨著對遊戲測試的深入,機器學習能更快更好地應對這些邏輯漏洞,畢竟“玩”幾把遊戲,比寫程式碼然後除錯,要快的多。
遊戲角色AI的業務價值
現在的成名遊戲中,確實有那麼一大批是似乎對遊戲角色AI“沒有必要性需求”的,比如我們常見的MOBA類遊戲。在棋牌類遊戲中,我們也不太希望用一個厲害的AI讓我持續的輸錢。但如果設想一下,如果我們的策劃能比較低成本地生產“AI”,那麼我們的遊戲就會脫離“玩具”的層面,變成一種可以“表演”的產品。我們常常說IP對遊戲的重要性,而真正能體現出IP的,往往是故事體驗,這就需要一套很好的“表演”系統。
從另外一個角度說,如果我們的遊戲除了精彩的PVP內容,還有很多優秀的PVE內容(所謂的單機體驗內容),那麼玩家也許會慢慢傾向對我們所生產的PVE內容來付費。從電影市場這麼多年的發展來看,優秀的“表演”還是會有很大的市場的。從智慧財產權保護的角度來看,PVE內容很容易得到保護。除了利用海量使用者去啟用PVP的收入,在PVE方面的開發,也許是一個新的市場空間。
[《巫師3》不僅僅是一部互動電影,也是一個玩法優秀的遊戲,更是一個超級IP]
相關文章
- 機器學習這10年我們能在各自的領域做點什麼?機器學習
- 如何才能在Web前端開發學習中,遊刃有餘?Web前端
- 機器學習將在遊戲開發中的6種應用機器學習遊戲開發
- 機器學習、深度學習、和AI演算法可以在網路安全中做什麼?機器學習深度學習AI演算法
- 機器學習可解釋性系列 - 是什麼&為什麼&怎麼做機器學習
- 學習Python可以做遊戲開發嗎?Python入門教程Python遊戲開發
- 手遊開發者談能從投幣街機遊戲的設計中學到什麼遊戲
- 機器學習--要學點什麼機器學習
- 機器學習不能做什麼?機器學習
- 什麼是機器學習治理?機器學習
- 中國遊戲商為什麼做不出好的三國遊戲?遊戲
- 什麼是 AI、機器學習與深度學習?AI機器學習深度學習
- 什麼是AI、機器學習與深度學習?AI機器學習深度學習
- 為什麼要學習Python?學習Python可以做什麼?Python
- 《古墓麗影》前開發者談為什麼離開遊戲行業:做遊戲變得不酷遊戲行業
- 漫畫:什麼是機器學習機器學習
- 機器學習到底是什麼?機器學習
- 機器為什麼能夠學習?
- 什麼是機器學習MLOps? - kdnuggets機器學習
- 優秀的機器學習開發者都是這樣做的!機器學習
- 學完Python自動化開發我可以做什麼?Python學習教程Python
- 遊戲行業中的職位:你可以做什麼遊戲行業
- python中機器學習和深度學習的區別究竟是什麼?Python機器學習深度學習
- 你的遊戲為什麼做不出遊戲
- 科普遊戲:是什麼?怎樣做?遊戲
- 怎麼做,才能在職場中晉升?
- 機器學習落地遊戲實踐簡析機器學習遊戲
- 機器什麼時候能夠學習?
- 漫畫版:什麼是機器學習?機器學習
- 【機器學習】深度學習開發環境搭建機器學習深度學習開發環境
- 【Unity遊戲開發】不接SDK也能在遊戲內拉起加QQ群操作?Unity遊戲開發
- Unity 引擎 14 年!開發者除了遊戲還可以用它來做什麼?Unity遊戲
- 《Knockout City》開發者:遊戲即將停運,我們做錯了什麼?遊戲
- 機器學習中特徵選擇怎麼做?這篇文章告訴你機器學習特徵
- 什麼是深度強化學習? 又是如何應用在遊戲中的?強化學習遊戲
- 戀愛遊戲該怎麼做?戀愛遊戲+可以是什麼?遊戲
- 遊戲開發雜記(三) 開發及學習過程中的體會遊戲開發
- 遊戲的戰略(五):為什麼做遊戲難【完】遊戲