Godot和訳速報「セーブデータの暗号化」

Adroid iOS向けのようです。

セーブデータの暗号化

何故暗号化が必要なのか

ITは日進月歩です。また、資本主義社会においてはトレンドが日々変化していきます。例えば、ビデオゲームにおいては、メインのマーケットがコンシューマーゲームからモバイルに移りつつあります。彼らは日常のスキマ時間を見つけゲームをすると言うスタイルを取ります。かつてのように、意欲的にゲームに打ち込むゲーマーは少数派となりつつあります。デベロッパは彼らを、ゲームの進行度合いに関係なく、夢中にさせる仕組みを考えなければいけません。彼らはスキマ時間に娯楽を求めてゲームをプレイします。現実を忘れさせるようなひとときを提供しなければなりません。彼らはそのひとときをより楽しむためにお金を払うのです。

さて、彼らがセーブデータを編集することで、無課金で課金しなければ手に入らないアイテムなどを入手したとしたらどうでしょうか。そんな方法がもしも見つかってしまったら、ゲームバランスが崩れ、ゲーム自体の存続の危機となることは明白でしょう。

そんなシナリオを防ぐためにセーブデータの暗号化は重要なのです。それでは、具体的な暗号化の手法を見ていきましょう。

どうやって暗号化をするか

暗号化について説明をする前にFileクラスについて説明します。このクラスはファイルの読み書きを簡単に行えるクラスです。int型やstring型などの変数を書き込むことが出来ます。このクラスで暗号化したファイルへの読み書きも可能です。以下のように記述します。

var f = File.new()
var err = f.open_encrypted_with_pass("user://savedata.bin", File.WRITE, "mypass")
f.store_var(game_state)
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()

OS.get_unique_ID()はAndroid向けゲームかiOS向けゲームでしか使えないのでご留意下さい。暗号化については以上です。

Add a Comment

メールアドレスの入力は任意です。(公開されることはありません)