?游戲中的推薦系統
推薦系統是什么?如果你使用過任何的訂閱服務,那么你就應該不會對推薦系統感到陌生。其核心在于利用機器學習的算法預測用戶是否會喜歡某些商品。這些系統通過可能諸多方式鑲嵌到產品中。比如Netflix利用協同過濾的算法找到那些和你類似的用戶,并將它他們所喜歡的影片推薦給你。Amazon則使用基于內容的算法向用戶推薦商品,比如向喜歡《指環王》的用戶推薦其他的魔幻小說。
我們(Anders Drachen等人)試圖為《命運》打造一個混合的推薦系統(這個系統是基于命運1所開發的,在命運2正式發布前才完成)。在這里我們所說的“混合系統”指的是這個系統使用了多種推薦方式。《命運》為玩家所操縱的游戲角色提供數百種不同的槍械和特殊技能用于對抗怪物和其他玩家。在目前的分析中集中于玩家對戰(PvP)的模式。下圖中可以看到在PvP模式中玩家們所偏愛的武器類型,從其中我們就能大概了解到玩家所面對的可選項有多少了。
在游戲中打造推薦系統面臨著一個獨特的挑戰:我們并不是在推薦玩家去玩什么游戲,而是向玩家推薦某些行為以提升其在游戲中的表現。對玩家而言,《命運》這樣的MMOG通常具有非常龐雜的游戲系統,對玩家的決策能力有很高的要求,而大多數玩家可能不知道該如何提升其游戲水平。我應該點這個技能還是裝備那件武器呢?最顯而易見的提升方法當然是“多玩會兒”。那些在游戲中消耗了10000小時的玩家肯定會比只玩了10個小時的水平要高。盡管如此,我們仍然需要一個通過數據來系統性幫助玩家提升的方法。構建游戲內推薦系統的難度就在于玩家通常有自己獨特的玩法偏好。我們顯然不能向喜歡用散彈槍的玩家推薦使用狙擊槍。
推薦系統的構建
數據預處理
利用Bungie的API隨機抽取了10,000名玩家的數據。這些數據非常全面:首先是玩家PvP的對戰數據,包括每種武器的擊殺數、平均的擊殺距離、死亡率等表現玩家游戲水平的數據;其次則是關于玩家核心角色信息的數據,我們可以從這些信息了解到玩家們如何分配屬性點。對于屬性點我們主要關注兩類:戰斗屬性(battle stats)和冷卻屬性(cooldown stats)。戰斗屬性(敏捷、韌性、恢復)影響角色的移動、血量和恢復能力。冷卻屬性(智力、力量、戒律)則影響了各種特殊技能的冷卻時間。在剔除一些無關的數據后,我們將部分數據轉換成百分比(考慮到游戲經歷和等級差異很大程度上會影響數據指標)并對各數據列進行標準化轉換。
聚類分析
在向玩家做出推薦之前,我們需要先找到那些具有類似偏好/行為的玩家。不過游戲風格確實很難通過某個單一的維度進行量化,所以我們通過聚類分析為每個角色構建了3個能夠描述其核心游戲風格的數據畫像。
前兩個數據畫像通過K-means聚類了戰斗屬性和冷卻屬性,結果見下圖2和圖3。這兩個熱力圖描述了每個類別在數據上的均值。基于易解讀性和對游戲的了解,我們從戰斗屬性的聚類結果中得出了4類玩家(圖2. Z1~Z4),而從冷卻屬性中則選出了3類玩家(圖3. Z1~Z3)。從圖中可以看到這些不同類別的玩家在屬性分配上有著各自的偏好。
第三個數據畫像則是通過原型分析(archetypal analysis)所獲得的,如圖4. 原型分析是一種無監督學習算法,通常用于挑選數據庫中的極端數列(即原型)。借助原型算法,我們獲得了與K-means等中心聚類算法結果相互關聯的獨特畫像。圖4中獲得的大多數原型都表現出了玩家對特定武器的偏好,例如Z1就代表了喜歡自動步槍的玩家,而Z5就是喜歡用散彈槍的玩家。也有其它的原型表現出了一定的游戲風格,例如Z2表示玩家善于把握使用超級技能的時機并能夠借機大肆收割一波數值。
在這個多重數據畫像的分析中,我們可以得到72(4 x 3 x 6)種游戲風格的組合。而所有的玩家都屬于其中一種。
推薦系統的框架
我們將通過是三個數據畫像的交集來完成推薦系統的搭建,如下圖5。數據畫像之間的每個交集都是一個可以向其他玩家進行推薦的玩家模板。為了便于理解,接下來我們將借助如何為玩家X做出推薦的場景來解釋這個推薦系統。
交集區域1代表了在所有方面都和玩家X相類似的一群人---即與X共享同一種組合畫像的其它玩家。換句話說就是,如果玩家X在戰斗屬性分配行為上類屬于Z1、冷卻屬性類屬于Z2、武器風格屬于Z5,那么交集區域1代表了所有在三種數據畫像中具有Z1 x Z2 xZ5特點的玩家。在這個玩家池中我們能夠找到那些有著高KDA或者高戰斗評價(Bungie對PvP對戰表現的評級系統)的玩家,看看他們都使用什么武器,然后向玩家X進行推薦。通過這種方法能夠讓我們使用協同過濾的方式向玩家進行推薦,又同時能夠保持玩家自有的游戲風格。
這個推薦系統的優點還體現在這樣的情況中:玩家X可能并不希望從與其完全相似的玩家那里獲得推薦。假設說玩家X希望我們能夠推薦如何進行冷卻屬性的分配。如果我們只考慮交集區域1,那么我們所推薦的行為可能正是玩家X正在做的事情,這種推薦當然完全沒有意義。所以在這種情況下,我們就可能看看交集區域2的情況,這部分的數據重疊并沒有涉及到冷卻屬性。因此,我們從這個交集區域中選擇出來的推薦模板就與玩家X有著相同的戰斗屬性和武器風格,但在冷卻屬性的分配上有所不同。這個推薦過程同樣適用于其它的交集區域。
理論上,我們這個基于多重數據畫像的推薦系統中的“數據畫像”數目并沒有具體的限制,只要你的游戲能夠產出相應的行為數據。這種推薦系統靈活地整合了游戲風格的不同方面,也同時考慮到了玩家自身所希望得到的提升和改變。
在Reddit上去驗證和評估
我們可以有幾個辦法來驗證我們的推薦系統:最好的方式當然是對一部分玩家進行長期追蹤的縱向研究,來觀察和評估他們游戲水平的提升是因為推薦系統或是因為熟練所導致的。然而,我們的時間是很有限的,而且縱向研究通常需要招募一批有意愿參與的玩家,還會消耗很多的資源。所以我們最終決定做一次定性評估來驗證推薦系統的有效性。
在調研玩家之前,我們得先找到他們才行。Reddit就是一個天然的樣本庫。其子版塊r/destinythegame就是一個完全由《命運》的玩家所組成的活躍社區。我們在該論壇上發了個貼,然后邀請感興趣的玩家參與我們的調研,報酬則是免費的《命運2》。在收到大概50個回復之后,我們收集了玩家的角色名稱,然后從API中調取了相應的數據。把這些數據放進推薦系統中過一遍之后,我們就得到了針對每個玩家所生產的推薦報告,部分內容如圖6所示。
雖然有部分玩家對推薦系統持有保留意見,但總體上我們獲得的反饋是非常積極的。在所有的反饋中,有80%的玩家都認為推薦系統對他們是有幫助的而且會嘗試我們的推薦。其中多數玩家表示很享受從相似的玩家身上學習,以及對嘗試推薦的槍械配置進行嘗試。但是由于玩家們都有著自己的偏好,所以也有一些玩家反饋表示推薦系統的作用有限。這就需要我們回到對玩家個性的考慮了:可能有的玩家就是希望通過持續練習以獲得更好的游戲表現,而不是通過武器推薦。盡管如此,我們的主要論調保持不變:玩家仍然渴望了解他們能夠在哪些方面獲得提升。推薦系統可以幫助回答這一問題,但它可能只對新手有足夠的吸引力,對于已經清楚游戲具細的資深玩家則可能幫助有限。
結語
在本文中,我們介紹了如何建立一個推薦系統以幫助《命運》的玩家提升其游戲表現:通過對其武器裝備和屬性點分配做出推薦。其中的關鍵在于做出推薦的時候仍需要考慮到玩家自身的游戲偏好。為此,我們首先建立用于描述玩家游戲風格和屬性偏好的數據畫像。然后我們的混合推薦系統就從數據畫像的交集區域中選擇具有更高戰斗評價的玩家來形成推薦的模板。通過對在線社區Reddit中部分玩家的調研,我們發現推薦系統能夠成為玩家的重要助力。我們日后可能會對這一推薦系統進行縱向研究以長期追蹤并驗證其效果。另外,雖然我們的推薦系統是基于《命運1》的數據所完成的,但在《命運2》中我們也將采用類似的方法為其建構推薦系統。
利用數據分析系統幫助玩家提升其游戲體驗將不僅僅只對《命運》這種游戲的體驗有著重要的提升作用,同時也將對電競類游戲產生重要影響。數據和分析對游戲行業的影響正在不斷擴大,而作為終身玩家的我們也非常高興看到這一趨勢。
PS. 老實說... 作為離開學校就忘記了大部分數學知識的我 不知道為什么最近總在翻譯數據類的文章... 另外,雖然是同一個/批作者,但這篇文章的內容其實來源于論文:Controlling the Crucible:?A Novel PvP Recommender?Systems Framework for Destiny。