推薦語:很硬核的一篇文章,知識點非常多,推薦大家看一看,真的可以漲很多知識。
下文轉載自作者:國服第一狗吹
APEX英雄已經發布了很久了,作為一個蠻喜歡這款遊戲的玩家,最近也是能感覺到外掛的數量有了明顯的上升,那麼,究竟是為何所有的FPS射擊遊戲都避免不了外掛的困擾呢?昨天跟朋友去吃飯聊了聊這件事,他是一位程式設計師,為快遞科普了下,快遞今天就來帶大家來了解一下外掛的世界。
其實,與其說是所有的FPS遊戲都避免不了外掛的侵擾,不如說所有與伺服器聯繫不大的遊戲都會遭到外掛的入侵,為什麼這麼說呢,首先我們先來分析一下遊戲運行的原理,只要需要聯機的遊戲一般情況下都分為兩種,一種比如英雄聯盟和dota2,這種數據與伺服器進行實時傳輸的遊戲,這種遊戲你的每一部操作都會反饋到伺服器中,然後再由伺服器返回數據,比如你要移動,首先就要你的客戶端向伺服器發送移動的請求,伺服器收到指令後再向客戶端下達移動的指令,你才會移動。
而FPS射擊遊戲則不同,因為射擊類遊戲對流暢的要求是非常高的,毫秒之間勝負便可以揭曉,你稍微移動一下你的數值都會變換,這個時候,要是每一個小小的操作都需要伺服器來反應的話,你會發現你玩的是一個滿地瞬移的閃電俠遊戲,所以這就涉及到了第二種遊戲的運行模式,本地化運行模式,這種模式通常跟伺服器交換的數據比較少,通常在本地運算後再將伺服器發送給伺服器。
再來說說外掛的原理,剛才也說到本地遊戲的數據是運算好之後再交給伺服器的,那麼這就給了外掛可乘之機,目前,絕大部分外掛依賴的都是內存修改一類,通過讀取遊戲的內存數據進行修改,然後遊戲就會將修改後的數據發送至伺服器,以達到欺騙伺服器的目的,而FPS遊戲便是本地化遊戲最為典型的代表,像穿牆、飛天、遁地這種比較變態的外掛,這類外掛的原理通常都是修改模型的碰撞數據,在你接觸到場景模型的時候,會讀取到碰撞數據並將其修改,以達到碰撞失效的目的,但是這種外掛的檢測和應對措施都較為容易。最經典的就是穿越火線了,直接在非人力可達到的地區加入了扣除血量的懲罰判定,即便你成功了也存活不下去,所以這類外掛一般出來的快,死的也快。
再來,就是咱們大眾認知的,也是最難以處理的外掛,一個是透視,一個是自瞄,為什麼很多遊戲剛出來外掛就很快跟進了呢,難道外掛不需要開發周期的嗎,錯!其實按照原理來說,外掛的開發周期並不短,但是因為FPS射擊遊戲的原理基本是一致的,並且基本上很多遊戲都脫胎於幾個固定的開發引擎,所以只需要針對這個引擎的特點插入數據就會很簡單,比如戰地系列的寒霜,堡壘的虛幻,COD的祖傳IW Engine各種的升級和魔改版,CS系列的起源等,所以,基本上你開發出一款使命召喚的外掛,那麼不管以後使命召喚出了幾代,只要他不徹底換引擎外掛的開發周期就會大大縮短。
先來說說,透視人物和透視物品的功能是如何實現的,我們所玩的遊戲是處在一個大的3D遊戲世界裡面,在這個3D世界裡,位置會用坐標來表示,透視原理便是通過內存查找工具來找到需要透視的物品或者人物的坐標,在獲取到坐標之後外掛程序便可以模擬一個透明的畫板,通過反函數計算出方框的縮放與遊戲中縮放的聯繫,再通過GDI的繪製在遊戲中的坐標處繪製一個方框、文字,再通過周期空間不斷更新繪製,便達到了透視效果。
自瞄的話,首先外掛程序會通過獲取敵我坐標,準星數據沒在通過三角函數計算出敵人與自己的距離,最後修改準星數據,讓準星移動到敵人的身上,便達到了自瞄的效果,可以看到,所有設計遊戲的透視自瞄功能的實現原理是一模一樣的,這也就導致了外掛作者的門檻會變得非常低,他們只需要稍微懂一些編程的知識,再到外掛社區中下載一款遊戲的外掛源碼,只需要更新內存地址便可以開發出一款新的外掛,就想之前流傳出來的虛幻引擎通用透視源碼,你只需要根據對應的遊戲更改代碼中的進程與地址,一款屬於你的外掛就做出來了。
那麼有人可能會問,會不會有人看了我的文章都跑去做外掛了呢,答案是否定的,因為根!本!不會有人看我的文章。開個玩笑,這個問題我會放到下面的反作弊系統中來講,因為遊戲數據的本地化,所以遊戲廠商想要反作弊基本不在遊戲中執行,一來是影響遊戲的流暢度,二來頻繁的檢測也會加大遊戲的負擔,所以遊戲廠商便會通過開發出一款反作弊的程序來對外掛程序進行處理,這裡我就舉幾個經典的反作弊程序。
第一個便是讓玩家又愛又恨的企鵝大大開發的TP(TenProtect),還有V社使用的VAC(Value-Added Carrier),以及絕地求生和堡壘之夜使用的BE(BATTLEYE),最後便是APEX使用的反作弊程序EAC(EasyAntiCheat),這幾款反作弊程序的原理都不同,但基本上大同小異,反作弊的方法無非也就那麼幾種。
接下來就為大家一一介紹。
絕地求生便是一個活生生的例子,大批的誤封雖然打出了許多開掛的主播,但很多的高手也是被這個程序折磨的叫苦不迭,藍洞說,公平競技,我們只需要菜雞互啄。這種機制也是個不完善的機制,實際效果差的一批。
基本上反作弊系統的機制就這些,那麼回到我們剛才的話題,為什麼有的人即便看懂了我說的原理也獲取到了源碼也很難製作出來一款網遊的外掛呢,這裡就涉及到了過保護的問題,計算機中能夠調用系統最高權限的東西叫做驅動,各大反作弊程序都採用了驅動來對遊戲進程進行保護,讓一般的內存讀取程序根本獲取不到遊戲的數據,那麼外掛想要獲取修改遊戲程序同樣需要驅動的權限來獲取修改遊戲數據,而驅動程序的開發是極其困難的,想要學會開發驅動你需要下大量的功夫,反正我是學不明白,而且你的驅動程序也需要不斷的更新才能達到一直過保護的狀態,所以普通人想要弄這種驅動,就要從那些大神的手裡購買才可以,而價格我就不透露了,反正是天價,一般人是買不起的。
所以你的外掛即使開發出來了,但是沒有驅動的保護上了遊戲就會被BAN掉,所以沒點經濟實力的還是別琢磨著玩黑科技了,最後,有的人會問,那麼真的沒有能完全避免外掛的方法了嗎,答案是:沒有。
或許將來的某一天回有,但是以現在的技術手段,可以說完全避免外掛的方法是零,當然網上所流傳的一種防外掛的機制我還是,那就是將遊戲分為兩個模式,比如apex英雄,30級之後可以進入排位模式,這樣正常玩家可以在玩到30級後進入排位模式中於其他普通玩家一起綠色遊戲,而外掛基本上在到30之前就會被反作弊程序封掉,那這樣可能有人會說,這遊戲新手還怎麼玩,我想說如果沒有這個機制也一樣會有外掛,新手一樣也會沒有遊戲體驗,所以只要熬過等級線之前的階段,就可以快樂的進行遊戲了。
同時也呼籲一下各位朋友,遊戲是我們休閒娛樂的一種方式,使用外掛會嚴重破壞其他人的體驗,所以還是不要開掛好,希望總有一天我們會在一個完全綠色的遊戲環境中自由的競技,遠離外掛的困擾。