天天看點

機器學習能在遊戲開發中做什麼

機器學習很容易讓人聯想到在遊戲中的角色 AI 。一直以來遊戲中 NPC 或怪物的 AI 問題都是一個遊戲比較難解決的問題。比如遊戲的角色行為過于單一,讓玩家乏味;或者遊戲角色容易因為BUG陷入一些卡死的境地。為什麼遊戲角色 AI 會有這些問題?

機器學習适合做什麼

機器學習目前在很多領域,都取得了相當巨大的進步。從應用領域來看,機器學習在“資訊識别”、“資料預測”、“複雜控制”幾個方面,展現出很大的能力。

  • 比如“資訊識别”領域,依賴于大資料的訓練,現在的圖形識别已經非常完善了,手寫數字的識别僅僅是類似Hello World一類的簡單應用;
  • “資料預測”領域百度對于世界杯的預測達到令人吃驚的100%準确率,将來這種技術在各種據别曆史資料的預測應用上,将有長足的發展,比如廣告的推薦系統、财經資料的決策系統等等;
  • “複雜控制”方面,自動駕駛的技術經曆了十幾年的研究,剩下的似乎隻有識别硬體的成本問題了。

然而,以上這些技術,相當一部分來源于“大資料”,或者叫“監督學習”的訓練,也就是說,實際上這些機器的智能是來源于人類積累在資料中的“智慧”。機器僅僅是在“模拟”人類的某種思考判斷,而這種模拟采用的更多是類似“查詢搜尋”的方法。——不過說回來,人類的經驗幾千年來,都是記錄在書本上,需要用另外一個大腦來學習,然後才加以運用;而機器學習跳過了人腦這個階段,從經驗直接到應用,确實是一個偉大的進度。可以增加一點想象的是,以後所有“需要經驗”的事情,已經是可以用電腦來代替了,比如醫生看病。不過那些需要“創造”或者“發現”的事情,比如藝術創作,了解和發現客觀規律,還是需要人腦。所幸是機器學習在“無監督學習”領域,能協助人類更好的去了解和發現世界的特征,這個方面也是非常有用的,但現在似乎應用領域并不非常活躍(也許是我的了解還不夠廣泛)。

機器學習能在遊戲開發中做什麼

[機器學習預測房價的例子]

AlphaGo在圍棋領域戰勝人類,給了我們很大的想想空間,我們會想:機器是否也能像人類一樣了解遊戲規則,進而玩遊戲呢?我個人的了解,實際上現在還是不行的。如“監督學習”的模型下,機器隻能通過大量的人類的“經驗資料”,來模拟人類的遊戲行為,但無法獨立做出判斷和思考;如果使用“深度學習”,确實會有一種“超越人類”的錯覺,但是無法忽視的是,“深度學習”需要一種高度抽象,模拟遊戲勝負規則的公式,來指導機器的自我對弈。在圍棋、象棋這類已經發展了數千年的遊戲領域,“子力計算”等遊戲模式經驗,已經能相當準确的描述這個遊戲了。而對于其他的一些比較複雜的遊戲,要高度抽象的用數學模型來概括一個遊戲,還是需要人類大量的思考。這也是為什麼深度學習在一些規則簡單的遊戲中,還能表現的比較好,而另外一些比較複雜的遊戲上,就需要大量的人工幹預才能稍微像樣的原因。

機器學習能在遊戲開發中做什麼

[AlphaGo是用了人類的遊戲經驗的]

是以我認為,機器學習在現階段,最成熟的應用,是利用“監督學習”的方法,對于大量人類的“經驗”大資料進行模拟思考的方面。這個方向處理用于“了解”客觀世界,也可以“模拟”人類對于複雜環境的行為,這兩者是幾乎一樣的。

遊戲角色AI在開發上的困境

機器學習很容易讓人聯想到在遊戲中的角色AI。一直以來遊戲中NPC或怪物的AI問題都是一個遊戲比較難解決的問題。比如遊戲的角色行為過于單一,讓玩家乏味;或者遊戲角色容易因為BUG陷入一些卡死的境地。為什麼遊戲角色AI會有這些問題?大體不外乎幾個原因:其一是描述一個完整的AI非常的繁瑣,環境越複雜,AI邏輯流程越容易出現漏洞;其二是為了遊戲角色AI的目标非常多樣化,很多遊戲角色并不是越“聰明厲害”越好,而應該是作為一個“演出系統”,來讓玩家體驗遊戲世界的工具。

機器學習能在遊戲開發中做什麼

[一套簡單的遊戲行為,就需要一個複雜的行為樹]

現在比較流行的遊戲角色AI開發方法,無外乎“狀态機”和“行為樹”兩種,而這兩種在資料結構上,是可以無損轉換的,也就是說本質上是一樣。這兩個技術,都是為了幫遊戲開發者,更準确、更完整的表述AI邏輯判斷的資料結構。但是遊戲本身的邏輯複雜度,還是要由程式員一段段的去了解,然後才能編寫成程式。在另外一些遊戲中,會用到一種叫“面向目标的路徑規劃”的技術,實際上是“狀态機”的一種更新技術:利用A*等尋路算法,來自動生成“狀态”之間的邏輯路徑,而無需一開始就以人工輸入的方式全部輸入進去。這種技術因為是在運作時産生狀态機圖,是以表現出來的行為會更加豐富和準确,較少會陷入一些“沒有事先預測到的狀況”進而陷入邏輯卡住的情況。

但是不管狀态機和行為樹如何努力,從開發者角度來說,都必須通過人腦來抽象和了解遊戲世界的規則,和各種可能的情況。加上遊戲AI很多時候是需要一種“表演”效果,要用代碼和邏輯去“模拟”出一場表演,是相當繁瑣的工作量。(如果以深度學習技術來說,實際上也無法做出這種表演效果,因為這種表演的邏輯行為,往往不是“最優”的選擇,甚至是相當“差勁”的)

是以,歸根結底,遊戲中的AI的困境,是由于工作量的原因造成的。由于我們沒有很好的生成“遊戲行為”的工具,導緻我們的遊戲行為往往不夠好。

機器學習如何應用在遊戲角色AI的開發上

在機器學習領域,學習人類的行為,并且應用于合适的場景,是“監督學習”下最常見、最成熟的技術之一,經典的應用就是“自動駕駛”。相對于自動駕駛需要昂貴的雷達裝置,才能“感受”現實世界,在遊戲中所有的資料都唾手可得,這種監督學習的應用更是沒有任何障礙。

假設我們的遊戲,已經把基本的遊戲規則開發好,遊戲場景也已經布置好,剩下的就是如何置入遊戲角色。就好像一部電影,場景、道具都已經到位,錄影機和劇本都已經準備好,那麼剩下的就是演員的表演了。按照以前的做法,我們需要用複雜的狀态機系統,去操控那些遊戲角色演出,而現在,我們可以讓策劃(或者其他開發人員)直接去操控遊戲中的角色,去真實的以遊戲的操作行為,去讓遊戲角色做出演出行為,而機器學習的程式,就好像錄像機一樣,可以通過記錄我們操控的角色的行為,去學習如何模仿我們的操控。當我們表演的足夠豐富後,機器學習就可以完全取代人工的操控,做出一些和預設相同的行為特征。

如果我們的遊戲能像上面的方法去開發角色AI,我們将會在遊戲AI行為工具上,得到一次巨大的進步。我們不再需要通過人腦去抽象和轉化遊戲的“表演”,而是可以直接去“扮演”,這樣除了可以節省大量的“程式員”的開發工作外,對于調試AI行為,表達更豐富的角色行為特征(性格),也是有相當大的好處。

機器學習能在遊戲開發中做什麼

[遊戲開發在很多方面已經越來越接近電影制作]

顯然,如果完全用“遊戲”的形式來取代AI開發,即便在機器學習的支援下,可能還會有很多不足之處,比如“人工表演”可能無法覆寫所有的遊戲場景環境。但是隻要能節省下工作量,我們還是可以利用舊的狀态機技術,來定義比較“完整”的邏輯環境,彌補那些可能存在的漏洞。不過我相信,随着對遊戲測試的深入,機器學習會能更快更好的應對這些邏輯漏洞,畢竟“玩”幾把遊戲,比用寫代碼然後調試,要快的多。

遊戲角色AI的業務價值

現在的成名遊戲中,确實有那麼一大批是似乎對遊戲角色AI“沒有必要性需求”的,比如我們常見的MOBA類遊戲。在棋牌類遊戲中,我們也不太希望用一個厲害的AI讓我持續的輸錢。但如果設想一下,如果我們的策劃能比較低成本的生産“AI”,那麼我們的遊戲就會脫離“玩具”的層面,變成一種可以“表演”的産品。我們常常說IP對遊戲的重要性,而真正能展現出IP的,往往是故事體驗,這就需要一套很好的“表演”系統。

從另外一個角度說,如果我們的遊戲除了精彩的PVP内容,還有很多優秀的PVE内容(所謂的單機體驗内容),那麼玩家也許會慢慢傾向對我們所生産的PVE内容來付費。從電影市場這麼多年的發展來看,優秀的“表演”還是會有很大的市場的。從知識産權保護的角度來看,遊戲玩法很容易被抄襲(PVP主要是玩法),但PVE内容卻很容易得到保護。除了利用海量使用者去激活PVP的收入,在PVE方面的開發,也許是一個新的市場空間。(從《陰陽師》這類産品能明顯感受到這股市場的潛力)

機器學習能在遊戲開發中做什麼

[巫師3不僅僅是一部互動電影,也是一個玩法優秀的遊戲,更是一個超級IP]

總結

如果我們能利用機器學習技術,開發出更通用的遊戲角色AI工具,那麼可能讓遊戲拓展出新的PVE遊戲市場,對于遊戲IP的輸出也有非常明顯的作用。

本文來自 韓大 微信公衆号

相關閱讀

一站式滿足電商節雲計算需求的秘訣

基于 tensorflow 使用 CNN-RNN 進行中文文本分類

「騰訊雲遊戲開發者技術沙龍」11月24 日深圳站報名開啟 暢談遊戲加速

此文已由作者授權騰訊雲技術社群釋出,轉載請注明文章出處

原文連結:https://cloud.tencent.com/community/article/608239

海量技術實踐經驗,盡在騰訊雲社群! https://cloud.tencent.com/community

海量技術實踐經驗,盡在雲加社群!

https://cloud.tencent.com/developer

繼續閱讀