2012-09-19 7 views
5

JavaScriptを使用してゲームを作成していますが、その最大の問題は、JSに関する知識が豊富なプレイヤーが自分のソースコードを開く可能性があることですどのように動作するのかを確認し、game.score = 100000000000000;をコンソールに接続してください。しかし、スクリプトを難読化することを除いて、無名関数ですべてをラップすることは、そのトリックを行うようです。ユーザーがコードを実行しないようにする

(function() { 
    game_start = function() { 
     //etc 
    } 
    //etc 
})(); 

私はクロームコンソールからのコードのいずれかを試してみて、実行すると、それはundefinedを思い付きます。これは望ましい結果ですが、私のメソッドの周りには役に立たないものがありますか?コンソールから何かが実行されないようにするより良い方法ですか?

+4

クライアント側のコードは、決して真に壊れにくくすることはできません。 –

+4

そして、クロムにブレークポイントを追加して、必要なものを変更することができます。これに多大な努力を払う必要はありません。思いついたことは、コードを難読化/最小化して読みにくいことです。 uglifyjsのようなものを見てください。 –

+0

http://stackoverflow.com/a/11960187/453277を参照してください。 –

答えて

4

人が不正行為をしないようにする方法はありません。ひどく難読化されたコード(私はH5b(b){if(b.pd()&&b.Ca&&b.gKa){var a=b.ra(RT.Nwa)のようなものについて話しています)でも、あなたはまだUIの変更やネットワーク要求を見てそこからそれを辿ることができます。

AJAX呼び出しを使用してスコアを検証する人がいます。スコアが増加/減少するたびに、アプリはバックエンドにAJAX呼び出しを行い、バックエンドでもスコアを追跡します。ユーザーが最終スコアを提出すると、それをバックエンドスコアと照合してチェックし、それが違う場合はその人が不正行為を行っていたことを知ります。

しかし、これは人々がそれらのajax呼び出しを行うスクリプトを書くのを妨げず、そうすることでスコアが有効になります。

tl; dr:いいえ、ユーザー側のコードが改ざんされていないことを確認する方法はありません。

+0

興味深い解決策のように聞こえます。 – Polyov

3

申し訳ありませんが、ゲームが自分のマシンで実行されているときにユーザーが不正行為をするのを防ぐ方法はありません。ユーザーのマシンで実行されるコードは、ユーザーが操作できます。あなたが不正行為をすることを不可能にしたいときは、サーバー上にすべてのゲームロジックを実装し、プレーヤーが知っていないと思われる情報を送信せず、プレーヤーに許可されていないコマンドを受け入れない行う。

+0

または、少なくともそのゲームロジックはサーバー側で検証される必要があります。 – Brad

+0

私は不正行為を防ぐことは不可能だと理解しています。私が作成できるロードブロッキングがどれだけ大きいのだろうと思っていました。 – Polyov

関連する問題