日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安全开发之碰撞检测与伤害计算逻辑

發布時間:2024/8/26 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安全开发之碰撞检测与伤害计算逻辑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


文 / feifei

一、什么是碰撞檢測邏輯?

用通俗移動的話來說,碰撞檢測就是一門檢測兩部分運動軌跡是否碰到一起的邏輯,在游戲中一般至少包含2方面的碰撞檢測邏輯:一、核心玩法的碰撞檢測邏輯;二、運動碰撞檢測邏輯。
?


關于核心玩法的碰撞檢測邏輯,以格斗類游戲攻擊邏輯為例,玩家A揮動武器攻擊玩家B,那么碰撞檢測邏輯就是玩家A的武器運動軌跡范圍與玩家B的立體空間是否有交集的檢測邏輯。如果它們之間有交集,那么就表明玩家A的攻擊成功命名的玩家B,也就是說碰撞檢測成功。反之如果它們之間沒有交集,那么就表面玩家A攻擊玩家B失敗,也就是碰撞檢測失敗。這里雖然以格斗類游戲為例,但并不是說只有格斗類游戲才有碰撞檢測邏輯,幾乎所有類型的游戲核心玩法都會涉及到碰撞檢測邏輯。比如籃球類運動游戲,藍球的運動軌跡是否能從籃球框中由上而下穿過的檢測邏輯就是碰撞檢測邏輯。比如足球運動類游戲,足球的運動軌跡是否能穿過球門的檢測邏輯就是碰撞檢測邏輯。比如槍戰類游戲,子彈運動軌跡是否會穿過敵方人體的檢測邏輯就是碰撞檢測邏輯。類似場景還有很多,比如弓箭射擊是否射中、飛刀是否射中等等都是碰撞檢測。

關于運動相關的碰撞檢測邏輯,比如游戲中人物向前移動,而前方剛好有一個障礙物的情況,這時候人物是否可以透過障礙物繼續前進也是一種碰撞檢測邏輯。以著名的CS游戲為例,如果是前方為一堵墻,那么明顯人物不能繼續向前移動;而如果前方為一洼水,則角色應該能直接進入水中繼續向前前進。角色能否穿過前方障礙物則就是運動碰撞檢測邏輯。

碰撞檢測邏輯是游戲中最重要的邏輯之一,碰撞引擎的好壞直接影響游戲體驗的好壞。同時碰撞檢測邏輯也是和游戲安全最密切相關的部分之一,就算游戲發展到今天,由碰撞檢測和傷害計算2部分邏輯導致的安全風險依然屢見不鮮。

二、碰撞檢測邏輯依賴哪些基礎數據?

1、關于碰撞檢測邏輯需要哪些基礎數據,這個作為分析游戲的同學們并不需刻意去記,主要是因為這個并沒有固定的標準,這個要和游戲策劃如何設計的相關。作為游戲分析人員,哪些和碰撞檢測邏輯相關可以充分發揮自己的想象力去聯想和驗證。

比如格斗類游戲,A玩家揮動大刀去攻擊玩家B,那么玩家A能否攻擊中玩家B會依賴哪些信息呢?大家不需要對游戲設計有多么了解,從生活常識方面我們也可以猜測出來。現實世界中A用刀砍B,A能否砍中B依賴攻擊瞬間A的位置、B的位置、所有砍刀的長度、A的揮刀角度等幾個關鍵信息。那么游戲中和現實社會也基本一致,A能否攻擊中玩家B的檢測邏輯也是依賴A的坐標、B的坐標、武器的攻擊范圍、攻擊朝向信息等等。

比如射擊類游戲,A開槍能否打中B也和開槍瞬間B的位置是否處在子彈的運動軌跡上有關。

2、與攻擊碰撞檢測相對應,移動碰撞檢測一般是由游戲的物理引擎處理。現實我們是否能越過前面的障礙物主要和前面障礙物類型相關。如果前面是水,那么我們可以踏入水中走過去;如果前面是一堵并不太堅硬的木板墻,理論上我們也可以借用蠻力穿墻而過;但如果前面是一堵很厚實的大理石墻面,那么現實社會中我們是沒法穿墻的。現實中的水、薄木板以及大理石墻面等不同材料在游戲中稱之為材質。游戲的物理碰撞引擎會根據不同材質設定不同的處理規則,如果材質為水,那么可以通過且通過之后水材質會還原。如果材質為薄木板那么通過一定力度的撞擊可以通過且撞擊過后薄木板材質會消失,而如果是大理石墻面則撞擊的處理邏輯為彈回等等。


三、核心玩法碰撞檢測邏輯出現BUG會帶來哪些外掛風險?

1、無敵

在格斗類游戲PVE玩法中,如果怪物攻擊角色,那么攻擊能否成功和攻擊者坐標和被攻擊者坐標相關,如果能修改玩家坐標那么讓攻擊者和被攻擊者坐標距離大于攻擊攻擊的攻擊長度,那么就可以確保攻擊過程的碰撞檢測不成功從而實現角色無敵。

碰撞檢測還依賴攻擊者的攻擊范圍(或者武器的攻擊距離,二手手機拍賣平臺同一個概念而已),如果能修改攻擊者的攻擊范圍那么也能實現攻擊檢測不成功從而實現角色無敵。

同理如果攻擊方向被修改,依然可能實現無敵功能。關于第二點中碰撞檢測依賴的基礎數據,修改任意一個理論上都能實現無敵的功能。

2、全屏

全屏的概念實際上就是說屏幕范圍內的所有對象都能被攻擊中。要實現全屏范圍內對象都被攻擊中理論做法一般有2種:修改全屏范圍內對象坐標到攻擊者附近;修改攻擊者的攻擊范圍大到足夠覆蓋整個屏幕。

四、移動碰撞檢測邏輯出現BUG會帶來哪些外掛風險?

1、穿墻

穿墻是指在游戲的過程中玩家可以直接穿過墻面到達墻的另一面,一般出現這種情況的原因是物理引擎把墻的材質當成類似水、光幕等可穿越材質才出現的效果。在現實世界中,不同物質會有不同的物理特性,把這一套搬移到計算機中之后就體現為不同材質的物理特性對應計算機中的不同數據。只要找到材質類型的數據并修改為代表另一種材質的數據那么在引擎處理時就能大刀穿墻效果。就算不修改游戲內的內存數據,之修改材質判斷邏輯的函數返回結果依然能達到一樣的效果。


我曾經碰到過一個奇葩游戲,游戲中移動碰撞檢測邏輯是在客戶端處理的,而游戲內渲染效果不同時引擎的處理邏輯也會稍有變化。游戲的外網玩家發現了一個BUG就是本來有一處障礙物的材質在游戲渲染效果調整到最低時障礙物材質看不到了,從而實現了本來要繞行很遠的邏輯通過調低渲染效果直接通行,節省了大量的走路時間。

2、遁地

存在遁地的原因和存在穿墻的原因基本一致。

3、高空行走

4、存在高空行走的原因和存在穿墻的原因基本一致。

5、瞬移

存在瞬移的原因和存在穿墻的原因基本一致。

五、如何設計一個可信的碰撞檢測邏輯?

要確保邏輯可信一般有2種做法:1、把邏輯放在服務端執行;2、邏輯雖放在客戶端但是服務端有比較可靠的檢測方式。不管是把邏輯移動到服務端還是在服務端進行可靠的檢測,其前提條件就是該邏輯依賴的所有基礎數據都放在服務端維護。

六、如何快速確認一個游戲會不會存在碰撞檢測導致的外掛功能?

作為一個游戲安全從業者,本人也會關注到和游戲安全相關的大部分網站,系統能從這些網站學習到一些外掛實現相關知識,做到知己知彼,更好的為安全服務。但實際上卻讓人多少有些失望。為什么失望呢?主要是這些網站很多是提供一些外掛的基礎數據信息,讓其他人可以直接使用,但是缺少數據分析思路的文章。另外就是網站里的文章更多是一個尋找關鍵數據的操作記錄流水卻算不上好的教程。為什么我這么說呢?因為我覺得作為一個好的教程,我們首先要授人以漁而不是授人以魚。我們先要教會一個人這么判斷是否存在外掛功能然后在去考慮實現外掛功能。一個功能的實現方式可能會有很多,我們每種方式一個一個實現看效果太笨了,而且結果不可控。如果能做到快速判斷功能是否存在,然后在心里有數的去分析可能會效果更好,心里更有譜。這也是我寫這篇文章的主要目的。
?


如何快速確認游戲是否有碰撞檢測導致的外掛功能存在呢?這個說白了就是分析游戲的碰撞檢測實現原理的過程。把邏輯放到服務端或者把可靠檢測邏輯放到服務端的方式理論上不會存在外掛功能。如果即沒有把對應邏輯放到服務端,也沒把檢測邏輯放到服務端,那么就可以100%確定外掛功能肯定會存在,接下來就是看看實現外掛功能的難度問題而已。如果邏輯在客戶端,那么把數據進行加密,把邏輯進行VMP保護,那么很大程度上可以提升外掛實現難度。但這種做法僅僅是提升難度而已,如果游戲夠火,外掛作者有足夠的利益驅動去分析游戲,那么這些外掛功能早晚還是會出現的。那么如何分析碰撞檢測原理呢?這里給出2種簡單的方式。

1、斷網法。如果碰撞檢測在客戶端,那么斷網之后進行攻擊,那么被攻擊者可能依然會出現被攻擊中的動作。如果斷網之后你依然在某個游戲上發現被攻擊后有后仰動作,那么恭喜你99%的可能你能實現無敵功能。相反,如果斷網后你的攻擊動作在UI上完全沒有任何表現,那么很可能的做法就是客戶端把攻擊行為發送到服務端,然后服務端在把攻擊后的表現發送到各個玩家的客戶端去。碰到這種游戲,那么我建議你直接放棄實現無敵功能。當然這里的僅限碰撞檢測BUG引起的無敵功能,后面還會講到傷害計算導致的無敵則不再此限制之內。

2、協議分析法。協議是客戶端與服務端交互的唯一途徑,分析了游戲協議那么那部分邏輯在客戶端處理,哪部分邏輯在服務端處理一般就一目了然了。安全的碰撞檢測邏輯一般過程是:a、攻擊者客戶端通過協議告知服務器A向某個指定的方向釋放某個技能;b、服務端根據攻擊者的坐標信息,攻擊技能的朝向信息,以及服務維護的該場景內的其它所有玩家坐標信息等計算該次攻擊是否攻擊成功;c、服務端把計算結果下發給每個客戶端告知是否攻擊中,如果攻擊中則客戶端渲染被攻擊的后仰動作效果。而有問題的設計一版是碰撞檢測直接在客戶端進行,客戶端告知服務段的不是攻擊的行為動作,而是某次攻擊的碰撞檢測結果信息。還有一些間的的做法就是把碰撞檢測和傷害計算全放在客戶端處理,如果攻擊成功就直接告訴服務器這次攻擊對某個玩家造成多少傷害。如果攻擊失敗則完全沒有任何協議知會服務端。如果是后兩種不安全的設計方法那么恭喜你,你可以實現該游戲的無敵甚至秒怪的外掛功能。

總結

以上是生活随笔為你收集整理的安全开发之碰撞检测与伤害计算逻辑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩中字在线 | 99热这里都是精品 | 极品白嫩丰满美女无套 | a级黄视频 | 色一情一乱一伦 | 猫咪av在线| 欧美一区二区 | 国产一区二区三区影院 | 午夜av一区 | 国产免费高清视频 | 亚洲熟女乱色一区二区三区久久久 | av射进来| 伊人青青草| 亚洲国产精品一区二区三区 | 国产成人不卡 | 亚洲永久免费精品 | 粉嫩在线| 精品亚洲中文字幕 | 国产成人精品视频 | 男人午夜影院 | 91精品综合久久 | 国产精品30p| 香蕉久久夜色精品国产使用方法 | 亚洲综合欧美日韩 | 老熟妇毛茸茸 | 天堂在线91| 高清国产在线 | 超碰五月天 | 免费看黄色大片 | 男女激情啪啪 | 久久一区二区视频 | 国产成人精品一区二区三区在线 | 国产精品久久国产精麻豆96堂 | 91av久久| 天天干人人| 欧洲精品无码一区二区 | 欧美黄一级| 亚洲一区二区三区香蕉 | 五月激情六月丁香 | 国产一区二区三区视频在线观看 | 黄色av网站在线免费观看 | 久久乐视频 | 18av在线视频 | 天天摸天天舔天天操 | 两个小y头稚嫩紧窄h文 | 内射干少妇亚洲69xxx | 久久久久久久久国产精品 | 一二三区在线 | 亚洲天堂男人av | 操操操操操操操操操 | 日本激情网 | 国产专区第一页 | 99久久精品一区 | 欧美激情免费在线观看 | 国产亚洲欧美一区二区 | 亚洲一区二区国产精品 | 色臀av| 国产超碰 | 一区一区三区产品乱码 | 天天干视频在线观看 | 欧美日韩国产a | 草久视频在线观看 | 日本不卡一区视频 | 日日爱夜夜爱 | 亚洲蜜臀av | 天天操天天干天天插 | 91高清在线免费观看 | 少妇精品久久久一区二区三区 | 爱搞逼综合网 | 亚洲1级片 | 老司机午夜视频 | 久久久久无码精品国产 | 一二三毛片 | 色婷婷av一区二区三区之e本道 | 欧美狂猛xxxxx乱大交3 | 精品日韩一区二区三区 | 狠狠噜噜 | 日韩视频免费观看 | 欧美人与性动交α欧美片 | 99国产揄拍国产精品 | 香蕉a | 久久成人免费 | 在线观看毛片视频 | 国产小视频网址 | 国产性―交―乱―色―情人 | 精品人妻无码一区二区三区换脸 | 成人精品视频99在线观看免费 | 欧美a∨| 黄色大片免费看 | 欧美啪啪网| 日本www免费 | 欧美一区二区在线免费观看 | 亚洲免费a| 亚洲先锋影音 | 日韩91av| 精品一区二区欧美 | 久久r视频 | 日韩精品一| 亚洲色图偷拍 |