::GAME2.TW::臺灣遊戲攻略

華語手機遊戲攻略,遊戲資訊專業網站

前暴雪工程師:復盤[爐石傳說]的AI設計

7

【Gamelook專稿,轉載請註明出處】

Gamelook報道/據SuperData此前發佈的數據顯示,《爐石傳說》去年的平均月收入超過瞭2000萬美元,成為暴雪的另一個‘頂梁柱’,同時也引發瞭更多公司相繼做出CCG遊戲。在2014年的GDC大會上,從事《爐石傳說》項目的前暴雪工程師Brian Schwab做瞭題為‘《爐石傳說》的AI設計’的演講,對該公司在遊戲AI制作方面的一些經歷和想法進行瞭闡述,以下請看Gamelook整理的演講內容:

大傢好,我是Brian,在離開暴雪之前是負責《爐石傳說》AI引擎設計的,今天我可能講不瞭交換協議背後的秘密,也說不來很多的設計原則,但仍然可以分享一些有用的知識。如果你不瞭解《爐石傳說》,這裡我簡單介紹一些,它是一款卡牌對戰遊戲,你可以用不同的卡牌和對手進行回合制遊戲,出卡有資源限制(魔法),玩傢最主要的目的就是擊敗對方的英雄角色。

作為試驗品的《爐石傳說》

這個遊戲是暴雪的試驗品,通常情況下暴雪制作團隊都在70、80甚至100人以上,然而《爐石傳說》這個遊戲是希望通過有限的資源創造最大可能的遊戲,希望看我們能否在什麼都沒有的基礎上做出不同的遊戲,我們最初團隊有15人,4名美術師、5名程序員、2名制作人、2名策劃,加上我(AI)和一名負責音樂的同事。我們接受瞭挑戰,並且非常確定可以完成它。

6

《爐石傳說》本身就是一個問題,首先是卡牌遊戲的規則是固定的,很多的遊戲都是在實體卡牌基礎上做規則的優化和調整,如果你違反一些基本的規則,就會看起來很蠢。第二就是我要做的系統和AI都必須可以接受大量的修改,主要是因為這就是暴雪的做事風格,還因為我們需要對卡牌遊戲做盡可能多的平衡。最後是剛剛說過的,我們面臨的困難包括,有限的團隊、資源和時間,AI、CPU以及預算也達不到大型遊戲的規模。

以遊戲設計為主的研發模式

在做遊戲的過程中,有一些考慮是一直貫穿研發過程的,首先是設計為主,這是暴雪所有產品的主流做法,從這一點來說,我們必須把遊戲做到易於調整,可以對卡牌進行編輯,因為所有的工作不可能都交給程序員,設計師需要負責卡牌,我們必須做到遊戲系統方便修改。我們還用瞭很長的時間來確定需要做多少AI,因為我們很早就有一個版本,很多遊戲可能都會做一個新手教學,即便如《爐石傳說》這麼容易上手的遊戲,所以我們在做的時候決定加入AI控制,讓玩傢們通過它來一步步熟悉,這樣慢慢學會更多東西。

AI的難度也是一個問題,很多的卡牌遊戲難以被人接受都是因為遇到瞭這個問題,比如《萬智牌》有太多太多的卡,太多的機制,所以讓學習曲線變得很漫長,以至於很多人還沒開始就放棄瞭。所以暴雪希望做的AI就是讓你覺得它很聰明,但又不能碾壓你,讓玩傢覺得他們最終可以學到AI的技術,最終能夠很快超越AI的技術,帶來一定的成就感。

這個項目開始時另一個比較大的爭議就是是否以數據為驅動做研發,你們想不到的是,由於團隊和資源限制,很多人其實寧願做數據驅動的遊戲,因為這一套做起來會很順暢,但我非常的自信,我覺得這款遊戲會流行,而想讓一款卡牌遊戲生根發芽,最終枝繁葉茂的最好做法就是不斷的推出更新,發佈之後不斷的推出卡牌。這樣如果我們後來再決定做出大改就會導致遊戲崩潰。所以我們做的妥協是,卡牌是按照數據做的,我們有這些工具所以很容易做,但AI卻並不是的,實際上AI很多是代碼組成的,所以我在這方面做瞭很多的決定,因為我必須把AI做到容易上手,能夠吸引用戶,然後讓他們一直可以繼續遊戲。

玩法系統

我們的做法是為所有事物打上符號,由於規則的限制,我們必須為這些卡做很多的Tag,比如傳說卡,軍團,卡牌類型等等, 所有這一切都需要是可以調整的,我們隻能通過卡牌能力來改變。另外一個系統就是狀態更新,我們可以清除所有的限制條件然後重新開始,在出發技能的時候或者卡牌死亡的時候更新狀態。這樣一來在遊戲中同時最多需要調用24個符號,所以這其實沒那麼復雜。

遊戲的主要玩法包括收集所有的可能性然後發送給玩傢選擇,根據玩傢的選擇運行能力,然後更新狀態,為瞭讓用戶們更容易理解,我們會做不同的顏色,比如綠色表示玩傢可以使用這些牌,所以這就減輕瞭AI的壓力,因為它不用去判定哪些卡牌可以用,哪些不能用,這一切都有固定的套路,你使用哪些卡牌就會有相應的能力配套,AI所承擔的壓力減少瞭很多。

5

《星際爭霸2》的Galaxy編輯器

接下來要說的是符號編輯器,最初我們的設計師和《星際爭霸2》項目上的人共同子在做Galaxy編輯器,所以他希望我們對此做出改動,你從圖中可以看到原來的編輯器是這樣的,你們看到這個很復雜,但我們進行瞭簡化,用高級語言實現瞭多功能調用,所以《爐石傳說》的腳本語言其實更自然,更簡單,我們對Hearth編輯器做也采取瞭同樣的做法,使用瞭非常簡潔的代碼。

AI系統的打造

我們最初就打算把AI做成中等玩傢水平,為此我們采訪瞭很多玩傢,有些玩卡牌遊戲,也有的人不玩卡牌遊戲,把這些采訪得出的中間數作為中等玩傢水平的參照,按照傳統的分類,新玩傢瞭解玩法,中等玩傢瞭解戰術,高級玩傢瞭解更高級的東西,但其實我們采訪的高級玩傢是可以在有限的卡牌數之內進行技能組合,而中等玩傢則直接是看卡牌數值和遊戲內資源的,所以我把遊戲內資源分成不同的組,比如你手中可以使用的資源,可以用於攻擊的卡牌數等等。

我們采取瞭非常簡單的計分系統,不管是你的攻擊消耗瞭多少點HP、造成瞭多少傷害,或者哪些卡牌被消滅看,這些都是簡單的計分系統完成。而且我們是不允許玩傢一上來就把對手擊敗的,因為必須給對方一定的時間進行反擊,這樣雙方的戰鬥才會更有趣。

遊戲中的鎖定機制很少,因為你在遊戲中這麼做的時候容易造成一些復雜情況,還會引起一些意外情況發生,遇到這樣的情況,代碼還需要知道你為什麼要鎖定這些卡,所以更容易出問題,因此我們盡可能減少這樣的情況出現。

另一個做法就是困難的升級,主要表現為玩傢對AI反應的猜測難度、AI攻擊機制的隨機性以及AI卡組的可調整性。由於魔法的限制,所以一開始不管是玩傢還是AI所做的動作都是有限的,而由於不能看到對方手裡的牌,所以隻有熟悉的玩傢才會猜測的比較準確,然而隨著遊戲回合的增多,AI可以獲得更多的卡牌,所以設計師來決定AI所獲得的卡組,這樣一來可以對難度更容易進行調整。

Hearthstone1

當然,我們還會對AI印象做一些調整,但這些都是比較細微的變化,比如HP剩餘多少的時候可以判斷對方在幾個回合制內贏得比賽,然後對此進行策略微調。

那麼,哪些是可以變得更好的呢?

首先要說的是,我們的代碼開始的很慢,由於初期主要是設計階段,所以很多的東西到代碼階段做起來會有些難度。其次是工具的成熟度不足,前面說到,由於人手不夠、資源和資金都不多,因此我們很多工具做起來都比較慢,如果有更成熟化的工具,這個過程應該會更快一點。

我們采取的一些不錯的做法

首先是用瞭一年的時間在設計修改上,這樣不僅反復驗證和調整瞭玩法的可行性,也增進瞭開發者和遊戲之間的感情,通過多次的討論和修改,最終遊戲變得更加穩定。其次就是Flash創意原型,我們一開始並沒有使用代碼做創意原因,因為這樣做起來簡單,而且後來改起來又不用調整代碼就可以進行快速便捷的修改。

我們當時做的一個比較對的決定時延遲瞭遊戲發佈日期,使用瞭更長的封測和公測期,不過在這個過程中我們找到瞭更多問題,比如觸發機制在初測期間改瞭3次,所以我們必須重新寫很多低級的東西,做重復的事情,但這也為發佈之後減少瞭很多的問題。

另外一個就是AI性能做的很好,這一點我們前面說過瞭,最後一點要說的是,這款遊戲的表現很好,出乎我們的意料之外。