セーブデータの暗号化

どうして?

なぜなら、今日の世界は昨日の世界ではないからです。資本主義の少数独裁者は世界を運営し、この腐敗した社会の歯車を軌道に乗せるために私たちに消費を強制します。そのため、今日のビデオゲームの消費における最大の市場はモバイル市場です。それは、日常生活の苦悩、通勤、または支配階級の商品やサービスの生産に使用していない他の短い自由時間を忘れるために、強制的にデジタルコンテンツを消費することを余儀なくされた貧しい亡霊たちの市場です。これらの個人は、ビデオゲームに集中し続ける必要があります(そうしないと、現実的な不安にとらわれてしまいます)。そのため、彼らは自分の経験を伸ばすためにそれにお金を費やしますが、彼らの好む方法はアプリ内購入と仮想通貨を使用することです。

しかし、誰かが保存されたゲームを編集し、手間をかけずにアイテムと通貨を割り当てる方法を見つけたらどうでしょうか?それはプレイヤーがはるかに速くコンテンツを消費し、したがって、予想よりも早くそれを使い果たすのを助けるので、それはひどい結果になります。それが起こると、彼らが現実から目を背けるためのものは何もなくなり、自分自身の無意味さに気付くという恐ろしい苦悩が再び彼らの人生を覆いつくすでしょう。

いいえ、私たちは絶対にそれを望まないので、セーブゲームを暗号化し、世界の秩序を保護する方法を見てみましょう。

どうやって?

クラス File は、ある場所でファイルを開き、データ(整数、文字列、バリアント)を読み書きできます。暗号化もサポートしています。暗号化されたファイルを作成するには、次のようにパスフレーズを提供する必要があります:

var f = File.new()
var err = f.open_encrypted_with_pass("user://savedata.bin", File.WRITE, "mypass")
f.store_var(game_state)
f.close()
var f = new File();
var err = f.OpenEncryptedWithPass("user://savedata.bin", (int)File.ModeFlags.Write, "mypass");
f.StoreVar(gameState);
f.Close();

これにより、ユーザーはファイルを読み取れなくなりますが、ユーザーがセーブファイルを共有できなくなることはありません。これを解決するには、デバイスの一意のIDまたは一意のユーザー識別子を使用します。次に例を示します:

var f = File.new()
var err = f.open_encrypted_with_pass("user://savedata.bin", File.WRITE, OS.get_unique_id())
f.store_var(game_state)
f.close()
var f = new File();
var err = f.OpenEncryptedWithPass("user://savedata.bin", (int)File.ModeFlags.Write, OS.GetUniqueId());
f.StoreVar(gameState);
f.Close();

OS.get_unique_id() はUWPまたはHTML5では機能しないことに注意してください。

これだけです! 市民よ、ご協力に感謝します。

注釈

暗号化キーはゲーム内に保存されているため、プレイヤーはファイルを自分で復号化および編集できるため、この方法では、プレイヤーがセーブゲームをローカルで編集することを実際に防ぐことはできません。これができないようにする唯一の方法は、セーブデータをリモートサーバーに保存することです。この場合、プレイヤーはセーブデータに対して許可された変更のみを行うことができます。ゲームで実際のお金を扱う場合は、とにかくこれを行う必要があります。