4

私はjavascriptでタワーディフェンスゲームを作成していて、ハイスコアやその他のマルチプレイヤーインタラクションが必要です。おそらく、数人のプレーヤーが同時にゲームを開始し、他の人がどれだけ速く進んでいるか、そしてそのようなことを彼らに伝えてもらいます。

フラッシュゲームがスコアやイベントを送信して、各クライアントが送信している情報が実際に正しいことを確認する方法がわかりません。信じられないほどのスコアを送信している人だけではありません。数年前、フラッシュゲームのスコアが高くなり始めたとき、非現実的な(ハッキングされた)スコアを見るのは非常に一般的でした。それで、ここの秘密は何ですか?

4

4 に答える 4

2

人々はいつでもゲームで不正行為をすることができます.あなたができる最善のことは、不正行為を困難にすることです. スコアは HTTP リクエストを介して送信されるため、古いフラッシュ ゲームのスコアは非常に簡単に操作できました。トラフィックをスニッフィングすると、送信 URL と、スコアを更新するために渡す必要のある変数が明らかになります。それ以来、それが変わったことを願っています。

私があなたなら、スコアが正当であることを確認するために、最終的なスコアとともに渡されるエラー チェック コードを使用します。エラー チェック コードのアルゴリズムは、スコアから判断するのが難しいものにする必要があります (人がスニッフィングしている場合)。JavaScript も任意に難読化する必要があります。これは理想とは程遠いものですが、不正行為者の大部分を抑止するはずです。

于 2009-06-12T06:38:39.747 に答える
2

これについて私が見たベスト プラクティスは、サニティ チェックを行うことです。

経過時間、倒した敵などを記録します。データでスコアを確認し、それらが合計されるかどうかを確認します。

于 2009-06-12T06:50:06.427 に答える
0

最近では主にあいまいですが。通常、ゲームごとに一意のトークンを割り当て、スコアとトークンのある種のハッシュを形成し、送信時に検証します (または、ゲームプレイ全体で継続的な送信、検証、およびトークンの切り替えを行います)。

JavaScript を介して行うのは非常に困難です。

于 2009-06-12T06:45:03.927 に答える
0

偽のスコアと進捗レポートを防ぐために一般的に使用される次のツールを組み合わせて使用​​します。

  1. あいまいさ - スコア文字列を計算するロジックを圧縮してわかりにくくします。配布してリバースエンジニアリングを困難にします。
  2. ランダムに変化する鍵 - ゲームの開始時に、ハイスコアなどを含む文字列を暗号化するために使用できる鍵を JavaScript に要求させます。サーバーには、メッセージを復号化できる秘密鍵も必要です。
  3. 健全性チェック - ユーザーがスコアを変更する可能性がありますが、要求には既知の境界であるキル数なども含めてください。サーバーはハッシュをチェックし、データが有効であることを確認します。
  4. コメット サーバーの使用を検討する - 両方のクライアントにリアルタイム データを供給するため、Orbited や Jetty などのコメット サーバーを使用することをお勧めします。これにより、サーバーをクラッシュさせることなくストリーミングが可能になります。
  5. いらいらさせてください。'言っ途切れる。
于 2009-06-12T07:00:31.817 に答える