1

2D MMORPG ゲーム (アプレット形式) を作成していますが、簡単な質問がありました。

一般的なハッキング防止手法としてのセキュリティ上の理由から、クライアントに含まれる論理データの量はできるだけ少なくする必要があることを理解しています (操作や悪用ができないようにするため)。

私の質問は次のとおりです。サーバーからクライアントにデータを送信するとしましょう(これは非常に頻繁に発生していると思われます)。パケットを受信したクライアント コードでは、そのパケットを「チャンク」に解析し、そのデータを正確な対応する変数に論理的に格納します。変数の 1 つにプレイヤーの健康状態が格納されているとします。つまり、この変数は実際には計算に使用できないということですか? つまり、それは論理的なデータであるため (したがって、クライアントに格納されているため操作できます)、唯一の代替手段は次を含むパケットを読み取ることです。健康量が必要になった場合の健康に関する情報は?

私の質問を読んでくれてありがとう。-ブライアン

4

2 に答える 2

1

それは、どの計算に使用しているかによって異なります。UI 表示などの重要でない場合は、ローカル変数を安全に使用できます。プレイヤーが死んでいるかどうかを判断するためにそれを使用している場合は、サーバーにその判断をさせる必要があります。待機時間が長い状況では、サーバーがクライアントを更新できるようになるまで、ローカル変数を一時的に使用できる場合があります。ただし、クライアントのバージョンは正規バージョンであってはなりません。

詳しく説明すると、影響を受けるのはプレーヤーだけであるローカル変数を使用するため、プレーヤーが自分のデータを操作するかどうかは問題ではありません。他のすべての状況では、サーバー変数に依存してください。

于 2013-01-13T16:40:24.290 に答える
0

私が行う方法は、クライアントで実行されたアクションに基づいて、サーバーに独自の計算を実行させることです。クライアントは同じアクションを実行して、より高速な更新をクライアントに提供できますが、サーバーは何が起こったかの信頼できる決定者である必要があります。これは、クライアントとサーバーの間で発生するすべてのことを再確認するために、それほど多くの対話を必要としないことを意味します。

于 2013-01-13T17:58:59.947 に答える