用深度學習輔助單局競技遊戲節奏設計

Aarons發表於2021-09-17
文丨Aarons
騰訊互動娛樂 遊戲策劃

筆者注:本文純粹出於個人興趣和研究,其研究內容與具體專案無關,中間的所用到的資料則多為公開資料以及手工構造的假資料,重在提供分析方法和思路,不必考究。另外,為了避免論述過於主觀,做了很多名詞解釋和數學形式化的推導,通篇寫作有點不講人話的嫌疑,這個還請見諒。另外,由於前後內容邏輯強相關,建議通篇閱讀。

前言

用深度學習輔助單局競技遊戲節奏設計

單局PVP遊戲的遊戲節奏設計和調優往往是一個非常棘手的問題,因為當前熱門的單局遊戲如MOBA,BR等都是經過大量MOD的迭代和社群共建才湧現和進化而來的,其一開始並非某個人和團隊所能完全駕馭和正向設計的,其本身就是抄抄補補,一個個微創新疊加而來的。

一個健壯的單局遊戲往往需要具有非常多的系統、Gameplay,在某種意義上說,單局PVP遊戲實則是一個非線性的複雜系統,基本就是一個黑盒,其眾多系統耦合出來的單局玩法往往在很多方面都變得極其複雜和難以調控,牽一髮而動全身,並且設計師很難通過一些具體的指標去評判遊戲的某些體驗是否出了問題,很多反饋都來自於非常主觀的個人感受,而個體差異和對局的隨機性將讓這些感受又變得非常的不收斂,每個人的描述都存在巨大的隨機偏差,這種時候設計師其實很難有明確服眾的資料和資訊去做分析,進而去做決斷的。

當前唯一可行的辦法就是小步快跑進行迭代,但從修改——製作——測試上線——反饋,其開發成本和時間成本都相對很高,並且很容易翻車,來來回回,反反覆覆。為了解決這個棘手的問題,本文試圖提供了一種相對客觀方法去解決一些單局遊戲中存在的節奏設計和調優方面的內容,可以為設計做很低成本的推演和驗證,主要用到了一些簡單的建模、基於神經網路深度學習的AI、深度學習的勝率預測模型、和一些簡單的資料分析方法。

關鍵詞:單局遊戲 遊戲節奏設計 設計驗證閉環 神經網路深度學習 AI Python 資料分析

本文共分為三個主要的章節:

1. 一些遊戲性設計的共識和假設

2. 基於深度學習勝率預測模型和遊戲節奏相關資料分析

3. 基於深度學習和資料分析的單局遊戲分析設計驗證閉環

第一章,主要偏遊戲設計,在說明問題之前,需要規範一些用詞和做一些基本的假設以達到共識,避免在描述很多詞彙和設計導向上引起歧義,並且為了更好的去分析問題,需要對問題做一下抽象和建模,其中有很多推導內容。當然,因為從客觀角度去描述遊戲設計本身就是一件非常困難的事情,該章節部分內容閱讀起來可能會非常的苦澀,並且仁者見智,這裡先打一針預防。

第二章,主要介紹基於深度學習的單局遊戲勝率預測模型,以及如何根據模型跑出來的資料進行分析,並通過簡單的例項展示了分析的方法,其中也用到了如Python等語言做為輔助。最後展示了我們如何通過資料分析得到我們想要的結果。

第三章,則是筆者構想的偏理想和展望的設計驗證閉環方法,該方法在一定算力的支援下,允許設計師在遊戲設計階段,而非測試上線階段得到一個比較客觀的設計反饋,很大程度上可以減少設計驗證的成本,也可以避免一些拿不準的設計上線後出現玩家的負面評價,當然,該方法尚處於理論階段,還需要有條件的專案去實踐和執行。

第一章:一些遊戲性設計的共識和假設

遊戲本身就是通過多種方式來營造的一種可互動的體驗,一種比較特殊的媒介,而遊戲這個媒介到底如何區別於電影等一些其他媒介呢?後來我在影視颶風的一期視訊裡似乎找到了一些思緒——節奏。

用深度學習輔助單局競技遊戲節奏設計

而對於遊戲來說,和視訊這個載體最大的不同是,這種節奏可以一定程度由玩家所掌控(突然就浮現出《只狼》裡的“打鐵”),所以談及遊戲體驗,我覺得不得不去考慮遊戲的節奏,以及這種可控的節奏帶給玩家的體驗感受。

而什麼是遊戲節奏呢?

下文嘗試給遊戲的節奏下一個定義,以及試圖通過某種客觀的方式表徵遊戲節奏

1.1 遊戲節奏:

遊戲節奏這個概念其實很抽象,通常大家會聽到 “這個遊戲的節奏太刺激了!”,“這個遊戲的節奏很舒緩。”之類的描述,分別可能對應的畫面是這樣的:

用深度學習輔助單局競技遊戲節奏設計
[ 緊張刺激的《求生之路》 和舒緩的《風之旅人》 ]

而在一些PVP遊戲中,則更容易聽到這樣的描述:“這個打野很會帶節奏!”,“這局遊戲節奏太差了,從頭崩到尾!”

用深度學習輔助單局競技遊戲節奏設計

可見,不同型別的遊戲中,遊戲節奏所描述的東西在感覺上差異是很大的,但深究下去會發現,遊戲的節奏無非和這些內容有關係:時間、階段、事件、難度、對抗........

繞過簡單的鋪墊,我們直奔結論:

在PVE遊戲裡面,遊戲的節奏其實很好理解,其就是遊戲關卡難度隨時間變化的曲線,如果一個遊戲從頭到尾都很難,很容易死,那遊戲的節奏就會很緊張,而如果遊戲從頭到尾都很簡單、放鬆,那遊戲的節奏就很舒緩。

PVE遊戲的節奏控制會相對的簡單,因為大部分PVE遊戲的體驗是線性的,設計師可以很輕鬆的通過各種關卡和挑戰的難度來控制玩家的過程體驗,從而達到心流的狀態。

用深度學習輔助單局競技遊戲節奏設計

而在PVP遊戲裡面裡面,挑戰是來自於對手的,玩家體驗和遊戲節奏的則是來自玩家間的博弈/對抗強度。(博弈/對抗強度之後有做解釋)

用深度學習輔助單局競技遊戲節奏設計

以單局PVP的遊戲為例,我們描述的遊戲節奏通常指:從開局到結束玩家博弈/對抗強度隨著時間分佈,而這個分佈,我們也希望他是逐漸由平緩變緊張的,符合心流的曲線。

如果一個單局PVP遊戲的對抗強度隨著時間的變化呈波折式的上升,那這個遊戲的單局體驗通常都會比較好,其實電影工業中常使用的好萊塢三段式,就大體符合這個曲線,而我們熟知的單局PVP遊戲,MOBA和BR玩法,其單局節奏基本符合了上述的曲線。

尤其是BR玩法,通過縮圈等機制讓整個單局的遊戲體驗和節奏變得非常的健康,以一個經典的BR吃雞局為例,從跳傘的遭遇戰——舒緩的發育——強度越來越高的遭遇戰——決賽圈 ,整個節奏從舒緩到緊張,完美的演繹了一條典型的心流曲線,並且由於死亡就意味著單局結束,在任何一場BR單局中做切片,都能得到一條不錯的曲線,從形態上來看,任何一把BR遊戲的單局體驗從節奏上來說都是相當OK的,如下圖所示,原諒我的靈魂繪圖。

用深度學習輔助單局競技遊戲節奏設計

MOBA也同理,從平緩的對線、到遊走、到團戰,整個博弈的強度也是在慢慢提升的,但MOBA個體單局差異是很大的,很多對局的質量其實非常低,(比如在前期被碾壓後,後期完全處於出門即死和無所事事等投降的垃圾時間,而BR就沒有這種時間,最多的垃圾時間是大廳載入和出生島拳擊)

拉回來,我們這裡大體可以做這樣的約定:

一個博弈/對抗強度由舒緩逐漸變得緊張的單局PVP遊戲節奏,是好的遊戲節奏

我們記遊戲節奏為博弈強度b隨時間t的變化的函式:

b = φ(t)

1.2 競技遊戲中的博弈/對抗強度:

在不同的PVP競技遊戲中,博弈和對抗的內容也各不相同。

比如PUBG裡面佔領優勢的地理位置、擊殺看到的敵人,MOBA裡面技能的投籃和躲避機制、擊殺敵方英雄、推掉敵方的塔,搶奪野區資源。圍棋裡面需要吃掉對方的棋子,佔領更多的底盤等等。

而當玩家圍繞著這些賽點做博弈/對抗的強度越高、頻次越高,且博弈/對抗的結果對比賽勝負的結果越重要,則我們認為這段時間玩家的 博弈/對抗 強度就越高。

1.3 博弈/對抗強度的客觀表徵:

通過前面的論述,我們儘管能通過分析去得知一個遊戲具體的博弈/對抗 內容,但如何得知其在某一時刻的強度呢?

實際上,博弈/對抗強度是很難去做客觀描述和表徵的,同樣一個對抗機制或Gameplay在不同遊戲中,甚至同一個遊戲中不同階段的強弱都是不能橫向對比的,何況在複雜的對抗遊戲中,同一個時間存在著多種博弈/對抗(LOL中同時在打團戰和小龍、DOTA中ROSHAH團外帶先知分推、PUBG中同時在跑毒和射擊)

對此,我們必須另闢蹊徑,通過一些別的方式去表徵在一局對抗遊戲中的博弈強度。

以下為不完全嚴謹的邏輯推導過程,沒有興趣的同學可以直接看後面的結論。

以下為簡單的論證

遊戲之所以要做博弈/對抗,其實就是為了爭個勝負,一個遊戲,都會有明確的目標或者勝負通關條件,一些簡單的遊戲中,勝負可能就在一念之間,比如剪刀石頭布,一次博弈a1就可以判斷勝負,其形態大概是這樣的。

用深度學習輔助單局競技遊戲節奏設計

W的值域為[-1,1],很好理解,-1為負,1為贏。在剪刀石頭布中φ(a1)的值域也很簡單,一開始大家都為0,出拳後,要麼是-1,要麼是1。

用深度學習輔助單局競技遊戲節奏設計

而博弈過程φ究竟是怎麼計算的,我們就很難得知了,如果遊戲過程是一個簡單的擲骰子,那可能就是一個簡單的概率分佈,而遊戲如果涉及到一些複雜的規則和Gameplay,那就很難用數學形式去表達了。

在一些複雜的競技遊戲中,其勝負條件不是一蹴而就的,而是需要在單局中圍繞著一項項的博弈和對抗去展開和推進的,可能有十幾個甚至幾十上百個博弈點,a1,a2,a3.....,這個時候其數學模型大概是這樣的:

用深度學習輔助單局競技遊戲節奏設計

並且,由於每次博弈的機制和Gameplay(這裡記為φ)都不一樣,實際情況可能更復雜,可能是這樣的:

用深度學習輔助單局競技遊戲節奏設計

這裡就不展開了,大家能get到意思就行,可以看到一個複雜的遊戲其實在數學形態上會非常的複雜,特別是在一個Realtime的遊戲中,每一幀都可能產生無數個平行宇宙和決策分叉。

但我們脫繁就簡,來觀察我們最簡單的模型,剪刀石頭布的進階版,現在要求贏得3次猜拳就可以贏得最終比賽,其實勝負(勝率)W就是一連串博弈的合,如果一方連續3次都贏得了猜拳,那整個比賽W在時間上的形態如圖(不嚴謹):

用深度學習輔助單局競技遊戲節奏設計

這個時候其實就比較容易看出來了,實際上勝負W,是一連串博弈結果的合。對於離散過程的遊戲來說,是博弈的求和,而對於複雜的實時Realtime的遊戲來說,勝負(勝率)W是博弈的結果在時間上的定積分。

用深度學習輔助單局競技遊戲節奏設計

用深度學習輔助單局競技遊戲節奏設計

這裡可能不好理解,並且不能算絕對的嚴謹,但想傳達的意思大體如此,如果能意會就再好不過。當然,對此有任何疑問和不解也歡迎交流和探討。

論述結束

回到我們主要討論的單局PVP遊戲中來,雖然競技遊戲的博弈/對抗點非常之多,並行糾纏又不線性疊加,我們很難去在一個時間切片上去觀測和衡量當下遊戲的博弈/對抗強度。

但玩家在一個單局遊戲中,其勝率是實時在變化的(如果我們能測量勝率的話)。

接下來重點來了!

也就是說,我們跳出所有耦合在一起難以分別觀測和計量的博弈/對抗點後,站在更加高層的維度上去觀察這個非線性複雜系統,玩家勝率的變化就是玩家博弈/對抗的結果引起的,而勝率變化的波動率(一階導數)則間接的反應了博弈/對抗的強度。

所以,博弈/對抗的強度和勝率變化的結果是高度一致的,用勝率的波動去表徵博弈/對抗強度是最符合遊戲的語境和上下文的。(這裡可能有點難以理解,就像撿子彈的多少這個博弈點在不同遊戲裡其重要程度是不同的,越是TTK高的射擊遊戲,撿子彈這個行為的博弈強度就應該越高。)

於是這裡我們可以推導得知:

勝率的波動就是遊戲博弈/對抗強度的客觀表徵

所以到這裡,我們想要的博弈/對抗強度就浮出了水面,即我們只需要對勝率隨時間變化的函式求一階導,既可以得到博弈/對抗強度隨時間的變化函式了。

但問題又來了:

我們怎麼去科學的知道一個單局遊戲中,某一時刻玩家的勝率呢?

這裡就不得不去借助深度學習這個工具了。

第二章:基於深度學習的勝率預測模型和遊戲節奏相關資料分析方法

2.1 基於深度學習的遊戲勝率預測模型

首先,怎麼去構建和使用深度學習的預測模型其實並不是本文的重點,因為這個真的非常難(這裡要十分感謝傑哥提供的專業指導和技術支援)。

本文只運用了構建好的模型,做了簡單運用和分析。

其實深度學習對遊戲某一方勝率的預測在很多遊戲中都有,我最早接觸到這個東西還是TI比賽看胖頭魚直播聽到的“大老師” ——即基於大資料和機器學習做的DOTA2比賽勝負預測,大老師會根據當前比賽的各種資訊(陣容、經濟差、等級裝備等)去預測紅藍方的勝率。

要弄明白大老師的工作原理,其實還是相當複雜的,這裡就不鋪開去說了,以我的水平可能也說不清楚,建議大家去閱讀相關的論文。

簡單來說就是我們會去建立一個神經網路的深度學習模型,以MOBA為例,在比賽某個時間切片的諸多資訊作為輸入(陣容、經濟、等級、裝備、防禦塔數量等幾十個甚至上千個遊戲內的資料),用非常多數量的對局去讓模型進行大量的訓練。

用深度學習輔助單局競技遊戲節奏設計
[ 左邊為神經網路的輸入,右邊為輸出 ]

這裡我們會用到sigmod函式作為啟用函式:

用深度學習輔助單局競技遊戲節奏設計

sigmod函式函式連續光滑,嚴格單調,是一個非常好的閾值函式。

用深度學習輔助單局競技遊戲節奏設計

sigmod函式的值域在(0,1)之間,正好可以用來描述勝率。

最後我們得到一個相對穩定的深度學習網路,利用這個網路我們既可以對一把比賽進行分析,得到一把比賽中,某一方(moba),或某一個人(BR),他在每個時刻獲勝的概率。

當然,你要說網路給出的勝率準不準確,這個肯定是不那麼準確的,但從很多實際運用的結果來看,其給出的勝率結果還是很有參考意義的,畢竟在訓練深度學習網路中,我們基本放入了整個遊戲絕大部分的資訊,並且隨著樣本的增多,其預測結果也越來越準確。

有了深度學習勝率預測深度學習網路的幫助,我們的工作便得以開展,整個的解題思路其實就比較清晰了。

即我們可以通過利用這個訓練好的深度學習網路,來分析大量的比賽,並得到這些比賽勝率隨著時間的變化,並通過進一步的資料分析,來大體得到一個單局競技遊戲中博弈/對抗強度隨時間的變化,最後間接得到我們想要的遊戲節奏變化曲線。

2.2 基於遊戲節奏資料分析實踐

具體的方法則需要分解為以下步驟

1. 獲取N場對局(N>=1000 ,樣本的數量當然越多越好)

2. 用模型求出每一局比賽一方勝率隨著時間的變化

B = φ(t)

3. 求出每一局比賽勝率的波動率隨時間的變化,即對上面的函式進行一階求導,或者求一階差分

B' = φ'(t)

4. 將N場對局的一階差分做幾何平均,則可得到當前遊戲一個大體的節奏

用深度學習輔助單局競技遊戲節奏設計

有了方法和思路,我們開始具體進行資料的操作和分析,這裡我就簡單說一下我是怎麼處理手頭的資料的。

首先我構造了1000+ MOBA 遊戲的對局資料,並將這些資料放入深度學習網路中進行分析,我們的深度學習網路會輸出一個非常大的JSON檔案,當然這個JSON檔案的格式是我們自己定義好的。

我們輸出的JSON檔案儲存的是我們自己定義深度學習網路輸出的資料結構體,內容會非常多,我們需要提取其中最關鍵的資料,即時間&勝率。

有了深度學習網路跑出來的1000+資料,我們就需要用到Python這種簡單高效的工具來做資料處理。

1. 首先對1000局比賽輸出的JSON資料進行重名命以方便後面程式碼中的讀取,這個Python 幾行程式碼就可以搞定了。

2. 之後我們繼續使用Python做處理資料,由於我們的深度學習網路輸出的JSON檔案是一個很大的結構體,結構體中是一系列時間切片下游戲的資料和深度學習網路給的輸出結果,所以我們需要對JSON檔案進行反序列化,然後輸出和儲存我們需要的資料,即得到單一對局勝率隨時間的變化函式。

3. 求出每個對局勝率波動隨時間的變化函式,這裡因為我們的資料是離散的,就使用一階差分來做計算。

4. 將所有對局的φ'(t),進行幾何平均。(附上蹩腳程式碼)

用深度學習輔助單局競技遊戲節奏設計

5. 最後為了使得φ'(t)更具有可讀性,且顯得更加的平滑,我們使用高階擬合,讓輸出的曲線更加平滑其易讀。

用深度學習輔助單局競技遊戲節奏設計

6. 最後使用Python輸出繪圖。

用深度學習輔助單局競技遊戲節奏設計
[ N場比賽勝率的幾何平均曲線 ]

用深度學習輔助單局競技遊戲節奏設計
[ N場比賽勝率一階差分的幾何平均曲線 ]

以上整個流程簡化一下大致是這樣的:

用深度學習輔助單局競技遊戲節奏設計

到此我們資料處理的工作就完成了,接下來則要開始做初步的資料分析,即遊戲節奏分析了。

用深度學習輔助單局競技遊戲節奏設計

以上圖構造的遊戲手資料為例,我們簡單做一下節奏分析,可以看到遊戲的勝率波動主要集中在遊戲的中前期,並且在550s左右的時候出現峰值和分化,而中後期的波動比較小,這意味著遊戲的整個博弈都集中在了前期,遊戲的勝負基本在中前期就已經決定了,而後期則多是垃圾時間。很顯然,這樣的遊戲節奏是不符合我們預期的,因為正如前文所說,我們希望遊戲的節奏是不斷由輕鬆變得緊張的,所有整個的博弈強度和勝率波動也應該是由低到高的。(因為本文的重點不在具體的遊戲分析上,所以這裡只是大致描述)

至於為什麼遊戲會呈現出上面的節奏分佈,則需要更深一層的資料探勘和比對,這個在後面一節會展開。

2.3 基於影像識別的遊戲節奏資料分析實踐

而之後我有用DOTA2的資料做了一次分析,首先因為時間的關係,我不可能再去構建一個新的深度學習網路去計算DOTA2錄影產生的資料了,但很巧的是DOTA2本身就有一個勝率預測的深度學習網路,只要開通DOTA2 PLUS就行,但我只能獲取到像這樣的截圖,並不是格式化的資料,這就比較頭疼了。

用深度學習輔助單局競技遊戲節奏設計

當然這也難不倒我,為了提取和分析影像資料,我不得不操起了老本行Photoshop,其實思路很簡單,我只需要通過影像處理提取圖片中的綠色的線就可以了,為此我在PS錄製了動作指令碼,執行了一些花裡胡哨的操作(裁剪、高反差對比、濾色等一些列操作),最後提取了出了勝率的曲線。

用深度學習輔助單局競技遊戲節奏設計

將影像變為灰度圖,以方便識別(下面這張和上面的那張圖用的不是一場比賽的)

用深度學習輔助單局競技遊戲節奏設計

最後,通過Python的一個CV庫,把影像做了處理,便可得到有效的資料了。

用深度學習輔助單局競技遊戲節奏設計

至此,可以繼續做資料的處理了,重複上面的方法後,大體得到了我們想要的勝率和時間的變化曲線。(我找了10把比賽時間在40分鐘左右的DOTA2的錄影分析,資料量有限)

用深度學習輔助單局競技遊戲節奏設計

可以看到在一開局的時候勝率波動是非常高的,很好理解,因為MOBA遊戲的對局陣容會很大程度上的影響遊戲的勝負,之後也有一些小的波動,雖然沒有直接的證據,但推測應該是搶賞金符和一級團造成的,再之後可以看到DOTA2前期的遊戲節奏是非常舒緩的,整個前期就是在補刀和繁育,一直到了遊戲的中後期,整個勝率才開始波動,整個遊戲節奏才慢慢變得緊張,並且這個過程會持續很久,而在30-35分鐘之後,整個遊戲的節奏又開始下降了,這估計是勝負已定,沒有太多變數了。

後半部分其實是大部分MOBA會存在的問題,就是遊戲到了中後期很容易進入垃圾時間,當然這有利有弊,一方面優勢方可以數值碾壓,體驗秒人的快感,但另一方,劣勢方就只能任人宰割了。為了解決這個問題,一些MOBA遊戲也引入了投降機制,可以一定程度避免垃圾時間產生的負體驗。

而BR玩法則非常不一樣,因為BR玩法你活得越久,則意味著你吃雞的概率越大,遊戲體驗越好,這裡不得不再次對BR玩法的巧妙感到驚歎。

2.4 如何根據節奏分析結果去做具體的遊戲調整

雖然我們初步扒出了一個遊戲的大體節奏,那我們到底怎麼去調整節奏呢,這裡就需要更加複雜和具體的資料分析了,難度也會比較大了。

我們除了可以得到上面的曲線,其實也可以根據需求得到一些更多的資料來對上面的資料做支撐和分析,比如我們可以對MOBA中團戰的分佈做一條曲線,或者對BR玩法中遭遇戰的分佈做一條曲線,這樣你就可以很直觀的看到這些事件和具體節奏的相關性了。

比如在這個構造的MOBA遊戲的對戰資料中,我們認為MOBA中的幾個博弈內容比較會影響比賽的走勢:

· 一血
· 團戰
· 小龍BUFF
· 大龍BUFF

為此我們可以在以上對局資料中找到以上內容的資料點進行比對。

例如我們統計出比賽中人數大於5人的團戰,並在影像中進行繪製(黃色的打點),如下圖所示:

用深度學習輔助單局競技遊戲節奏設計

很明顯的可以看到,團戰密集的程度和遊戲的節奏的強度是強相關的,即驗證了團戰是有些節奏的很重要的影響因素,和團戰相關的內容可能是我們調整遊戲節奏的重要參考,比如:團戰經濟(擊殺、助攻)相關內容、團戰頻次等等。

而我們如果提取比賽中大龍的擊殺時間點的分佈,則可以得到以下影像:

用深度學習輔助單局競技遊戲節奏設計

顯然,後期的兩個集中的節奏點都和大龍的擊殺有關,這個過於合理所以不解釋了。到了這個時候,其實我們利用這些資訊去調整設計了。

同理,對於一個BR玩法的遊戲,如果我們發現節奏點和空投發生的時間高度相關,那我們也可以通過空投這個切入點,去解決遊戲節奏的問題。

而整體節奏的設計也如此,如果我們通過資料分析觀察到,遊戲的中後期節奏反而沒有比前期的節奏緊張,那我們就可以通過一些設計來彌補後期節奏的不足,比如加快大龍重新整理的頻率,加快後期兵線的強度和金錢,加快最後幾個圈的縮圈速度等。當然對局單局遊戲來說,任何調整都需要較長的週期和對局才能收斂,在做調整後,依然需要做這樣的資料分析來進行遊戲的迭代和調整。

第三章:基於深度學習和資料分析的單局遊戲分析和設計驗證閉環

本章主要介紹了一種利用深度學習輔助遊戲設計的一種閉環方法,雖然是偏理論向並沒有真正跑起來的,但其實際執行是沒有什麼阻礙的,除了需要一些開發支援和算力支援。

這裡直接開門見山,整體的思路和流程如下圖所示。

用深度學習輔助單局競技遊戲節奏設計

簡述說明一下

1. 首先我們會擁有一個基礎1.0版的遊戲執行環境。

2. 運用強化學習去訓練對戰AI,當然具體採用哪一種方案就不提了,可以用的方案有很多,可以參考DOTA2、星際等等,單純的行為樹構建的AI雖然在簡單的戰鬥處理上是OK的,但考慮到巨集觀策略方面就力不從心了。這裡工作量和算力需求其實挺大的,要做好心理準備。

3. 用訓練出的AI在1.0的遊戲環境中去模擬對戰,可以變換陣容等等,儘量多的產生對局資料。

4. 儲存對局的錄影,或者資料。

5. 將資料用來訓練基於深度學習的預測模型。

6. 當模型達到預期後,我們重複之前的過程3、4過程, 生成新的對戰資料。

7. 將資料放入預測模型中進行分析,併產生勝率預測資料,或者上文中關於遊戲節奏的曲線。

8. 將預測資料進行一些資料分析,並得到分析結果。

9. 人工的去分析和解讀產生的結果,並思考遊戲節奏哪裡出了問題。

10. 修改和調整這些遊戲內容。

11. 構建新的1.1版本的遊戲環境。

12. 如果修改量不大,則直接用之前訓練的AI放入1.1的遊戲環境中進行對戰模擬。

13. 重複後面的過程,做好資料分析,比對改動前後的資料,觀察遊戲節奏是否修改達到了我們的目的。

這裡需要說明一個問題,在這個閉環裡,我們所有的資料都是由AI跑出來的,但眾所周知,AI的行為多少和真實玩家是有很大差異的,這樣的做設計是不是會有什麼問題呢?對於這個問題,我個人認識是不必擔心的,甚至我們更應該相信AI跑出來的資料,因為看過DOTA2訓練出來的AI就可以知道,實際上AI是比玩家更加理性和全域性最優的,且操作上可以做到零失誤,也就是說,AI的對戰資料相對玩家來說是更收斂的,這些資料可能是最能反映當前遊戲真實情況的。

可以看到,這個閉環流程基本是可以不用真實玩家參與的,設計師完全可以在釋出版本之前就對設計做一些初步的驗證,雖然這樣的驗證確實需要一些成本,但總比拍腦袋直接上線等結果來得穩妥,並且如果流程可以無阻礙快速迭代,算力也足夠的話,那可以很大程度上加快新內容的設計和驗證速度,提高版本的質量。從某種意義上說,也可以提供給設計者一個比較好的理論支撐和信心,反饋很快且容易簡單成效。

總結

本文提到內容和方法大部分也只是理論階段,暫時也沒有機會去實踐,只是個人一時興起利用一些奇怪的技能做了一點微小的工作。但願能找到一種相對客觀的方法來指導一些複雜單局遊戲的設計,希望對大家有用。

最後不得不說的是,分析和評價遊戲是相對容易的,設計和實現才是難啃的骨頭。就如本文前面提到,出於早期單局遊戲前中期相對乏味和缺少節奏的問題,設計師是否能做出buff爭奪、小龍爭奪、空投爭奪、轟炸區等全新Gameplay以改善前中期的遊戲體驗是非常需要創新和設計能力的。不過,雖然具體的設計和細節打磨非常重要也非常花時間,但千萬不要因為在巨集觀設計把控上的懶惰而浪費了大家在細節和品質上的付出,任何設計都有需要想清楚why。

以及,做設計也並不是一廂情願的事情,特別是做新玩法新機制的設計,在設計製作後,一定要通過一些具體的資料或者體驗去驗證設計是否能達到最初的設計目的。如果希望做一個強調團隊配合的遊戲,運用本文提供的方法,發現整局遊戲中玩家都在發育和運營,打團的頻次和打團對勝率帶來的波動都非常的小,那這顯然是沒有實現設計初衷的,而這個時候如果還一廂情願的覺得自己的設計是對的,那就有點說不過去了。當然,反覆試錯和迭代說上去容易,但實際卻因為種種不可描述的原因讓這件事變得非常的困難。

對於本文提供的方法,雖然說不是所有的專案都有機會用上深度學習這種目前來說成本很高的工具,但簡單資料經分和打點也可以一定程度的輔助設計了。

Anyway,對於遊戲設計這種見仁見智的事情來說,歡迎探討,以後希望也有機會用一些先進的工具和方法,為遊戲設計帶來一些不一樣的視角。

謝謝閱讀!歡迎一鍵三連!因為文章篇幅和寫作的時間跨度較長,且工作時間關係,資料和推導也沒辦法向寫論文那樣精確和嚴苛,如有紕漏,也希望大家多多指正!


來源:騰訊遊戲學堂
原文:https://mp.weixin.qq.com/s/9pjunqPgh5D8B75oht46VA

相關文章