0

我實際上並沒有自己寫這個軟件,但我想到我不知道如何解決這個問題。作爲說明問題的最好方式,我會從一個假設的多玩家第一人稱射擊遊戲描述一個特定的場景......模糊或隱藏服務器到客戶端狀態更新

  • 玩家A是藏在樹叢中朝西
  • 玩家B從東偷偷在球員A,或偷偷背後玩家A

受歡迎的「黑客」對本場比賽將是玩家A寫有顯示他的球員B的位置的雷達,即使他不能在他的屏幕上看到玩家B,並且遊戲不支持雷達。這種攻擊是可能的,因爲服務器在一定範圍內(也許在玩家A的裁剪平面內)向所有玩家發送信息給玩家A的客戶端。這不太現實(據我所知),服務器只嘗試向玩家A的視圖框內的玩家發送信息給玩家A的客戶端。由於服務器必須向玩家A的客戶端發送附近所有玩家的信息,因此玩家A可以在他的屏幕上寫入一個覆蓋雷達的黑客,該雷達通過觀察發送給客戶端的數據並抽出敵方玩家狀態更新來填充。我認爲這些通常被稱爲「雷達」或「牆」黑客。

在發送給客戶端的信息中有什麼方法來混淆或隱藏敵方玩家的狀態更新嗎?據我所知,加密對於實時解決方案是不可行的?即使服務器只能發送玩家A的視圖框架內的玩家狀態更新,這仍然會允許玩家A的黑客顯示隱藏在僞裝後面的玩家或隱藏對象(大概透明的方式)。

我唯一能想到的就是實現某種「punkbuster」解決方案。也就是說,玩家A的客戶經常掃描非法進程。這個想法是任何受歡迎的黑客都會受到監控。不受歡迎的黑客會影響一個足夠小的玩家羣,以至於他們太小而無法繼續。

回答

2

這是唯一的方法。除了punkbuster,你應該對Warden做一些研究(超越維基百科,有很多有趣的東西,我不會在這裏鏈接)。這是一個非常有趣的戰鬥laws of online world design ...

客戶端在 敵人的手中。

一個新元素,它是人們將改裝成的驅動程序,給他們的優勢(東西都是不透明的或強調的,玩家不能「盲目」等),取代他們的視頻驅動程序。我不確定是否有任何遊戲檢查改裝的驅動程序或不。

+0

監獄長擁有我一次:> – Konstantinos 2009-05-22 23:39:14

1

有一個名爲「eqmon」的程序,爲Everquest遊戲做了這樣的事情。起初,遊戲數據包完全沒有加密,並且包含了整個級別的所有角色(PC和NPC)。最終,他們最終使用加密技術來使偵聽數據包變得更加困難,但eqmon通過強制加密密鑰來解決這個問題(每次進入關卡時服務器都會創建一個新密鑰,所以有時會花費幾分鐘的時間解密密鑰)。然後他們改變它,以便您的客戶端只收到您所在位置某個範圍內的PC或NPC的更新。這使得eqmon對野營和監控同級別的「稀有產卵」遠沒有幫助。

2

簡單的加密對於現在的硬件來說可能是實時的,但問題在於,爲了讓客戶端訪問加密的數據,它必須有密鑰。如果客戶擁有密鑰,騙子程序可能不會太難以找到並找回密鑰。最好的辦法是服務器只有在B完全可以看到B時才發送B的位置。它仍然可以作弊,但程度稍差。

對於B隱藏但小部分可能可見的情況,可能的解決方案是讓服務器簡單地說在B的位置有。它可能是一塊石頭或什麼。問題是,爲了讓客戶能夠呈現東西,服務器必須提供相當準確的描述。鑑於今天的多人遊戲通過模擬服務器的虛假低延遲,這很可能是不可行的,直到我們擁有超低延遲網絡。

相關問題