1

現在、チームと協力して Unity ベースのゲームを開発しています。ゲームはまだ開発中のアルファ版です。

最近、ゲームがチートエンジン、スピードハックなどに対して脆弱であることがわかりました。更新後の更新、チートは現在安定しています。また、Unity の ACT またはアンチ チート ツールキットも紹介しました。ゲームはUnityベースなので、ゲームにアイデアを実装するのは簡単です.

「ハッキング」は安定しますが、「グリッチ」はそうではありません。

これはオープンワールドのサバイバルゲームで、アイテムの選択とドロップで構成されています。問題は、2 人のプレイヤーが一緒にアイテムを拾うと (現在、アイテムを拾うにはクロスヘッドがアイテムの上にあるときに E を押す必要があります)、アイテムが複製されることです。私たちはそれを修正するために何日も働いてきましたが、幸運ではありません.

近くに別のプレイヤーがいる場合、アイテムを拾うことができないことを紹介しました。奇妙に見えますが、ゲームをスムーズにしたいと考えています。自動ピックアップアイテムも試しました。それが私たちの計画ですが、他にできることはありますか?

4

1 に答える 1

4

プレイヤーがメモリ値を変更して不正行為を行ったり、アイテムの重複などの問題を回避するために同期されたゲーム状態を維持したりすることが懸念される場合は、ゲームの「公式」値と状態を格納および更新する権限のあるサーバーのセットアップを検討する必要があります。 .

基本的に、値を保存してプレーヤーのコンピューターで直接アクションを実行するのではなく、ゲームがやりたいことのリクエストをサーバーに送信し、サーバーがアクションを実行し、公式のゲーム状態を更新し、新しい状態を送信します。プレーヤーに戻って、ゲームが更新されるようにします。

これにより、プレイヤーが画面上の値 (通貨やヘルスなど) を変更した場合でも、サーバーには真の値が含まれているため、メモリの編集が防止されます。

また、キーが押されたときにローカル ゲームがプレーヤーを直接移動させるのではなく、キーを押すとサーバーに移動要求が送信され、プレーヤーの位置が更新され、新しい位置が返されるため、スピードハックなどのエクスプロイトも防止されます。 .

最後に、これによりアイテムの重複が防止されます。これは、両方のプレイヤーがアイテムを拾おうとすると、両方ともアイテムのピックアップ要求をサーバーに送信するためです。どちらのプレイヤーの要求が最初に到着しても、アイテムを受け取ると、サーバーはゲームの状態を更新してアイテムが地面に落ちないようにし、2 番目のプレイヤーの要求は無視されます。存在します。

簡単に言えば、不正行為を防止する最善の方法は次のとおりです。重要な値を保存したり、重要なアクションをプレイヤーのコンピューターに実行したりしないでください。

于 2016-08-27T23:01:01.770 に答える