開發幕後:在《英雄聯盟》打造零作弊環境

解決機器人、腳本以及代打玩家,維護美好的遊戲環境。

如果你現在在看這篇文,那代表你大概還沒被《英雄聯盟》封過帳號,你我也井水不犯河水。我們和對手一樣,都必須暗中行動;作弊程式的提供者得躲過我們的偵測,而我們也得避免引起他們的注意。長期躲在黑暗中讓我們寫程式的功力大增,同時也保護我們不受那些作弊鬼的侵害。

總而言之,我們是守護愛與和平的反作弊團隊。趁著《英雄聯盟》賽季剛結束,我們想要:1.分享最讓我們頭痛的作弊方法及相關數據;2.提醒大家我們喜歡可以公平競爭的遊戲;3.想辦法創造ban掉最多作弊玩家的世界紀錄(拜託快讓我們上金氏世界紀錄)。

反作弊團隊是什麼?

反作弊團隊的目標通常是保護遊戲競技環境的公平性,以及研究調查各式各樣會造成不公平優勢的方法。我們也負責判斷這些方法是遊戲本身的設計(例如馬爾札哈),或是違反規定的作弊行為(例如為了酷炫飾框叫人幫你打上金牌)。

對付作弊玩家的方法百百種,這些方法通常可以分為以下三類:預防、偵測及制止……也就是我們所謂的正義金三角™

  1. 預防:預防的概念是設計並實施讓玩家無法作弊的功能或方法,讓我們不必賭玩家的道德觀念有沒有堅定到不會去「走捷徑」。
  2. 偵測:防不住就得用抓的。偵測的方法有很多種,從不斷演進的用戶端記憶體偵測到最尖端的玩家表現機械學習模型都有。
  3. 制止:有時候就是得祭出正義的鐵鎚。雖然可能要ban好幾次才能讓作弊玩家意識到問題的嚴重性,但這類帶有懲罰性質的方法除了可以促使玩家自制,也能為受到影響的其他玩家出一口氣。

其他技術及策略層面的介紹可以去看看我們Michael VanKuipers的技術專文,他在裡面講了不少加密跟除錯的東西。

為什麼需要反作弊團隊?

因為有些人就是愛作弊。大家都喜歡當贏家,或者是說喜歡獲勝所帶來的優越感;作弊程式的賣家想要靠高超技術所帶來的名聲地位來讓自己賺大錢(有時候則是為了網路上的名氣)。我們的目的就是確保不會有人用這件事來賺錢,同時讓玩家不需要靠這些惡意軟體也可以公平競爭。

換句話說,如果我們想要讓《英雄聯盟》成為一項認真的競技運動(這也是我們的目標),一切對戰都得照規矩來。如果獎盃可以用錢換,那勝利可說是一文不值。

反作弊團隊是誰?

我們是一群穿著大衣的駭客,坐在一堆螢幕前面,畫面上都是程式算繪出來的openGL長方形。反作弊團隊的成員有幾個前作弊程式開發者(這樣團隊才有實地經驗),一些數據科學家(這樣做出來的圖表才好看)以及一兩個分析師(這樣才能把作弊玩家ban到天荒地老)。

我們集結了各路好手,為遊戲帶來強力的防護及偵測技術。

反作弊團隊在哪裡?

就在你身後。

2018有什麼新鮮事?

我們最近飛去深圳跟騰訊的大師級反作弊團隊一起接受培訓。中國作弊的風氣給團隊帶來了宛如地獄般的挑戰,但我們與其聯手開發了新的方法,可以預先揪出外掛程式的來源。從突擊代打服務到隱密的偵測系統,我們正在為競技型遊戲立下全球新標準。

《英雄聯盟》的作弊情形

公告結束,接下來講點刺激的吧!

有時候玩家會發現自己因作弊而被ban帳號(一定非常讓爸媽失望),原因通常分為三種:腳本、代打、機器人。

使用腳本

《英雄聯盟》是一款伺服器授權的遊戲,所有的用戶端都會連接到一個管理遊戲狀態的程式,這背後的意義就是大家遇到的不會是可以開無雙或是用上帝視角看地圖的那種超扯外掛(因為我們可以直接處理掉),而是試圖讓操作自動化的作弊程式。使用腳本可說是MOBA遊戲最風行的作弊方法。所謂的「腳本」就是可以幫你操作角色,或是反制敵人技能的外部程式(例如自動瞄準、追蹤冷卻時間或輸入combo),讓玩家可以達成超出人類能力範圍的作弊表現。

「沒有人想看到一個只會按空白鍵的人掛著鑽石牌階的飾框。」

讓遊戲運行腳本的方法有點複雜。首先,駭客會用特殊的軟體以及自己的才華分解遊戲的用戶端,在判斷出遊戲的重要程式碼在哪裡後,他們會用自己的程式碼來標註出這些地方,最後,他們會把這些惡意的程式碼弄進遊戲裡,讓其他開發者可以用API寫出自動腳本或各個英雄的專屬腳本。以為這點小事無傷大雅的作弊玩家則會在遊戲裡跑這些腳本,讓他們的朋友以為自己很會風箏。

我們來看看《英雄聯盟》過去幾年來有多少玩家在使用腳本吧。

scripting_games_percent_TW.jpg

哪個比較重要:正義鐵鎚的大小?還是揮下去的速度?

綠色的線條代表了每天有腳本玩家的積分對戰比例,這條線隨著時間有走下坡的趨勢,從數據上來看,這是個好現象。將帳號被ban的比例(就是綠線後面那象徵正義的金色)放在一起比較,大家應該會笑出來吧?我的老闆對公開「機密資訊」有點「疑慮」,所以我們沒有公布實際的數字。

其他值得一看的數據還有:

  • 過去三年來,我們ban了世界各地超過七百萬個使用腳本的帳號,其中五百萬個在中國騰訊的負責範圍之內。現在的玩家平均400場積分對戰才會遇到一個沒什麼路用的腳本玩家。
  • 在2018因使用腳本而被ban的玩家只有9%改過自新。平均起來,作弊玩家要被ban 5.1個帳號後才會決定把《英雄聯盟》刪掉。
  • 我們光靠禁用帳號就將使用腳本的比例壓到現在那麼低了(畢竟會作弊的玩家就是會作弊),所以現在的目標要從制止改為預防
「但mirageofpenguins,這樣作弊到底有沒有用啊?幫個朋友問一下。」

很高興你問了這個問題,我們就來討論一下吧。

scripting_winrate_TW.jpg

瀕臨絕種的腳本玩家要飛去南方過冬了。

雖然用看也知道,但我還是為那些數學沒學好的人解釋一下:隨機取樣的平均勝率應該要是50%,所以使用腳本還是能獲得優勢,不過使用腳本的玩家數量下降背後有著幾個有趣的因素。

  • 腳本特別適合用在ADC或卡莎碧雅等操作複雜的英雄身上。為了降低在完美時機施放技能所帶來的優勢,我們故意放寬了某些連發技能(比如說伊芙琳的Q)的判定,讓玩家按的速度可以追上腳本。
  • 為了躲過系統的偵測,腳本開發者就得刻意加上延遲,讓腳本不得不變得更像正常玩家。
  • 我們持續不斷地打擊腳本開發者,讓他們得一直尋找不同的平台及編碼基底。想像一下,你想要讓你的車能夠正常運轉,但有人(就是我)一直偷你車子的零件會發生什麼事。

這不是什麼一蹴可幾的事,但我想我們讓機器人革命延後了至少數十年,所以各位可以繼續安心地用家裡的微波爐了(前提是你家的微波爐不會連到《英雄聯盟》的用戶端)。

代打

爬上金牌有時候是件很累人的事,於是某些心術不正的玩家就會想要叫別人來幫他們爬。代打就是俗稱的「買獎盃」或是「買飾框」。大部分玩家找代打的原因都是為了季末獎勵(高達68%的代打玩家只會爬到金牌V),不過想要讓自己看起來很猛也是原因之一。

「讓朋友知道自己是銀牌也不會怎樣,真正的好朋友會敞開心胸接納你的。」

我親身體驗過在金牌III的積分對戰裡遇到鑽石II玩家是一件多讓人氣餒的事,而且我還遇過更慘的:在白金V晉升戰跟代打上來的玩家排在同一隊。跟程度相當的玩家進行對戰才能獲得良好的遊戲體驗,因此,只要玩家為了提升牌階而使用牌階差距很大的帳號,就會被我們判定為代打。

代打一直以來都很難預防,所以我們主要的目標是偵測明顯犯規的玩家。天機不可洩漏,所以我話不能說得太白。不過簡單來說,我們用代打玩家與代打者之間顯著的操作差異來訓練AI,並設計出了一套演算法。每季只要跑一次,就能從那些沒有資格的玩家手上沒收獎勵。雖然總是會有漏網之魚,但我們只會越來越厲害。

boosting_leagues_TW.jpg

看到季末的數據突然飆升了嗎?那就是想要上金的玩家終於受不了,趁打折找Elo代打的時候。

根據研究顯示,代打玩家數量飆升的原因有以下兩個:

  • 「欸幫我打一下晉升戰啦。」
  • 「欸幫我打個『戰爭英雄 葛雷夫』好不好?」

我們懲罰代打玩家的目標就是讓人沒辦法靠代打賺錢,而在這方面我們還有好長的一段路要走。Ban掉代打玩家的帳號只是治標不治本,從現在開始,我們打算學騰訊強化偵測代打玩家的能力,同時打擊提供代打服務的商人。

使用外掛機器人

沒錯,升級機器人,讓全宇宙的遊戲最頭痛的混帳烤麵包機。《英雄聯盟》是款免費遊戲,也就是說創帳號簡單無比。Main犽宿的玩家需要新的小帳來練習,被我們ban的腳本玩家也「需要」新的帳號才能繼續煩我們。這樣的需求讓30等的空白帳號有了市場。為了讓新玩家能有健全的遊戲體驗,同時讓我們的懲罰能夠打到痛點,我們極力想避免這種事情發生。

「你們到底是從哪弄來那麼多智慧冰箱的?」

於是我們便開始想辦法反制。我們找來了幾個博士生,讓那些宅男搞一堆機器模式來分辨出洗碗機跟人類,這就是最炫最刺激的機器人大戰。我們用玩家的檢舉來訓練AI,所以如果哪天你發現你的對手是台果汁機時,不用懷疑,給他檢舉下去就對了。

隨機單中則成為了無辜的受害者,因為這個模式最短最單純。機器人好設計,經驗值又多,只要衝中路,把招放一放,就可以把英雄典藏罐賺好賺滿。

botting_player_reports_TW.jpg

越少玩家檢舉就代表玩家受到的影響越小,由此可證。

上圖是我們把機器人互相配對之後的結果(行動代號:機器人運動會),而這只是邁向勝利的一顆小墊腳石。我們最終的目標是把這些機器人趕回家電賣場乖乖待好,不過只要不出現在玩家面前,我們也不是不能睜一隻眼閉一隻眼。我們會在玩家買機器人前就把它ban掉,只要能讓這些傢伙滾蛋,要提高伺服器成本我們也在所不惜。

未來展望

以上列出的作弊方法還不是全部,因為作弊玩家總是能找到新的方法。雖然這代表我能保住飯碗,但同時也意味著我們的工作永遠做不完。我們全心全意想要保障玩家的權益,讓大家都能玩到公平的競技遊戲。如果能解決掉作弊玩家,要我們不擇手段大概也無所謂。

「這裡不歡迎不想公平競爭的玩家。」

就是這麼簡單。

各位的留言我們都會看,所以有什麼問題就儘管問,順便告訴我們你們想不想看到更多關於反作弊的文章。如果你最近被ban了,你也可以在留言區抱怨一下,謝謝你給我工作的動力。