前言
這篇文章寫於2018年一直在草稿箱,當時在某廠做手遊,現在回過頭來看,這些方法依然有用。
對於一些外掛軟件,現在我們借力AI,針對性上報玩家的行爲序列log,通過AI分析是否外掛,然後把數據交由運營處理。
在我開發一款大型mmoarpg過程中和服務器主程討論遊戲中防外掛、防破解的實現和改動,討論內容主要有如下:
防加速
服務器驗證,客戶端配合
內存數據加密
客戶端內存加密,Unity的AssetStore上插件可實現。
尤其是對於獎勵,領取條件判斷及二次領取服務器一定要做檢驗,不要依賴於客戶端。客戶端所有數據都可以被修改。
協議CD
防止頻繁的請求某個協議(300毫秒~1000毫秒內只響應一次)
【修改內容】
1.所有的協議都增加了CD限制,例如CS_MAP_MOVE走路協議,CD間隔是200毫秒,服務器每次收到協議後先檢查和上次的間隔,如果間隔小於CD*0.8,則可以認爲是網絡阻塞或外掛,服務器拒絕處理協議。具體限制向服務器同學拿最新的協議CD配置。
【影響點】
1.客戶端所有的協議發送。
【測試點】
修改影響到了協議收發函數對於CD限制的邏輯,以及功能模塊協議限制邏輯。
測試需要驗證指令是否能正常發送,同時功能模塊協議限制是否正常
協議加密
在協議頭增加字節數
防WPE重複發包
防重複領取,及重複進入。
監控非充值途徑獲得貨幣
所有的貨幣都有來源
移動防加速
有幾點注意:
1、程序這邊做了1.5倍的容錯(速度時間1.5 > Client 移動)
2、當跳躍的時候,忽略該判斷,走跳躍自己的判斷
3、當判斷前端發送的位置存在異常的時候,會被拉回上一個點
測試哥需要測試,走,疾走,一邊跳躍一邊行走時候是否有異常
防加速有以下幾個修改點:
1、人物移動協議防加速,該檢測邏輯放在玩家進程
2、人物強制矯正位置協議防加速,該檢測邏輯放在玩家進程
3、增加人物傳送點傳送到下一個點位置協議,該協議功已經制定但是需要前端先行,故這部分還沒做開發。
4、寵物和召喚物移動協議防加速,該檢測放在場景進程
5、增加寵物和召喚物召回協議,該協議的檢測暫時屏蔽,需要前端支持了該協議後,後端開啓限制
測試需要過一下
玩家 移動,跳躍,傳送點跳躍
寵物和召喚物 移動,召回等操作
後面補充了一下幾個機制:
1,跳躍的時候行走,使用新的行走協議
2,普通行走處理了避免粘包,或者前端卡頓出現同時發送協議到後端但又屬於正常情況的發送的情況
3,玩家衝鋒或者被別人推移的時候,增加了容錯時間段,該時間段內不處理異常的行走數據包
4,增加了傳送點傳送監控
5,玩家傳送點跳躍落地後,增加了容錯時間段,該時間段內不處理異常的行走數據包
6,前端在卡頓的時候,會導致發送行走包路程不符合要求的情況,後端做了容錯次數
反外掛加速
當前衝鋒技能可以穿越地圖邊緣的阻擋牆
後端做了優化,在釋放衝鋒,或者被boss擊退的時候,有0.4秒的時間內,使用強制矯正協議能把角色正常拉回來,而不是把角色還原到不可走點
【系統漏洞】未限制加速
描述:未限制加速,導致攻速加快、移速加快
修復一下問題:
1,單獨技能CD無效問題
2,人物死亡後,寵物釋放技能攻擊無效問題
3,增加了技能釋放硬直時間
網絡波動狀態下容易被拉回