tft每日頭條

 > 生活

 > csgo優化網絡穩定性

csgo優化網絡穩定性

生活 更新时间:2025-01-09 15:35:53

編者按:事實上這是幾個月前的一個PPT演講。在GDC 2018上,Valve遊戲工程師John McDonald介紹了度假社用深度學習提高CSGO用戶遊戲體驗的嘗試。之所以說是“提高用戶體驗”而不是“鑒别開挂行為”,是因為V社這次不僅把AI技術用在了反作弊機制上,還對普通玩家心理進行了透徹研究。

csgo優化網絡穩定性(用深度學習檢測CSGO中的開挂行為)1

2018年1月Steam遊戲人數排行前三名

CSGO中的挂

CSGO(中文名《反恐精英:全球攻勢》)是V社于2012年推出的一款第一人稱射擊團隊競技遊戲,它是CS系列的第四部作品,6年來一直深受國内外玩家的歡迎。作為一款FPS遊戲,玩家惡意開挂幾乎是不可能避免的,相比上圖中排名第一的PUBG,其實CSGO裡的挂并沒有多到人神共憤的程度。

但有挂玩家就會生氣,一生氣他們就會抱怨,會用腳投票。

根據John McDonald透露的數據,現在CSGO的月活人數有1240萬,平均日活約300萬,組隊時間平均1-2秒。對于一個已經推出6年的遊戲,保持這樣的數據并穩居Steam榜單前三是不容易的,它離不開開發團隊為玩家打造的遊戲環境。

透視挂

csgo優化網絡穩定性(用深度學習檢測CSGO中的開挂行為)2

鎖頭挂

CSGO是V社自己開發的遊戲,它自帶官方VAC系統,能對開挂者實施高效封禁——但火爆的遊戲背後總伴随經濟利益,許多人針對VAC開發了不少能繞過監控的挂,或是看準V社喜歡秋後算賬的風格找漏洞,既奪走了心存僥幸的玩家的賬号,也毀掉了正常比賽的玩家的遊戲體驗。

時至今日,許多人在調侃CSGO“已涼”時都不忘把“挂太多”拉出來重點批評一下。所謂愛之深、責之切。他們對遊戲的熱愛是真實的,但他們對外挂的憎惡也是深入骨髓的。而令人無奈的一個現實是,制作一個CSGO外挂的成本非常低,如果某人還保留着當初《半條命2》的外挂,他就會發現這個挂居然也可能繼續在CSGO裡生效。

CSGO和深度學習

2015年,CSGO的Overwatch正式上線(别想歪!我真的沒笑),這是一個監督功能,允許獲得裁決資質的選手可以通過觀看疑似作弊選手的Demo來判斷其是否作弊或者調整了遊戲參數。如果玩家發現存在開挂行為,他們可以把Demo提交給協調員進一步審核,之後官方會跟進處理并反饋結果。

Overwatch本身可以初步判斷玩家有沒有開挂,它背後的算法是樸素貝葉斯,系統先為開挂找到一個阈值,然後對結果進行分類。但實踐證明,這個基于樸素貝葉斯的系統太寬容了,它隻能辨别出非常明顯的開挂行為,然後把大多數微妙的Demo——漏網之魚反饋給真人。

對于玩家而言,也許Overwatch頗為雞肋,但在深度學習眼裡,這就成了不可多得的數據來源。

模型簡介

V社開發的反作弊深度學習系統叫VACnet。因為面向序列處理任務,它被設計成一個時間步長為140的GRU RNN,包含一個輸入層(256個神經元)和4個隐藏層(每層256個神經元)。網絡使用的激活函數是ReLU,損失函數是二元交叉熵,優化算法是Adagrad。

VACnet在Overwatch搜集的數據中訓練,其中包含玩家提供的内容和官方收集的内容,是個大型優質數據集。雖然現在也有用深度學習生成數據的方法,但這種做法容易讓神經網絡鑽空子,所以開發人員用的還是真實的遊戲Demo。

模型的輸入不是常規的長向量,這裡他們把140次射擊當做一個序列,按順序記下每個視頻幀的所有信息。這些輸入被稱為(X,y),其中X就是我們常說的特征,它包括用了什麼武器、射擊後的結果、(如果擊中)目标距離有多遠、瞄準角度調整用時等。訓練到最後,模型需要能拟合X數據并反複驗證學習質量,直到輸出最佳結果。

推斷和硬件

完成訓練後,模型就要被用于推斷(饋送)。

John McDonald把這一過程類比成制作牛肉漢堡。當開發人員面對Overwatch時,他們手中沒有現成的牛肉肉泥,而是一頭不斷吃草長胖的牛。為了讓數據能為深度學習模型所用,開發人員花了95%的時間和精力把牛切成牛肉——數據,然後把剩下的1%用于把牛肉攪碎——深度學習,4%用于制作漢堡——訓練模型。

csgo優化網絡穩定性(用深度學習檢測CSGO中的開挂行為)3

據介紹,V社平均每天收集60萬場5v5比賽,每場比賽耗時4分鐘,一共是240萬分鐘CPU耗時(一天)。然而一天隻有1440分鐘,這也就是說,為了達成目标,他們至少要購買1700塊GPU。這時,玩家們獻給G胖的供奉就開始發揮作用了——他們一共買了3456塊CPU。下圖是處理器的冰山一角,它包含64個刀片式服務器,每個刀片有54個CPU核心、128GB RAM,僅用于模型推斷。

csgo優化網絡穩定性(用深度學習檢測CSGO中的開挂行為)4

按照之前V社制定的反作弊邏輯:玩家舉報——協調員篩選——玩家裁定——開挂/沒開挂,現在他們有了VACnet,舉報環節就又增加了一個“VACnet舉報”。據了解,在所有舉報中,玩家舉報的開挂證實率為15-30%,而且種類非常豐富;而VACnet的開挂證實率高達85%-90%,但種類相對單一。

效果評價

正如之前所述的,VACnet的效果是令人滿意的,盡管缺乏靈活性和通用性,但它至少找出了大部分開挂者的“罪證”。如下圖所示,剛被加入遊戲反作弊機制中時,它就小幅提高了系統檢測開挂數的數量,加入更多訓練數據後,它在2018年前後又形成了一個劇增的峰值。而且就實際應用來看,從VACnet提出至今,它還沒有誤判過一起作弊事件,當然最後的真人檢測也在其中發揮了重要作用。

csgo優化網絡穩定性(用深度學習檢測CSGO中的開挂行為)5

從用戶反饋來看,這個深度學習嘗試也取得了史無前例的成功。自從引入Overwatch和VACnet以來,在reddit上抱怨開挂的CSGO玩家數大幅降低,僅為2016年高峰期的1%。這種情況将有利于老玩家的存續和新玩家的進駐,也是V社所喜聞樂見的。

但VACnet真的很完美嗎?其實不盡然。除了之前提到了它似乎隻能識别某幾種開挂行為,它還有一個更嚴峻的缺點。訓練時,當完成“舉報——協調員篩選——玩家裁定——開挂/沒開挂”這一流程後,為了保證模型的學習效果,經真人裁定的數據會被再次饋送進模型進行學習。

這就引出一個問題,如果有人開發了一個挂,它能在前幾槍自描、鎖頭,後幾槍回歸正常,那系統該怎麼判斷?如果是個真人裁判,他肯定會想:emm,這貨有問題,肯定開挂了。但機器不知道這樣的判斷依據,它隻能把它标成開挂,然後同時從開挂的時間段和沒開挂的時間段内去強行學習開挂依據。這會導緻模型性能變差。

針對這個問題,目前V社找到的補救方法是添加一個自動的重新訓練功能,它能修補啟發式算法帶來的漏洞。二是建立一個全新的沒有經驗的模型,由它來拓展開挂行為檢測範圍,增加系統能識别的開挂種類。第三則是把VACnet應用到其他steam遊戲上,追求泛化通用化。

小結

John McDonald認為,深度學習是一種新興湧現的技術,它将改革傳統的反作弊方式。V社現在已經把深度學習用于反開挂、反作弊和Dota2英雄選擇等,而其中最受關注的就是Dota2的“大老師”。

就目前而言,玩家無需擔心有人用深度學習技術開發對抗VACnet的工具,因為V社手裡掌握着其他人難以想象的遊戲數據,對于深度學習來說,數據越多,模型性能越好,這是毫無疑問的。唯一需要擔心的一點是,這個用于訓練的數據集是從比賽裡收集的,有人可能會惡意污染數據。雖然似乎人們可以一眼分辨出這個人有沒有開挂,但如果外挂能做到欺騙玩家,那它也能騙過VACnet,并幹擾它的訓練和學習。

綜合整個演講,我們可以下這麼一個結論:VACnet是有效的,但它的反作弊能力并沒有我們想象中的那麼突出,它還是不能做到完全杜絕外挂。如果一個反作弊系統連玩家有沒有作弊都分辨不出來,那它的開發者其實并沒有消滅外挂的決心,而隻是關心玩家的遊戲體驗。

事實上這也正是VACnet成功的地方,它立竿見影地減少了投訴帖子數量,穩定住了玩家的心,讓CSGO穩居玩家活躍榜的前三位。當玩家們再次談及遊戲裡的開挂行為時,他們也會樂于讨論V社在反作弊上的努力,并褒揚深度學習的實際效果。

對于一個普通玩家來說,這樣的結果是喜是憂呢?

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved