英雄聯盟如何指揮團戰?AI幫你做決策

2020-12-05 機器之心Pro

選自TowardsDataScience,作者:Philip Osborne,機器之心編譯。

英雄聯盟是一個需要默契團隊配合的多人對戰遊戲。在瞬息萬變的戰鬥中,如何做出正確的決策非常重要。最近,數據分析師 Philip Osborne 提出了一種利用人工智慧技術提升英雄聯盟中團隊決策水平的方法,並將其開源。該方法不僅參考了大量真實遊戲的統計結果,也將當前玩家的偏好計算在內。

該項目由三部分組成,旨在將 MOBA 遊戲《英雄聯盟》的對戰建模為馬爾科夫決策過程,然後應用強化學習找到最佳決策,該決策還考慮到玩家的偏好,並超越了簡單的「計分板」統計。

作者在 Kaggle 中上傳了模型的每個部分,以便大家更好地理解數據的處理過程與模型結構:

第一部分:https://www.kaggle.com/osbornep/lol-ai-model-part-1-initial-eda-and-first-mdp第二部分:https://www.kaggle.com/osbornep/lol-ai-model-part-2-redesign-mdp-with-gold-diff第三部分:https://www.kaggle.com/osbornep/lol-ai-model-part-3-final-output

目前這個項目還在進行當中,我們希望展示複雜的機器學習方法可以在遊戲中做什麼。該遊戲的分數不只是簡單的「計分板」統計結果,如下圖所示:

動機和目標

英雄聯盟是一款團隊競技電子遊戲,每局遊戲有兩個團隊(每隊五人),為補兵與殺人展開競爭。獲得優勢會使玩家變得比對手更強大(獲得更好的裝備,升級更快),一方優勢不斷增加的話,獲勝的機率也會變大。因此,後續的打法和遊戲走向依賴於之前的打法和戰況,最後一方將摧毀另一方的基地,從而贏得比賽。

像這種根據前情建模的情況並不新鮮;多年來,研究人員一直在考慮如何將這種方法應用於籃球等運動中(https://arxiv.org/pdf/1507.01816.pdf),在這些運動中,傳球、運球、犯規等一系列動作會導致一方得分或失分。此類研究旨在提供比簡單的得分統計(籃球中運動員得分或遊戲裡玩家獲取人頭)更加詳細的情況,並考慮建模為時間上連續的一系列事件時,團隊應該如何操作。

以這種方式建模對英雄聯盟這類遊戲來說更為重要,因為在該類遊戲中,玩家補兵和殺人後可以獲得裝備並升級。例如,一個玩家拿到首殺就可以獲取額外金幣購買更強的裝備。而有了這些裝備之後,該玩家變得更加強大進而獲取更多人頭,如此循環,直到帶領其隊伍獲取最後的勝利。這種領先優勢被稱為「滾雪球」,因為該玩家會不斷積累優勢,不過很多時候,該玩家在遊戲中所在的隊伍並不一定是優勢方,野怪和團隊合作更為重要。

該項目的目標很簡單:我們是否可以根據遊戲前情計算下一步最好的打法,然後根據真實比賽數據增加最終的勝率。

然而,一場遊戲中影響玩家決策的因素有很多,沒那麼容易預測。不論收集多少數據,玩家獲得的信息量始終多於任何一臺計算機(至少目前如此!)。例如,在一場遊戲中,玩家可能超水平發揮或發揮失常,或者偏好某種打法(通常根據他們選擇的英雄來界定)。有些玩家自然而然地會變得更加好鬥,喜歡殺戮,有些玩家則比較被動一直補兵發育。因此,我們進一步開發模型,允許玩家根據其偏好調整建議的打法。

讓模型「人工智慧化」

在第一部分中,我們進行了一些介紹性的統計分析。例如,假設隊伍在比賽中補到第一個和第二個兵,我們能夠計算出獲勝的概率,如下圖所示。

有兩個組成部分,使我們的項目超越簡單的統計的人工智慧:

首先,在未預先設想遊戲概念時,模型會學習哪些行動是最好的。第二,它試圖了解玩家對影響模型輸出的決策的偏好。

我們定義馬爾可夫決策過程及收集玩家喜好的方式會決定模型學習和輸出的內容。

根據匹配統計信息對馬爾科夫決策過程進行預處理和創建

AI 模型 II:引入打錢效率

我從第一個模型的結果中意識到,我們沒有考慮到負面和正面事件對未來都可能產生累積的影響。換句話說,無論在當時時間點之前還是之後,當前的 MDP(馬爾科夫決策過程)概率都有可能發生。在遊戲中,這是不正確的。一旦落後,殺人、拿塔、補兵都會變得更難,我們需要考慮到這一點。所以,我們引入隊伍間的打錢效率來重新定義狀態。當前目標是建立一個定義狀態的 MDP,這個狀態可能是事件發生順序,或者隊伍是否落後或領先。我們將金幣差值分為以下幾類:

相等:0–999 金幣差值(平均每個隊員 0-200)略落後/領先:1,000–2,499(平均每個隊員 200–500)落後/領先:2,500–4,999(平均每個隊員 500–1,000)遠遠落後/遙遙領先:5,000(平均每個隊員 1,000+)

我們也需要考慮沒有任何事件發生的情況,並把其歸為『無』事件中,以保證每分鐘都有事件發生。這個『無』事件表示一個隊伍決定拖延遊戲,以將那些在早期遊戲中更善於獲得金幣的隊伍區分出來,而不需要殺死(或通過小兵殺死)他們。然而,這樣做也會大大增加數據量。因為我們為匹配可用匹配項已經添加了 7 個類別,但如果我們能訪問更常規的匹配項,那數據量就已足夠了。如前所述,我們可以通過以下步驟來概述:

預處理

1. 輸入殺人數、塔數、野怪和金幣差值的數據。

2. 將『地址』轉為 ID 特性。

3. 移除所有舊版本的遊戲。

4. 從金幣差值開始,按照事件的時間、匹配 ID 和與以前一致的團隊進行合計。

5. 追加(助攻的)人頭數、怪數和塔數到此末尾,為每個事件創建行並按發生的時間對事件進行排序(平均人頭數)。

6. 添加「事件序號」特性,顯示每次匹配中的事件順序。

7. 為行上的每個事件創建一個統一的「事件」特性,包括人頭、塔、怪或者『無』事件。

8. 每次匹配時將其轉化為行,現在是用列來表示每個事件。

9. 只考慮紅隊的視角,以便合併列,視藍隊增益為負紅隊增益。同時增加紅隊的遊戲長度和結果。

10. 將所有空白值 (即在前面步驟中結束的遊戲) 替換為匹配的遊戲結果,以便所有行中的最後一個事件是匹配結果。

11. 轉換為 MDP,其中 P(X_t | X_t-1)用於每個事件數和由金幣差值定義的狀態之間的所有事件類型。

馬爾科夫決策過程輸出

使用簡易英語的模型 V6 偽代碼

我們最終版本的模型簡單總結如下:

1. 引入參數

2. 初始化啟動狀態、啟動事件、啟動操作

3. 根據 MDP 中定義的首次提供或基於其發生可能性的隨機選擇操作

4. 當行動贏或輸時,結束

5. 跟蹤事件中所採取的行動和最終結果(贏/輸)

6. 根據最終結果所用的更新規則來更新操作

7. 重複 x 次上述步驟

引入獎勵偏好

首先,我們調整模型代碼,把獎勵歸入回報計算中。然後,當我們運行模型時,引入了對某些行為的偏置,現而不是簡單地使獎勵等於零。

在第一個例子中,我們顯示了如果對一個動作進行積極的評價,會發生什麼;在第二個例子中,顯示對一個動作進行消極的評價,會發生什麼。

如果我們積極評價動作『+KILLS』的輸出

如果我們消極評價動作『+KILLS』的輸出

更真實的玩家偏好

現在我們可以嘗試近似模擬玩家的真實偏好。在這個案例中,我們隨機化一些獎勵以允許遵守以下兩條規則:

玩家不想錯過任何補兵玩家優先補兵而不是殺人

因此,我們對人頭和補兵的獎勵都是最小值-0.05,而其它行動的獎勵都在-0.05 和 0.05 之間隨機生成。

隨機化玩家獎勵後的輸出。

隨機化玩家所有動作的獎勵後所獲得的輸出。

最終輸出,顯示給定當前金幣差值狀態和分鐘的每個動作的值

總結及玩家對獎勵的反饋

我過分簡化了某些特徵(如「kills」實際上並不代表人頭的數量),數據也不太可能表示正常的匹配。然而,我希望本文能夠清晰地展現一個有趣的概念,鼓勵更多人討論這一領域今後的走向。

首先,我將列出在實現之前需要作出的重要改進:

1. 使用更多能夠代表整個玩家群體(而不只是競爭性比賽)的數據計算 MDP。

2. 提高模型效率,將其計算時間控制在更合理的範圍。蒙特卡洛以耗時著稱,因此我們將探索更高效的算法。

3. 採用更高級的參數優化以進一步改進結果。

4. 捕捉、映射原型玩家對更真實的獎勵信號的反饋。

我們引入了針對影響模型輸出而給予的獎勵,但該如何獲得獎勵?我們可以考慮幾種方法,但是根據我之前的研究,我認為最好的方法就是考慮一種既涉及到行動的個體質量又考慮到轉變質量的獎勵。

這變得越來越複雜,我不會在此文中展開,但簡而言之,我們想為玩家匹配決策,其中下一個最佳決策取決於最新情況。比如,如果一隊玩家將對方全部殲滅,他們可能會去拿大龍。我們的模型已經將一個序列中事件發生的概率考慮在內,因此,我們也應該用同樣的方式思考玩家的決策。這一想法來自一篇論文《DJ-MC: A Reinforcement-Learning Agent for Music Playlist Recommendation》,該論文闡釋了如何更加詳細地將反饋映射出來。

反饋的收集方式決定了我們的模型能有多成功。依我之見,我們這麼做的最終目標是為玩家的下一步決策提供最佳實時建議。如此一來,玩家就能從根據比賽數據算出的幾條最佳決策(根據獲勝情況排序)中做出選擇。可以在多個遊戲中跟蹤該玩家的選擇,以進一步了解和理解該玩家的偏好。這也意味著,我們不僅可以追蹤決策的結果,還能預測該玩家的意圖(例如,該玩家試圖拆塔結果卻被殺了),甚至還能為更高級的分析提供信息。

當然,這樣的想法可能造成團隊成員意見不符,也可能讓遊戲變得沒那麼令人興奮。但我認為這樣的想法可能對低水平或者常規水平的玩家有益,因為這種水平的遊戲玩家難以清楚的溝通遊戲決策。這也可能幫助識別「毒瘤」玩家,因為團隊指望通過投票系統來統一意見,然後就能看出「毒瘤」玩家是不是一直不遵循團隊計劃,忽略隊友。

實時遊戲環境中的模型推薦投票系統示例

相關焦點

  • 英雄聯盟:什麼叫ADC?怎麼才能成為一位優秀的AD選手?
    縱觀英雄聯盟的各條線路,唯一的雙人路就是下路。下路也是妹子最多的一條線路。要想成為一名合格的帶妹高手,下路的攻略你必須做到心中有數。下路的雙人線,有兩個職位,一個叫ADC,一個叫作輔助。如果會玩的輔助都會幫ADC墊刀,什麼叫作墊刀?意思就是,對每一個進入防禦塔的遠程小兵,都平A一下,這樣在防禦塔攻擊遠程小兵兩下以後,ADC只需要再點一下,就可以解決掉遠程小兵。如果沒有輔助幫你進行墊刀,你一定要記得在防禦塔攻擊遠程小兵之前平A它一下,防止漏刀。
  • 英雄聯盟:逆風局,被打蹦了咋辦?教你一招!
    顧名思義英雄聯盟就是一個推塔遊戲,你塔推完了你就贏了。那如果在遇到上路、中路、下路、打野、輔助其中有一個蹦了怎麼辦呢?也不需要很著急,心態是最重要的。如果你心態不好承受不了隊友吐槽你兩句,你選擇掛機,那遊戲就很難進行下去了。所以心態是很重要的。
  • 團戰猛如虎!SN用操作戰勝TES!G2:小獅子還是那麼強!
    英雄聯盟2021LPL春季賽迎來了揭幕戰,是來自TES與SN之間的強強對話,兩支隊伍在上一次交手還是在S10全球總決賽,兩支隊伍在半決賽會面,最終SN憑藉選手的個人操作和狀態,成功戰勝了TES闖入了決賽!如今已經過了有一段時間了,兩支隊伍再度相遇,兩邊輔助選手都已經換上了新人!
  • 英雄聯盟史上的十大輔助選手
    關於英雄聯盟裡的輔助位置,在比賽場上的功能絕非是三言兩語就可以完全描述。某種程度來說,輔助位置一定是承擔了BP階段結束之後,使陣容決勝思路更加成立的隱藏教練,是將指揮權攬下的司令塔。視野控制、全圖遊走、把控開團、保護C位,優秀的輔助需要做到很多事情。某一樣做得不夠好,他可能就會成為路人口中的背鍋俠。
  • 《英雄聯盟》S6總決賽Impact不復神威 北美之光熄滅
    原標題:S6總決賽Impact不復神威 北美之光熄滅   2016《英雄聯盟》全球總決賽淘汰賽階段的爭奪於10月14日上午6點正式拉開大幕。在首場四分之一比賽中,D組頭名SSG用三局乾淨利落的勝利,以3:0的比分戰勝C9,成為了2016全球總決賽第一支晉級四強的戰隊。
  • 衝鋒陷陣,英雄聯盟上單進階教學,TP需要注意哪些細節?
    04團戰定位與拉扯小技巧說完了兵線與視野這些關於線上的,現在來講講團戰。主要根據選擇什麼類型的上單,團戰就需要打出什麼樣的效果。前排坦克型——開團與承傷如果你是選擇的肉盾坦克這種英雄,找開團的機會和吸收對面的傷害就是你的主要職責了。最簡單的例子就比如石頭人,大招找機會開到對面的C位,然後承受傷害讓隊友進行輸出和收割。
  • 英雄聯盟遊走機器人,當你聽到掠食者的聲音時,你已經逃不掉了
    蒸汽機器人布裡茨相信各位英雄聯盟玩家都接觸過,這個英雄的技能比較單一,線上很弱勢,打團作用也不比其他輔助高,但這個英雄卻能夠創造奇蹟,這也是為什麼在青銅白銀局經常能夠看到他的身影的原因。為什麼機器人在低端局這麼吃香呢?因為他有一個特別噁心的技能:機械飛爪。
  • 英雄聯盟手遊上單英雄強度排行,酒桶惡霸無腦狂戰有點強!
    今天我就給大家盤點一下英雄聯盟手遊當前版本上單英雄的強度排行,幫助大家更快更好的排位上分。 現在雲頂之弈手遊和英雄聯盟手遊的安卓和蘋果版本都已經出來了,還不知道怎麼安裝註冊的朋友可以私信我,在線幫助你哦!
  • 英雄聯盟:手殘黨福音 不需要難度操作也可以贏得漂亮的四個英雄
    英雄聯盟是個好遊戲,好玩的英雄不勝其數,但是很多厲害的英雄操作難度都較高,一般玩家很難應付過來。好遊戲火到現在不是沒有道理的:設計師早已考慮到所有玩家,就算你手殘,沒辦法打出令人眼花繚亂的操作,這些英雄的存在,也能讓你感受到強者的快樂。
  • 團戰永動機-蔡文姬細節教學
    蔡文姬雖然在高端局中的出場率不高,但是在低分段中是一名輔助位上分首選英雄!選擇蔡文姬能夠完美的克制敵方的消耗型英雄,只要我奶得夠快,你就無法消耗我方輸出位的血量,能夠成為輸出位背後最牢靠的一名英雄。今天十七就來給大家介紹一些蔡文姬的玩法小技巧。
  • 英雄聯盟:新英雄「妮可」全技能預覽,隨意變身註定天秀!
    英雄聯盟已經在國服上線了八年了在這八年的時間裡英雄聯盟的英雄從之前的20多個英雄已經增長到了141個英雄,但是最近有新的消息,英雄聯盟在美服的測試服PBE中出現了一個新的英雄將會成為聯盟中的第142個英雄了,全名為「奇異變色龍妮可」這也將是2018年的最後一個新英雄了!
  • 英雄聯盟收入成PC端第一,是什麼讓它經久不衰?
    根據資料來看,在4月份的時候,英雄聯盟的收入又一次排在了PC端的第一位,成績可以說是相當亮眼了。要知道,英雄聯盟美服最早開服的時間可是在2009年,距今大概11年了。任何遊戲都有高潮期和低谷期,但是對於英雄聯盟來說,它依然保持著足夠的生命力,是什麼讓它經久不衰呢?觀賞性玩英雄聯盟時,大家覺得最震撼人心的時刻是什麼時候呢?
  • LOL英雄聯盟雷克頓_52PKLOL英雄聯盟專區- lol.52pk.com
    更新時間:[07-19] 隨著各大賽區的聯賽火熱進行,英雄聯盟9.14版本率先在美服上線。據悉,本次改動是世界賽前最大的一次改動,目的就是為了在世界賽...
  • 英雄聯盟手遊輔助玩什麼英雄好 強勢輔助英雄選擇推薦
    在英雄聯盟手遊中,不同的英雄適合走的路線是不一樣的,很多新手玩家都不知道什麼英雄適合打輔助,下面我就帶來英雄聯盟手遊輔助英雄的推薦,希望能對玩家們有所幫助。 布隆: 保護隊伍能力驚人、留人能力也挺強,是職業比賽中登場率非常高的英雄。還可以開發一些AD玩法,那鬼畜的小手不停的敲打著敵人,不過也就虐菜了。
  • 英雄聯盟:最需要操作的五個英雄,手殘黨玩不來
    英雄聯盟是一款競技類遊戲,既然是競技類遊戲,那麼操作就非常重要了,雖然英雄聯盟中很多英雄都是不怎麼需要操作,然而有些英雄卻是非常要操作,有操作和沒操作就是兩個英雄,就拿亞索來說,不會玩的人,就只會E來E去,最後E進人堆中,會玩的人,就是各種用E來躲技能,除了平A和指向性技能,完全打不中
  • 英雄聯盟:官方確定重做英雄,冷門烏迪爾再次上榜
    19:24:05 來源: 衝鋒弟弟 舉報   就在拳頭遊戲年度直播之前,拳頭遊戲官方在英雄聯盟的官推上發布了一個
  • 英雄聯盟:最溫柔的死亡方式,致命的毒液居然來自溫柔的最
    在英雄聯盟中有這麼一個奇怪的現象,就是無論什麼英雄是什麼造型什麼種族的英雄讀是需要穿戴鞋子的,但是這個現象並不是英雄聯盟中所有的英雄都遵守的,有這麼一個英雄就是不在五行之中,超脫三界之外的整個英雄聯盟之中就她一個人比較獨特她居然不需要穿鞋子,咳咳不是不需要他是不能穿這個想法不知道是那個腦洞打開的設計師設計出來的一個非常有趣的玩法
  • 英雄聯盟:這些英雄一級血量就很多,熔巖巨獸上榜
    坦克英雄作為《英雄聯盟》中必不可少的一種英雄類型,一般是作為承受團隊傷害,保護輸出的存在,很多坦克英雄在一級就可以承受很多的傷害,常常被用來打「一級團」,那麼到底哪個英雄才是一級最肉的英雄呢?在河流之主這個英雄剛上線時,護盾效果是不會衰減的,在上路的強勢可想而知,像諾手、潘森這種強勢英雄在前期都拿河流之主沒有任何辦法,改版之後的河流之主的護盾雖然只有三秒鐘的時間,但是三秒鐘足以決定一場團戰的勝利了。
  • 《英雄聯盟》手遊熔巖巨獸屬性介紹 玩法技巧分享
    在英雄聯盟裡有不少威猛的英雄,熔巖巨獸就是其中的一個了。在遊戲裡他的作用也非常大,在團戰的時候有驚人的控制效果。今天小編給大家帶來了lol手遊裡石頭人的玩法介紹,快來一起了解一下吧! 熔... 大家好!在英雄聯盟裡有不少威猛的英雄,熔巖巨獸就是其中的一個了。
  • 《英雄聯盟手遊》上單璐璐怎麼玩 lol手遊上單露露玩法思路了解一下
    川北在線核心提示:原標題:《英雄聯盟手遊》上單璐璐怎麼玩 lol手遊上單露露玩法思路了解一下 英雄聯盟手遊上單璐璐怎麼樣?英雄聯盟手遊中剛登場了新英雄璐璐,有不少玩家實驗以後發現上單璐璐是非常可行的,那麼英雄聯盟手遊上單璐璐怎麼玩呢?