近些年,像英雄聯盟、絕地求生、多塔2這樣的線上多玩家遊戲成為一種主流。
在這些遊戲中,平衡是非常重要的,這裡的平衡包括角色對角色、技能對技能的平衡。畢竟,如果一個角色可以完爆其他所有角色,其他的角色又有什麼意義呢。
為了保證遊戲的平衡,遊戲測試者與開發者會不斷地對遊戲進行修正:
測試者試玩遊戲開發者根據反饋對遊戲進行修正步驟1和2反覆重複,直到開發者與測試者均對遊戲的平衡滿意這個過程往往是非常耗時的。與此同時,使用人力的測試可能是不完美的。隨著遊戲變得越來越複雜,角色越來越多,操作越來越多,使用人力的測試,可能無法發現遊戲潛在的一些缺陷,也就是說,遊戲可能無法達到真正的平衡。
為此,谷歌提出了一種基於機器學習的遊戲測試方法,訓練人工智慧成為遊戲玩家,體驗遊戲,併為遊戲體驗提供反饋。
這個方法被率先用在了遊戲Chimera(譯:合成獸)中,透過數以萬計的遊戲以及資料收集的過程,人工智慧可以幫助遊戲開發者高效地提高遊戲的平衡效能,讓遊戲變得更加有趣。
Chimera遊戲
遊戲Chimera的本身,就極大地依賴於機器學習技術。比如,玩家可以隨意合併兩種生物,以生成合成獸,合成獸和合成獸之間也可以進一步合併。下圖給出了很多可愛的合成獸們。
值得注意的是,在這樣任意合併的設定下,合成獸的數量是非常巨大的。假設有100種基本生物,允許最多10個生物依次合併,那麼最終可能的合成獸有17310309456440種!
這就意味著,開發者和測試者可能都不瞭解所有可能的合成獸的種類。當不同的合成獸被賦予不同的技能值,這對測試者來說簡直是一種災難。
同時,玩家可以對(由合成獸構成的)卡牌進行不同的操作,如放置在不同的板塊、執行咒語等等,這樣多樣的操作更為測試者帶來困難。
訓練機器來玩遊戲
對於這張幾乎有無限多種可能的卡牌遊戲Chimera來說,人類是無法測試的。
為此,我們可以藉助機器的力量,使用卷積神經網路,來預測給定遊戲狀態下,不同玩家的勝率。
這個過程非常的直觀且有效。最初,機器會被給予隨機的遊戲策略,之後,重新建立一個新的機器(智慧體,agent),目的是打敗前一個機器,並在遊戲中反覆的收集資料。這些新的資料會被用於訓練另一個新的機器。
這個過程會不斷反覆。在這個過程中,資料的質量之間提升,機器也越來越會玩遊戲。
橫座標:機器的版本,縱座標:勝率
在這個過程中,如何表徵遊戲在某一時刻的狀態?有至少兩種方式。其一,遊戲的資料,如多少個合成獸,這些合成獸是什麼,有多少個板塊等。其二,遊戲的影象,即當前時刻遊戲的畫面是什麼樣的。
有趣的是,第二種方式,直接由遊戲影象來表徵遊戲狀態,會有更好的效果。這些影象會被輸入到卷積神經網路當中,同時,這裡卷積神經網路非常簡單(即神經元少、層數少),這使得電腦可以實時處理,同時,可以實現神經網路的快速傳輸。
這個方法可以迅速地模擬百萬次的遊戲過程,透過那些最優秀的機器玩家的遊戲資料,我們可以發現玩家套牌之間不平衡的地方。
比如,在Chimera測試過程中,遊戲開發者發現了這些不平衡點:
進化合成獸永遠是有利的,當一個玩家比另一個玩家進化了更多次合成獸,他非常有可能獲得勝利。相應的勝率也可以被量化,由於測試的次數數以百萬計,這其中幾乎沒有誤差。有些生物的能力過高,當這些生物被使用,玩家極有可能獲勝。在人工智慧測試員的幫助下,高的程度也可以被量化。根據這些不平衡點,遊戲開發可以進一步最佳化遊戲體驗。值得注意的是,像Chimera這樣有數以百萬計可能性的遊戲來說,用人力找到上述不平衡點,幾乎是不可能的。
參考文獻:
Ji Hun Kim and Richard Wu, “Leveraging Machine Learning for Game Development”, https://ai.googleblog.com/2021/03/leveraging-machine-learning-for-game.html,accessed on March 18, 2021."Empowering game developers with Stadia R&D (Google Games Dev Summit)", https://www.youtube.com/watch?t=239&v=hMWjerCqRFA,accessed on March 18, 2021.遺憾的是,暫時沒找到遊戲和演算法的程式碼。