加密保存游戏

为什么?

因为今天的世界不是昨天的世界。资本主义寡头统治着世界,迫使我们消费,以保持这个腐朽社会的运转正常。因此,当今最大的电子游戏消费市场是移动市场。这是一个穷人的市场,他们被迫消费数字内容,以忘记他们日常生活的痛苦,减刑,或只是他们拥有的任何其他短暂的自由时间,他们不使用这些时间为统治阶级生产商品或服务。这些人需要继续关注他们的电子游戏(因为不这样做会让他们充满巨大的存在主义焦虑),所以他们花更多的钱在他们身上来扩展他们的体验,他们最喜欢的方式是通过应用内购买和虚拟货币。

但是,如果有人想找到一种方法来编辑保存的游戏,不费吹灰之力地分配物品和货币呢?这将是可怕的,因为它将帮助玩家更快地消费内容,因此比预期更快地用完内容。如果这发生了,他们将没有任何东西可以避免他们去思考,并且意识到自己的无关性的巨大痛苦将再次接管他们的生活。

不,我们绝对不希望发生这种情况,所以让我们看看如何加密savegames和保护世界秩序。

怎么用?

班级 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。

就这些!谢谢你的合作,公民。

注解

这种方法不能真正阻止玩家在本地编辑他们的游戏,因为加密密钥存储在游戏中,玩家仍然可以自己解密和编辑文件。防止这种情况发生的唯一方法是将保存数据存储在远程服务器上,在远程服务器上,播放机只能对其保存数据进行授权更改。如果你的游戏涉及真正的金钱,你无论如何都需要这样做。