遊戲外掛的原理

開篇之前先來點題外話,我的第一篇博客,和技術無關,不喜勿噴,除了偶爾玩玩王者之外大型的網絡遊戲不玩,所以文中說的不對的地方,歡迎到評論區指正。

最近這段時間看大家玩《絕地求生》玩的挺火的,還有挺多的外掛,由於遇到不明白的問題比較喜歡琢磨,所以這幾天查了好多資料對外掛的原理進行了一個大概的瞭解

外掛(開源)具體可以實現什麼操作?

還是以絕地求生爲例


開源代碼可以實時透視、去草,可怕的是竟然還可以通過安全檢測!
你可以想想,當你美滋滋的找到了一個空投,歡喜的躲在草地裏當個LYB,神仙在3000米之外給你一槍爆頭,你心裏是不是瞬間十萬個草泥馬飛奔而過?

此時站在對方的視角而言是什麼樣的?(開了除草外掛)
簡而言之那就是上帝的視角,開了除草外掛的神仙們,看到的視角是,一個人傻不拉幾的趴那,簡直就是一個固定靶,不打你簡直就是對不起自己,就算槍法再臭也能爆了你的頭


網絡遊戲的結構原理

客戶端與服務器端連接示意圖


 
任何的網絡遊戲都有服務器端與客戶端,這兒說點題外話,不僅僅是遊戲如此,比如你的微信、QQ、各種手機軟件都是這樣的,你的手機上的軟件是客戶端,給你提供服務的那邊有服務器,你手機聯網之後訪問的就是服務器上的數據。
通常情況下客戶端負責的是我們玩遊戲的一切交互,簡單來說就是你點擊技能了能放大招,按方向鍵能走,諸如此類的展現與操作的結果。服務器端負責的是數據的驗證、分發,處理等等的工作。

射擊類網絡遊戲(以《絕地求生》爲例)的特殊性

射擊類網絡遊戲就比較特殊了,這一類的遊戲對數據的實時性性要求是很高的,作爲主打真實的《絕地求生》,需要處理的遊戲數據就更加的複雜了。
比如,槍支種類不同彈道也不一樣,你與敵人的距離,擊中敵人不同的身體部位會有不同的傷害值等等的一大堆數據,如果每個人遊戲時產生的數據都交給服務器來處理的話對服務器的性能是個很大的考驗,而且會有很高的“延時”


假設數據交給處理器處理,你打了對方一槍,客戶端會把從你打出子彈到子彈飛行,對方飆血等這一系列的數據發給服務器,服務器再去對這些進行計算,然後將處理的結果發送給你和被打中的敵人,在這可以設想一下,一臺服務器上有很多場比賽,此時這臺服務器需要同時處理每個人比賽中千變萬化的數據,這中間哪怕產生半秒鐘的處理時間,都會讓讓你覺得這遊戲真的“好卡”啊!

玩家要看到的 是打中了敵人,對方立刻飆血,容不得半秒的等待。


所以射擊類遊戲爲了保證遊戲體驗,只能把數據放在客戶端處理也就是你自己的計算機上,以你打了對方一槍爲例,在本地計算機處理完這些數據,服務器只需要對你處理完之後產生的結果進行接收,也就是你打中了敵人,再將相應的結果轉發給敵人,這中間的“延時”就會非常低了,這樣才能保證遊戲流暢經行。


外掛的原理

正是因爲數據的本地處理,才讓外掛有了可乘之機,外掛可以通過修改客戶端處理 的數據來欺騙服務器,比如閃電俠外掛,玩家在正常情況下(沒有載具),速度是有一個上限的,而外掛可以通過修改數據欺騙服務器,比如它會說你正騎着一輛摩托車(實際是沒有的),這就可以讓你有摩托車一樣的速度,實現的就是加速的效果。
還有自動瞄準,服務器會將比賽中其他玩家的位置信息發到你的計算機上,這樣你在遊戲中才能瞄準敵人,外掛通過獲取這個位置信息進行自動瞄準鎖頭等操作。
還有比如說無限子彈、改變一下設計速度、改變子彈的威力,都是通過這樣實現的。
以目前射擊遊戲處理數據的機制來看,更新遊戲只能短暫的讓外掛無法使用,但是你遊戲能更新外掛也能更新,想要徹底的根除外掛幾乎不可能,唯一可以做的就是封號,還有就是像騰訊一樣配合執法部門用法律手段進行打擊,讓想要通過外掛牟利的人不敢作惡。
注:遊戲外掛的銷售額是十分驚人的,甚至可以達到上百萬人民幣。

但是隨着騰訊代理了《絕地求生》國服後這些外掛銷售者也不敢明目張膽的銷售外掛了。但是你斷了人家的財路,所以就出現了一個魚死網破的事——國內某外掛作者已於前段時間把外掛開源發佈在了論壇上。這意味着有可能會用來外掛的免費時代。

文章中的有些信息來源於網絡,如有侵權,請聯繫作者進行刪除


林棲者——戲夢如生
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章