0

私は実際にこのソフトウェアを自分で書いているわけではありませんが、問題を解決する方法がわからないことに気づきました。この問題を説明する最善の方法として、架空のマルチプレイヤー ファーストパーソン シューティング ゲームの特定のシナリオについて説明します...

  • プレイヤーAは西向きの茂みに隠れている
  • プレイヤー B が東からプレイヤー A に忍び寄る、またはプレイヤー A の後ろに忍び寄る

このゲーム用に書かれた人気のある「ハック」は、プレーヤー A がプレーヤー B の位置を示すレーダーを持つようにするもので、画面にプレーヤー B が表示されず、ゲームはレーダーをサポートしていません。このハッキングが可能になるのは、サーバーが特定の範囲内 (おそらくプレーヤー A のクリッピング プレーン内) 内のすべてのプレーヤーのプレーヤー A のクライアントに情報を送信しているためです。サーバーがプレーヤーAのビューフレーム内のプレーヤーのプレーヤーAのクライアントにのみ情報を送信しようとするのは現実的ではありません(私が知る限り)。サーバーは近くにいるすべてのプレイヤーに関する情報をプレイヤー A のクライアントに送信する必要があるため、プレイヤー A は自分の画面にレーダーをオーバーレイするハックを作成できます。このレーダーは、クライアントに送信されたデータを監視し、敵プレイヤーの状態の更新を引き出すことによって生成されます。これらは一般的に「レーダー」または「」として知られていると思います。

クライアントに送信される情報で、敵プレイヤーの状態の更新を難読化または非表示にする方法はありますか? 私が理解していることから、暗号化はリアルタイム ソリューションには適していないのでしょうか? サーバーがプレイヤー A のビュー フレーム内のプレイヤーの状態更新のみを送信できたとしても、プレイヤー A のハックは、カモフラージュまたはカバー オブジェクト (マイナーな方法でおそらく透明である) の後ろに隠れているプレイヤーを表示することができます。

私が本当に考えることができる唯一のことは、ある種の「パンクバスター」ソリューションを実装することです. つまり、プレイヤー A のクライアントに不正なプロセスを定期的にスキャンさせます。人気のあるハッキングが監視されるという考えです。人気のないハッキングは、十分に小さいプレイヤーベースに影響を与えるため、小さすぎて追跡できません.

4

3 に答える 3

2

今日のハードウェアでは単純な暗号化がリアルタイムで実行できる可能性がありますが、問題は、クライアントが暗号化されたデータにアクセスするにはキーが必要なことです。クライアントがキーを持っている場合、不正プログラムがそれを見つけて取得することはおそらくそれほど難しくありません。最良の方法は、サーバーが B を見ることができる場合にのみ B の位置を A に送信することです。不正行為を行うことは可能ですが、程度は多少低くなります。

B が隠れているが小さな部分が見える場合の解決策として、サーバーが単にB の位置に何かがあると言うことが考えられます。それは岩か何かかもしれません。問題は、クライアントがsomethingをレンダリングできるようにするために、サーバーがかなり正確な説明を提供する必要があることです。今日のマルチプレイヤー ゲームは、サーバーの動作をシミュレートすることで低レイテンシーを装っていることを考えると、超低レイテンシー ネットワークが実現するまで、これはおそらく実現不可能です。

于 2009-05-22T23:23:43.970 に答える
1

ゲーム Everquest でこのようなことを行う「eqmon」というプログラムがありました。最初、ゲーム パケットは完全に暗号化されておらず、レベル全体のすべてのキャラクター (PC と NPC の両方) が含まれていました。最終的に、暗号化を使用してパケットのスヌープを困難にすることになりましたが、eqmon は暗号化キーを力ずくで回避しました (レベルに入るたびにサーバーによって新しいキーが作成されるため、数分かかることもありました)。キーを復号化します)。その後、クライアントが特定の範囲内の PC または NPC の更新のみを受信するように変更しました。これにより、同じレベルで遠く離れた「レアなスポーン」をキャンプしたり監視したりするのに、eqmon はあまり役に立ちませんでした。

于 2009-05-22T23:18:05.120 に答える