パンクバスターは不正行為を防ぐためだけに存在しますが、パンクバスター対応ゲームでは不正行為が一般的です。Modern Warefare 2は、独自のサーバーを実行したり、MODを作成したりするエンドユーザーから真剣にロックされており、不正行為は常に発生しています。
各クライアントがPC上で実行されているマルチプレイヤーゲームの場合、不正行為を削減または排除するにはどうすればよいですか?
パンクバスターは不正行為を防ぐためだけに存在しますが、パンクバスター対応ゲームでは不正行為が一般的です。Modern Warefare 2は、独自のサーバーを実行したり、MODを作成したりするエンドユーザーから真剣にロックされており、不正行為は常に発生しています。
各クライアントがPC上で実行されているマルチプレイヤーゲームの場合、不正行為を削減または排除するにはどうすればよいですか?
回答:
チートの作成方法、チートを作成する主な方法の1つ、アプリケーションにラッチして変更する他のプロセスに焦点を当てます-他のすべてのプロセスを列挙し、メモリ操作メソッドとキーボード/マウスエミュレーションをフックできますメソッド。
Wallhacksは通常、プロセスとDirectX / GLライブラリの間にコードを挿入して、マテリアルの透明度を設定し、それらが透けて見えるように作成します。シーングラフ/カリングシステムにコードを追加して、他のプレーヤー/有用なエンティティが壁の後ろにいる場合は、それらを明確に描画しないようにすることができます(そのように不正行為を防ぐため)。
マルチプレイヤーに参加していて、クライアント/サーバー間でパケットが変更されないようにしたい場合は、独自のアルゴリズムを介して送信しているデータのチェックサムを作成し、反対側でこれをチェックすることが効果的です。(おそらく、これをさまざまなQAの目的のために実行することになります)。
同じことは、ほとんどのメモリ内リソースにも当てはまり、フレームの先頭でチェックサムを作成し、さまざまな段階でそれを検証すると、かなり便利なメモリ操作検出が得られます。
これはかなり複雑なトピックですが、うまくいけばあいまいに受け入れられる方向にあなたを設定します。
最も極端なソリューションでは、基本的にクライアントを信頼しません。MMOなどのゲームの場合、ユーザーはサーバーを実行せず、ゲームプレイロジックはサーバー側で処理されます。クライアントに「私はX個の体力がある」または「X個の弾薬がある」などと言う権限を決して与えないでください。
ロジックが高価で、サーバーサイクルを節約するためにほとんどクライアントで実行する必要があるシステムがある場合、確率的チート検出システムを実装できます。数分ごとに、数人の異なるプレーヤーを選択して、サーバーを綿密に検査し、一貫性をチェックします。不正行為者がごまかしを短いまれな期間に制限することはめったにないため、最終的には捕まえられます。
これのもう1つの利点は、開発のための迅速なターンアラウンドサイクルがないことです-サーバーがあなたに注意を払うのに平均10時間のゲームプレイが必要な場合、それはあなたが見たいと思うたびに10時間のターンアラウンドサイクルです何かが機能した場合。そして、もしそれがうまくいったならば、彼らはサーバーが彼らにサムスアップを与えたのか、それとも彼らに近づいていないのかわからないので、それはさらに長いです。
一人称シューティングゲーム向けの多くの種類のエイムアシストハックもあり、これらはグラフィックライブラリ呼び出しにフックすることでも機能します。Counter-Strike / HL1のOGCフックには、壁を透明にする以外にも多くのオプションがありました。
敵の位置情報が、広く利用可能なコードを持つ下位レベルのライブラリに渡される場合、それらの呼び出しをフックし、位置、スケール、回転などのデータを使用して、発射に最適なベクトルを正確に計算できます。その敵に。PunkBusterのようなアンチチートシステムには、メモリとプロセスの監視に加えて、ヒューリスティックタイプの検出(このプレーヤーが完全なショットを取得する頻度、180のデグレを回ってワンショットキルを獲得する頻度など)が含まれることがよくあります。
最終的に、マルチプレイヤーゲームで不正行為を防止するタスクは、猫とマウスのゲームです。新しいチートが開発されると、新しいアンチチート手法が作成され、新しいアンチチート技術を回避するために新しいチートが構築されます。
Tetradが彼の応答で述べたように、「ゲームのセキュリティ」の唯一の厳格なルールは、クライアントにできるだけ少ない情報を提供し、クライアントをできるだけ少なくすることです。ただし、ゲームの種類によって要件が異なるため、これらのルールを順守できるかどうかに影響を与える可能性があります。
FPSゲームでは、ゲームプレイの速度が非常に速いため、この正確な瞬間について知っておくべきデータのみをクライアントに提供することはできません。クライアントに角を曲がった敵がいると伝えず、プレイヤーが角を曲がった場合、突然その情報を数ミリ秒で送信するか、プレイヤーが敵に殺されないようにする必要があります今まで見た。
現在利用可能なこれらの問題の唯一の「修正」は、おそらくOnLiveでしょう。このサービスは、データセンターで安全に実行されているクライアントからのみオーディオおよびビデオコンテンツを配信するため、不正行為の唯一の手段は、着信ビデオストリームを分析し、それに基づいてアクションを実行できる人間のAIを本質的に作成することです-ある場合、詐欺師は最大です。
上記の答えはすべて素晴らしいですが、別の部分を追加します。
一部のゲームには非常に堅実なリプレイ機能があり、ゲーム終了後のすべてのゲームのリプレイをコンパクトな形式で保存し、さまざまなプレイヤーの視点、リアルタイムの統計UIなど、さまざまな方法でそれを見ることができます。
私がよく知っている例:Starcraft 2. Blizzardがハッカーをブロックする方法の1つは、ゲームのリプレイとして不正行為の証拠を受け取ることです。
FPSでの使用例は次のとおりです。ゲームをプレイし、他の人がウォールハックでだまされたのではないかと疑った場合、リプレイを見てから、通常のリプレイビジョンで見ることができなかったでしょう。あなたに会って、手g弾を隅に投げたり、何でも。
その後、彼にリプレイを報告し、彼に対する証拠が十分であれば、彼は禁止されます。私の知る限り、これを行う企業は、深刻な証拠、または禁止前に同じ行動の複数の証拠源のみを取得します。
したがって、これは反デバッグ手法ではなく、不正行為の便利な人間による証明を可能にするユーザーレポートシステムです。
これは完全な答えではないかもしれませんが、ここでいくつかの情報を提供しています。不正行為を防ぐ最良の方法の1つは、難読化またはC / C ++の使用です。これにより、人々はクライアントコードを変更できなくなります。