
一、英雄聯盟如何指揮團戰
英雄聯盟如何指揮團戰?AI幫你做決策
英雄聯盟是一個需要默契團隊配合的多人對戰游戲。在瞬息萬變的戰斗中,如何做出正確的決策非常重要。數據分析師 Philip Osborne提出了一種利用人工智能技術提升英雄聯盟中團隊決策水平的方法,并將其開源。該方法不僅參考了大量真實游戲的統計結果,也將當前玩家的偏好計算在內。
該項目由三部分組成,旨在將 MOBA游戲《英雄聯盟》的對戰建模為馬爾科夫決策過程,然后應用強化學習找到最佳決策,該決策還考慮到玩家的偏好,并超越了簡單的「計分板」統計。
作者在 Kaggle中上傳了模型的每個部分,以便大家更好地理解數據的處理過程與模型結構:
第一部分:第二部分:第三部分:
目前這個項目還在進行當中,我們希望展示復雜的機器學習方法可以在游戲中做什么。該游戲的分數不只是簡單的「計分板」統計結果,如下圖所示:
動機和目標
英雄聯盟是一款團隊競技電子游戲,每局游戲有兩個團隊(每隊五人),為補兵與殺人展開競爭。獲得優勢會使玩家變得比對手更強大(獲得更好的裝備,升級更快),一方優勢不斷增加的話,獲勝的幾率也會變大。后續的打法和游戲走向依賴于之前的打法和戰況,最后一方將摧毀另一方的基地,從而贏得比賽。
像這種根據前情建模的情況并不新鮮;多年來,研究人員一直在考慮如何將這種方法應用于籃球等運動中(),在這些運動中,傳球、運球、犯規等一系列動作會導致一方得分或失分。此類研究旨在提供比簡單的得分統計(籃球中運動員得分或游戲里玩家獲取人頭)更加詳細的情況,并考慮建模為時間上連續的一系列事件時,團隊應該如何操作。
以這種方式建模對英雄聯盟這類游戲來說更為重要,因為在該類游戲中,玩家補兵和殺人后可以獲得裝備并升級。一個玩家拿到首殺就可以獲取額外金幣購買更強的裝備。而有了這些裝備之后,該玩家變得更加強大進而獲取更多人頭,如此循環,直到帶領其隊伍獲取最后的勝利。這種領先優勢被稱為「滾雪球」,因為該玩家會不斷積累優勢,不過很多時候,該玩家在游戲中所在的隊伍并不一定是優勢方,野怪和團隊合作更為重要。
該項目的目標很簡單:我們是否可以根據游戲前情計算下一步最好的打法,然后根據真實比賽數據增加最終的勝率。
一場游戲中影響玩家決策的因素有很多,沒那么容易預測。不論收集多少數據,玩家獲得的信息量始終多于任何一臺計算機(至少目前如此!)。在一場游戲中,玩家可能超水平發揮或發揮失常,或者偏好某種打法(通常根據他們選擇的英雄來界定)。有些玩家自然而然地會變得更加好斗,喜歡殺戮,有些玩家則比較被動一直補兵發育。我們進一步開發模型,允許玩家根據其偏好調整建議的打法。
讓模型「人工智能化」
在第一部分中,我們進行了一些介紹性的統計分析。假設隊伍在比賽中補到第一個和第二個兵,我們能夠計算出獲勝的概率,如下圖所示。
有兩個組成部分,使我們的項目超越簡單的統計的人工智能:
在未預先設想游戲概念時,模型會學習哪些行動是最好的。第二,它試圖了解玩家對影響模型輸出的決策的偏好。
我們定義馬爾可夫決策過程及收集玩家喜好的方式會決定模型學習和輸出的內容。
根據匹配統計信息對馬爾科夫決策過程進行預處理和創建
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》,該論文闡釋了如何更加詳細地將反饋映射出來。
反饋的收集方式決定了我們的模型能有多成功。依我之見,我們這么做的最終目標是為玩家的下一步決策提供最佳實時建議。如此一來,玩家就能從根據比賽數據算出的幾條最佳決策(根據獲勝情況排序)中做出選擇。可以在多個游戲中跟蹤該玩家的選擇,以進一步了解和理解該玩家的偏好。這也意味著,我們不僅可以追蹤決策的結果,還能預測該玩家的意圖(該玩家試圖拆塔結果卻被殺了),甚至還能為更高級的分析提供信息。
這樣的想法可能造成團隊成員意見不符,也可能讓游戲變得沒那么令人興奮。但我認為這樣的想法可能對低水平或者常規水平的玩家有益,因為這種水平的游戲玩家難以清楚的溝通游戲決策。這也可能幫助識別「毒瘤」玩家,因為團隊指望通過投票系統來統一意見,然后就能看出「毒瘤」玩家是不是一直不遵循團隊計劃,忽略隊友。
實時游戲環境中的模型推薦投票系統示例
二、怎么玩《英雄聯盟》
1、基礎篇:
在一場比賽中,對玩家而言最重要的有三點,即經濟,經驗和視野。經濟,顧名思義,可以有效提升你的裝備;經驗則可以用來提升你的等級,而視野呢,則可讓你對于敵軍的動向了如指掌。
2、升級篇:
總有朋友問我,明明是同樣的英雄,為啥我就是打不過對手?
為啥?因為你等級沒人家高呀!人家都提升到13級了,你才11級,能打得過對手才怪呢。等級更高的英雄,更占據屬性優勢,而屬性優勢其實就是從你日常打小兵,刷野怪得來的,因為這些與你的經濟和經驗密切相關。更高的等級就相當于更多的經驗,更好的裝備就意味著豐富的金錢。
等級和裝備的提升,就能提升你的技能屬性,從而殺敵更帶勁。雖然在上文中我們已經提及如何擊殺小兵更易獲得經驗和金錢,但在此我想要更全面的來聊聊控線的問題。
在擊殺敵方小兵的時候,絕不是全部擊殺就是最好的決策,有大神統計過,想要控制兵線,在擊殺敵方小兵時留下6個(如若對面兵線有炮車,則留下4個),這個數量的小兵會一直卡在你的塔前。
三、英雄聯盟獎勵計劃是什么意思
《英雄聯盟》獎勵計劃是京東msi奪冠活動。
英雄聯盟獎勵計劃是為了慶祝本次MSI季中賽LPL戰區獲得冠軍而獲得的福利,福利內容是體驗163個英雄和163個皮膚,本次活動持續的時間:5月25日17:00~5月28日23:59(目前活動已經結束)英雄聯盟獎勵計劃在以后還是有機會返廠出現的?,F在雖然已經結束,之后一般還會有別的獎勵出現。
這次活動的可以讓玩家體驗到163個英雄(全英雄)+163個皮膚,相當于可以免費體驗到每個任何英雄的一個皮膚,可以讓玩家有更好的游戲體驗。后續的獎勵計劃還是可以返廠的,只要后續LPL賽區獲得大型賽事的冠軍都有機會返廠。
《英雄聯盟》新手攻略:
1、了解游戲規則和基本機制
在開始玩英雄聯盟之前,需要了解游戲的基本規則和機制。建議花一些時間學習游戲的術語、英雄技能和游戲模式。
2、熟悉您所選的英雄
可以選擇不同類型的英雄。建議首先熟悉所選的英雄的技能和屬性,并掌握如何使用它們。
3、練習最基本的技能
最基本的技能包括:移動、攻擊、技能釋放、控制視野、購買裝備等。練習這些基本技能,可以更自如地控制英雄并作出更好的決策。
4、與隊友合作
英雄聯盟是一個團隊游戲,隊伍中每個人都有自己的角色和職責。與隊友合作可以更容易獲得勝利。需要學會與隊友溝通,并嘗試盡可能多的協作。


