2009-06-12 8 views
3

私はjavascriptでタワー防衛ゲームを作成しており、高い得点と他のマルチプレイヤーのやり取りをしたいと考えています。おそらく2人のプレイヤーに同じ時間にゲームを開始させ、他の人がどのくらい速く行くのか、そしてそのようなものを伝えます。Ajax Highscores security

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

答えて

2

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

私があなただったら、私はスコアが正当なものであることを確認するために、最終的なスコアと一緒に渡されるいくつかのエラーチェックコードを使用することになるだろう。エラーチェックコードアルゴリズムはスコアから判断するのが難しいはずです(もし人がそれを嗅ぐならば)。 javascriptも任意に難読化する必要があります。これはどこでも理想に近いですが、それは詐欺師の良い部分を抑えるべきです。

0

最近では主に不明瞭ですが、一般的には、ゲームごとに一意のトークンを割り当て、スコアやトークンのハッシュを作成し、提出時(またはゲームプレイ全体での継続的な提出、検証、トークン切り替え)に検証します。

あなたがjavascriptを経由して行うことのために多くの困難になります。

2

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

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

0

は、一般的に、偽のスコアを防止し、進捗報告をするために使用されている次のツールを組み合わせて使用​​してください。

  1. Obscurity - スコアストリングを計算するロジックを圧縮してobsfucateします。それを配布し、リバースエンジニアリングを困難にします。
  2. ランダムキーを変更する - あなたのゲームが始まると、Javascriptを高得点を含む文字列を暗号化するために使用することができますキーを要求しましょう、などサーバはまた、あなたがメッセージを復号化することを可能にする秘密鍵を持っている必要があります。
  3. 健全性チェック - ユーザーがスコアを変更する可能性がある間に、要求には既知の境界であるキル数なども含めます。サーバーはハッシュをチェックし、データが有効であることを確認します。
  4. は、彗星のサーバーを使用することを検討してください - あなたは両方のクライアントへのリアルタイムデータを供給することがありますので、あなたが周回や桟橋のような彗星のサーバーを使用したほうが良いでしょう。これにより、サーバーがクラッシュすることなくストリーミングが可能になります。
  5. '言っ途切れる。