2

現在のユーザーのスコアを追跡する 2 つの異なる方法を検討していphpます。jquery

1) global javascript variables- たとえばvar currentScore、js の先頭。ゲームのアクションとターンはすべて ajax 経由で制御されるため、ページの更新時に変数データが​​失われることを心配する必要はありません。

2) - 、などmysqlで行を作成し、それにアクセスして毎ターン更新します。currentScoreuser

a) 読み込み速度と b) スコアの改ざん防止のバランスを取ろうとしています。ローカルの JavaScript は高速で読み込み時間が短いと考えていますが、mysql レコードは改ざん防止に優れています。どちらがより高速で、どちらがより改ざん防止であるか、またはおそらく私が上にリストしなかったこれを達成する別の方法があるかについて、誰かアドバイスはありますか?

4

3 に答える 3

3

JS ではなく、PHP でゲームを実行します。

私が言いたいのは、プレイヤーのコンピューターがアクションを制御し、結果をサーバーに送り返すことを許可する代わりに...

自動発射ピストル... ...またはヘッドショットスクリプト...またはスピードハッキングのように、人々がハイジャックしてPHPにメッセージを送信できるようにします。

...さらに悪いことに、「自分のターンで 500 ポイントを獲得しました」などのメッセージを送信し、PHP スクリプトに「OK!」を実行させます。

代わりに、ゲーム エンジンのコアは PHP で実行する必要があり、クライアントは「私のキャラクターはX四角形を動かしたい」と言うだけで、サーバーは「いいえ、あなたはチート ツールです。 3 マス移動する」というメッセージが表示された場合、クライアントはこれらのルールを順守する必要があります。

この点で、PHP はスコア管理を 100% 制御します。

于 2012-11-28T00:36:17.850 に答える
2

サーバーに保存されていないデータは改ざん可能です。サーバーに送信されたデータは改ざんされる可能性があります。サーバーはすべてのゲーム データを保存するだけでなく、クライアントからのすべての着信データを検証する必要があります。たとえば、ルールは実際にこのプレーヤーが使用していると私に言っている動きを使用することを許可していますか? そうしないと、かなり簡単にカンニングできます。繰り返しますが、あなたのプロジェクトではそれほど精査する必要はないかもしれません。

于 2012-11-28T00:34:25.687 に答える
1

どちらも、ゲームで JavaScript を信頼しないでください。それを台無しにする賢いプレーヤーが常に存在します。GUI 部分とゲームの制御には JavaScript を使用しますが、PHP ですべての結果、特にプレイヤー固有の値を常に確認してください。該当選手をチェック!! そうしないと、一部の敗者があなたのゲームを台無しにしてしまいます。速度について心配する必要はありません。ゲームのスクリプトを作成し (もちろん、速度とデータを考慮して)、パフォーマンスの問題が発生した場合に調査してください。最初から重要な問題が 1 つあります。それは、データベースのテーブルとクエリについて考えることです。それはパフォーマンスのボトルネックになる可能性が最も高く、悪いphpスクリプトよりも.

于 2012-11-28T00:33:45.803 に答える