Cheat Protection
簡介
安全性和防作弊是在線多人遊戲的重要方面。Quantum的確定性提供了獨特的功能來解決這些問題。本頁詳細介紹了內置的保護機制,並提供了使用Photon Quantum創建生產級在線遊戲的最佳實踐。
開發者必須了解任何安全問題、緩解步驟以及應採取措施的時機。雖然可以將100%的模擬運行在伺服器上,但這種做法通常不切實際或成本過高。
- 伺服器成本高昂,尤其是當遊戲尚未產生收入時。
- 大多數情況下,作弊者只佔用戶群體的極小比例。
- 使遊戲100%防作弊是一個烏托邦式的想法,即使領先作弊者一步也是一項艱巨的任務。
- 某些遊戲類型需要盡可能安全。
在文檔中,以下術語的含義如下:
- 遊戲後端 指由客戶創建和託管的在線服務。
- 自定義伺服器插件 指由客戶創建並由Photon託管的Quantum插件。
- Quantum公共雲 指由Photon託管的非自定義Quantum伺服器。
- Webhook 指從運行在公共雲中的Quantum 3遊戲發出的標準化HTTP請求。
通過確定性實現防作弊
確定性遊戲的最大優勢在於,即使伺服器未運行模擬,其防作弊能力也非常強大;如果玩家修改其客戶端,例如改變角色速度,這將 不會 影響其他玩家。其他玩家可能會注意到作弊者的行為異常(例如不斷撞牆),但除此之外,他們的遊戲體驗不會受到影響。
原因很簡單:每個客戶端都在本地確定性地運行整個模擬,並僅與其他客戶端共享輸入。
可信的比賽結果
比賽結果可用於在遊戲後端更新玩家進度。在最安全的場景中,這是由運行遊戲邏輯的伺服器完成的。
然而,在遷移到專用遊戲伺服器之前,有多種方法可以以經濟高效的方式驗證結果。
原型設計 | 客戶端將其個別結果推送到開發者的遊戲後端。這適用於原型設計,遊戲可以在此設置下上線。擁有一個可以填充結果並發送到後端的數據結構是首要任務。 |
---|---|
遊戲結果Webhook | 客戶端在模擬中同時將結果發送到Quantum伺服器。當在線遊戲房間最終解散時,會調用GameResult webhook,其中包含客戶端發送的所有結果列表。此解決方案與原型設計建議類似,但已經使用了自定義Quantum伺服器建議中的GameResult API。 |
重新模擬回放 | 如果遊戲結果不確定或通常不可信,可以使用捕獲的輸入流和非Unity會話運行器應用程序重新模擬會話。有關捕獲和回放在線遊戲會話的信息,請參閱回放手冊。 |
自定義Quantum伺服器 | 在Photon企業伺服器上運行模擬,伺服器將自動調用GameResult webhook,無需等待客戶端發送數據。 |
保護客戶端控制的遊戲配置
默認情況下,實際在線Quantum模擬和遊戲的許多起始參數由客戶端控制。
每個客戶端在會話開始前上傳SessionConfig
(Quantum設置)和RuntimeConfig
(遊戲設置)文件。客戶端還會上傳其RuntimePlayer
,這通常描述了玩家加入遊戲時的裝備或進度。
為了保護客戶端發送的數據,在運行於Quantum公共雲的遊戲中,可以使用Quantum Webhooks。
公共Quantum雲 | 伺服器選擇從客戶端接收的第一個SessionConfig 和RuntimeConfig ,這基本上是隨機的。RuntimePlayer 完全不受保護。 |
---|---|
Webhooks | 可以使用在Photon儀表板上配置的HTTP webhooks來檢查客戶端發送的SessionConfig 、RuntimeConfig 和RuntimePlayer ,這些webhooks會調用開發者的遊戲後端。 |
自定義Quantum伺服器 | 所有配置可以從開發者的遊戲後端檢索後被攔截並替換。 |
自定義身份驗證
我們不提供身份驗證服務或玩家數據庫,但強烈建議添加專有或第三方的 身份驗證服務。
確定性的缺點
儘管確定性有許多優點,但這類技術也存在一些明顯的缺點。
完美信息問題
在Quantum中,每個客戶端都有權訪問模擬遊戲所需的所有信息(其他玩家的輸入除外)。這意味著 客戶端控制的秘密(如卡牌遊戲中的秘密)和戰爭迷霧類功能 容易被破解。
還有一些邊緣情況允許客戶端“猜測” 下一個隨機數 或可以 創建機器人。
使用校驗和以檢測作弊者
不 建議在實時遊戲中使用Quantum的校驗和檢測來識別作弊者。
- 校驗和計算成本高昂,可能導致卡頓;及,
- 內置機制會立即停止遊戲會話中 所有 客戶端的模擬。