まえがき
不正行為を防止する方法は、依然としてゲーム開発において非常に重要な部分を占めており、これには関連事項も含まれます。ゲームの収益性を考慮して、チート対策が講じられていない場合、開発したアプリが翌日にオンラインでリリースされたり、クラックされた無料版が翌日にリリースされたりする可能性があります。私はこれを個人的に経験しました。もちろん、これはアプリに基づくものです。 「不正行為会社に騙されやすいです。私もそれをフォローしています。かつて人気があった PC 版のチキン ゲームですが、実際には不正行為が非常に横行しています。これは不正行為対策がないためでもあります。求職者は、どうすればよいのかとよく尋ねられます。」求人に応募する際の不正行為を防ぐためです。もちろん、最も単純な方法を考えることもできます。解決策は、クライアント上のデータを信頼するのではなく、サーバーのデータを検証することです。もちろん、この解決策は、一部の環境ではこのように設計できますクライアントとサーバーのインタラクションが比較的少ない状況 FPS を想定すると、各ショットによって引き起こされるダメージは 1 フレームです。その中には多数のショットが含まれます。毎回サーバーに確認することは不可能です。インタラクションが頻繁すぎるため、エクスペリエンスが非常に悪いですが、これをチェックしないとクライアントが武器の属性値を変更してしまいます。これがクライアントの不正行為です。どのようにして解決しますか? この問題を解決するために、以下に不正行為対策のアイデアを紹介します。
クライアントでチートする方法
モバイル版
モバイル ゲームを初めてプレイし始めたとき、私はきっとプレイしたはずです。 「Flappy Bird」というゲームをプレイしている人なら誰でも知っている、非常に残酷な携帯ゲームです。当時は非常に人気があり、友達の輪の誰もがスコアを投稿していました。後から、「Flappy Bird」というアプリが使えることを知りました。 「Eight Gate Artifacts」は、スコアを不正行為して改変し、非常に高いスコアに改変します。友達のサークルにスコアを投稿すると、自分が「とても素晴らしい」ように見え、自分の虚栄心を満たすことができます。原則はスコアを改変することです。不正行為の効果を達成するためのメモリ値。
PC 側
携帯電話の 8 ドア アーティファクトに似た Cheat Engine など、PC 上のメモリを変更するための対応ソフトウェアもあります。
不正行為を防ぐ方法
Unity 開発では、Anti- Cheat Toolkit。Asset Store からダウンロードできます。具体的な原理は、データ難読化により、UI に表示される値が実際に計算した値になるため、メモリ修飾子は UI に表示される値に基づいてメモリ アドレスを見つけることができないということです。
アンチチート原則
private int curATK; private int curAtkKey; public int CurATK { get { return curATK ^ curAtkKey; } set { curAtkKey = Random.Range(0, 0xffff); curATK = value^curAtkKey; } }
分析: ^ 演算は XOR 演算であり、バイナリの知識が少し必要です。XOR 演算は、同じが 0 で、差が 1 であることを意味します。例を次に示します: 3 ^ 4=7、3 に対応する 2 進数は 11、4 に対応する 2 進数は 100、XOR 演算後の 2 進数の結果は 111、対応する 10 進数は 7 です。
分析
上記のプログラムによると、不正行為を防ぐ方法を本当に理解していますか? numは入力した値です。たとえば、プレーヤーの現在の金貨の数は 4 です。しかし、UI 上の表示は直接 Coin.Text = num.ToString() ではありません。このようにして、プレーヤーは簡単にメモリを変更できます。 UI に表示される値は、hiddenValue^cryptoKey の値です。プレイヤーが num の値を見つけて変更したとしても、実際に表示される金貨の数には影響しません。
分析プラグインアンチチートツールキット
Unity 開発者は、多くの人がこのプラグインを使用すると推定しています。データ暗号化はどのように実装されていますか?これは、Unity の基本データ型を、int->ObscuredInt、Float->ObscuredFloat、string->ObscuredString などの対応するデータ型にカプセル化することを知っておいてください。 ObscuredInt を例に挙げます:
これは Int に対応する構造体をカプセル化しており、混乱要因 cryptoKey=444444 があることがわかります。文字列型によってカプセル化されたクラスである ObscuredString を見てみましょう。その混乱要因は文字列 cryptoKey="4441" です。このプラグインを何も変更せずに使用すると、私がハッカーで、あるゲームが現在 Unity によって開発されており、そのデータがアンチチート処理されていることを知っているとします。では、どうすればアンチチート保護を突破できるでしょうか? 間違いなくプラグインが最初に思い浮かぶものですが、これらの混乱要因を知っていれば、それを突破するのは比較的簡単です。不正行為をさらに防止するには、プラグインの混合要素を混同したり変更したりすることが非常に重要です。
以上がゲーム開発における不正行為防止とその原則の簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。