幀同步手遊如何防外掛程式?

時間 2021-05-29 22:43:35

1樓:Milo Yip

傳統的鎖步同步(幀同步)方案中,修改客戶端狀態並不是大問題,三人或以上的遊戲中一人作弊可以容易偵測出來(比較各客戶端狀態的 checksum),也可以通過後台覆盤驗證。

然而,鎖步同步客戶端必須包含完整遊戲狀態,而狀態同步中後台可選擇性同步狀態子集。所以鎖步同步的主要安全隱患在於感知外掛程式,例如 MOBA/FPS 中的視野掛可以看到所有被隱藏角色的位置。這方面現時通常是利用記憶體加密去增加破解難度。

2樓:Mack

可以看看這篇 幀同步(LockStep)該如何反外掛程式 。

多人競技的幀同步比較容易反掛,王者也是通過客戶端上傳關鍵資料的hash投票找出作弊玩家。如果要對單機,雙人等人數較少的幀同步遊戲反掛,可以結算之後伺服器再加速跑一邊錄影做驗證,例如刀塔傳奇。

3樓:

關於幀同步遊戲我有如下倆個問題請教一下各位不勝感激幀同步遊戲採用如下的策略邏輯幀1-2客戶端直接接收使用者操作然後傳送給伺服器伺服器在1-2幀的時候接受客戶端的同步資料主要是使用者的操作比如我按下了向右的按鍵在第二幀的時候伺服器廣播接受到的客戶端資料客戶端在2-3幀接受伺服器端的廣播資料然後客戶端在第三幀的時候統一執行操作邏輯大概就是這樣在具體實現的過程中我遇到了如下的細節問題 1 客戶端在第1-2幀接受使用者操作傳送給伺服器理想狀態是伺服器端的1-2幀接受到了資料但是如果這個操作發生在1幀晚些時候伺服器端就是在2-3幀才能接受到資料在第3幀將這個資料廣播出去客戶端在第四幀才能執行這樣造成的問題就是比如1-2幀有使用者的倆個操作但是伺服器接受到的時候乙個是在1-2幀乙個是在2-3幀客戶端執行的時候就是第3幀和第4幀了如何才能處理這個問題 2 在1-2幀的時候我有倆個操作按下左抬起左這是倆個操作但是控制的是物體的乙個屬性移動這個時候如果不做特殊處理那客戶端看到的表現就是物體沒有移動而事實上我按下了左鍵並且抬起只是時間很短短於乙個邏輯幀我自己測試了一下最快的時間間隔大概70毫秒我的邏輯幀一幀是200毫秒這樣就造成了由於按鍵速度太快導致使用者的第二個操作覆蓋了第乙個操作如何解決這個問題這倆個問題困擾了我很久希望大家能談談自己的看法

4樓:侯爍

我看都沒寫到主動探測記憶體修改。其實最頭疼的問題就是修改器了,如果你不想讓玩家修改乙個熟悉我們假設叫做hp,你實現的時候再加入乙個變數hp_,並且每次寫入hp的時候保證hp_=hp,每次讀取的時候判斷hp是否等於hp_如果出現不等那就說明被修改了。當然這個做法比較原始,修改器很容易發現hp_,你可以偽裝一下比如hp_=65536-hp。

還有乙個問題就是hp_的記憶體位址跟hp可能相對比較固定容易被發現這樣你可以搞乙個字典儲存hp_並把key跟hp關聯,每次hp修改查詢都拿著這個key去字典裡面去找到hp_。當然更高階的方法還是有的這裡就不多講了,還要在實際工作中等你去慢慢發現了。

5樓:原子筆

沒有裁判的比賽是沒法防作弊的,所以伺服器必須要有校驗機制,而且最好是主動探尋(等運動員來主動匯報成績和自己的錄影機對比,是很容易出問題的,包括遊戲公升級)。

6樓:逐風

在我看來,幀同步,這個防外掛程式,在初期其實基本上不用考慮了。

技術限制,他本身就是有問題的。(客戶端做運算,你能防止這個玩意沒問題?)

後續無非是你存著包,做校驗就好。

那麼問題來了,假如你沒有完整後端邏輯,如何做校驗?

或者,既然你已經有了後端邏輯,那麼為何要來問關於反外掛程式的事情?

個人覺得最優方案,都是按CS寫,然後為了手感切幀同步方案。

校驗,手感兩不誤。

然而,在現在高速的網路情況下,個人認為沒有什麼東西是CS做不到的。

7樓:原林

幀同步其實核心思想是保證計算的確定性,通過計算的確定性,可以實現很多功能:

1.網路同步,只需要同步輸入就可以,不用同步狀態,保證小的傳輸量2.錄影功能,記錄非常少的輸入資訊,就可以重現整個遊戲過程3.

在2的基礎上,將遊戲的邏輯層和表現層分離,在服務端復現遊戲過程,作離線驗證(防外掛程式)

以此類推吧

8樓:喬捷

幀同步對延遲非常敏感,會造成使用者體驗下降。早期的區域網遊戲會採用幀同步,到了廣域網上就很少採用這種模式了。現在主流的做法是伺服器做仲裁,客戶端各管各跑,對使用者的操作不等伺服器確認就開始執行,這樣本機的操作不會有延遲。

伺服器收到客戶端操作後進行確認,如果可以接受就廣播給其他客戶端,如果因為延遲或其他因素發生狀態衝突就拒絕,客戶端收到拒絕後就把之前模擬的遊戲狀態回滾到操作發生前,重新按新的操作進行模擬。原理非常類似分布式原始碼管理,先修改再提交合併,而幀同步相當於先鎖定再修改提交。

因為伺服器參與客戶端的操作確認邏輯,所以客戶端是沒有辦法進行非法操作提交的,破壞遊戲操作規則的外掛程式是無效的。但是對不破壞操作處理規則的外掛程式比如顯示隱藏的敵方狀態等就無能為力了。

9樓:洗貓

幀同步只是一套同步的方案,跟CS一樣,只是方法方式不同。

如果你的戰鬥和移動邏輯都放在服務端,那麼不會擔心這塊有什麼作弊行為。

另外,個人一直認為防止外掛程式是遊戲設計和程式共同努力的結果,只依靠程式是沒戲的,客戶端都給別人,是不可能防得住的(最多增加破解成本)。

10樓:

幀同步防止bug應該僅存於1v1戰鬥中吧?

多人pvp防作弊是lock step的天然優勢,可以在多人局作弊而不被發現這個可能性非常低吧。。。反正我不知道

Pve可以關鍵地方要求伺服器驗證

1v1防止作弊技術當時在前乙個專案立項會議上說過但是我忘了!

@Slime

另外,有一位答主提到了戰爭迷霧之類效果在幀同步下的問題。

我想說這真的是個大問題。。。公共畫面下的特效等內容都有這個問題,簡直坑的要哭。。。

(例如,乙個公共拾取物拾取後的特效僅對Owner可見這種事情)在涉及這方面問題時最好預先籌備幾個方案,不要需求到那兒了再來山寨,真的難。。。

11樓:Funny David

我們在用幀同步的方式在做手遊開發。幀同步由於所有計算都是在本地計算的,所以別人的操作也會在自己本地驗證,這就有一定的天生防作弊的功能。(作弊的人自己完得high並不影響別的玩家。。。

)相應的問題就是如何判斷哪些玩家的結果是正確的,我們是把所有戰鬥邏輯抽離出乙個「黑盒」結構,輸入相應保證輸出相同,在服務端可以以快速運動的方式重新計算輸入的整個過程,驗證戰鬥的結果。

幀同步不太好處理的是類似dota的戰爭迷霧,或者棋牌的對手卡牌這樣的東西,因為所有資料都發到客戶端計算了,因此沒辦法做到對於作弊玩家的資訊隱藏。如果有這樣的強需求,建議不要考慮幀同步的方案。

12樓:水風

關於防外掛程式,可以參考我寫的一篇文章:技能模組的防外掛程式機制和同步機制優化 - 知乎專欄

我們遊戲並不是幀同步,但是防外掛程式的一些原則是共通的。

幀同步遊戲沒做過,僅供參考。

13樓:9chu

瀉藥。幀同步對於服務端的最大問題就是服務端難以跟蹤戰場的狀況,因為基本上所有的計算都是在客戶端進行的。而一些傳統的基於數值天花板的反作弊手段在這種情況下基本又都是客戶端上報的數值,存在乙個不可信的問題。

但是幀同步有個最大的特點就是存在「蝴蝶效應」,如果客戶端單方面進行了作弊,其導致的影響極有可能左右整個戰局的結果。換言之,參與作弊的客戶端極有可能和其他客戶端「不同步」,而它自身又不能像C/S同步一樣根據伺服器下發狀態進行修正,結果就是失之毫釐謬以千里,作弊者認為自己贏了,但是在其他玩家看來,結果並非如此。

針對這樣的情況,在多人對局的幀同步遊戲中,可以引入一種「投票機制」,即遊戲結束時,各個客戶端上報輸贏情況,伺服器根據「少數服從多數」的原則決定誰最終獲勝、誰的數值是正確的。

當然了,這樣也可能導致一些因為幀同步引發的丟同步BUG被判定為作弊,答主也沒有實操過,僅作參考。

音遊是如何防外掛程式的?

EmptySable 音遊防外掛程式的方式,就是降低開外掛程式的收益。有的音遊,完全就是單機,最多有個排行榜,那開掛最多就是為了點虛榮心,裝b裝過頭拿出top級別的成績照樣要被玩家群體錘,這種人自然也就少。有的音遊,存在多人競技,這時候就要看勝利的收益了,malody djmax osu之類單純只是...

手遊吃雞用什麼不掉幀 又巨屏?

感覺VR眼鏡和無屏電視是首選的大屏,投屏有AirPlay和miracast,解決好延遲,最好有配家庭影院,是不是有點奢侈了 Fiona文 手機玩遊戲我用黑鯊,巨幕大屏物理外掛程式的話可以考慮用VR頭盔,前段時間CES Asia 上有體驗大朋VR在眾測的新品,可以直接手機投屏到VR頭盔大螢幕上類似IM...

幀同步遊戲如何處理物理引擎BOX2D的浮點數

馬遙 做聯機高頻率同步的小遊戲,目前還是乙個大坑。題目描述所說的 修正所有浮點數 基本不可能。先說可能的解決方案 1 避免使用BOX2D這種物理引擎,把物體之間的互動簡化,角色自己寫控制器,場景物體也寫成互動運動的邏輯,避免物理引擎的計算。2 幀同步 狀態同步。定期方式 幀同步不變,在此基礎上,1 ...