保护C+中存储的数据+;RPG游戏 我现在正在开发一个在Windows上使用C++和SFML的RPG游戏。目前它运行良好,但当我检查所有内容时,我意识到,由于所有数据(如物品、库存、生物、战斗、NPC、商店等)都存储在文本文件中,因此使用任何文本编辑器都很容易操作

保护C+中存储的数据+;RPG游戏 我现在正在开发一个在Windows上使用C++和SFML的RPG游戏。目前它运行良好,但当我检查所有内容时,我意识到,由于所有数据(如物品、库存、生物、战斗、NPC、商店等)都存储在文本文件中,因此使用任何文本编辑器都很容易操作,c++,storage,sfml,data-protection,C++,Storage,Sfml,Data Protection,我想至少防止这些数据被轻易操纵。显然,无论何时数据存储在发布版中,都会有人通过并能够对其进行编辑 我想知道保护这些数据的最佳途径是什么,同时仍然能够使用将来构建的工具(如地图编辑器、项目编辑器、NPC编辑器等)以及引擎本身对其进行编辑 我更喜欢自己写,只是想得到一些关于如何最好地完成它的想法,因为我主要是用它来更好地学习语言。如果有人真的认为这是愚蠢的,请让我知道,所以我可以考虑使用可选的库。 如果你以后再做,我会很感激任何人能推荐一个好的给我使用 我想知道保护这些数据的最佳途径是什么 在保持使

我想至少防止这些数据被轻易操纵。显然,无论何时数据存储在发布版中,都会有人通过并能够对其进行编辑

我想知道保护这些数据的最佳途径是什么,同时仍然能够使用将来构建的工具(如地图编辑器、项目编辑器、NPC编辑器等)以及引擎本身对其进行编辑

我更喜欢自己写,只是想得到一些关于如何最好地完成它的想法,因为我主要是用它来更好地学习语言。如果有人真的认为这是愚蠢的,请让我知道,所以我可以考虑使用可选的库。 如果你以后再做,我会很感激任何人能推荐一个好的给我使用

我想知道保护这些数据的最佳途径是什么 在保持使用工具编辑的能力的同时 将在将来构建,如地图编辑器、项目编辑器、, NPC编辑等,以及引擎本身

我认为没有最好的解决办法。最简单的方法是加密文件,对密钥进行硬编码以在游戏中解密。
但这不会阻止对二进制文件进行反向工程以恢复密钥。

让游戏引擎以文本和二进制格式读取文件。二进制格式可以像在文件目录上使用zip压缩一样简单。然后可以对二进制文件实现校验和

在开发中,您可能会使用文本版本,但在实时游戏中,您只允许读取二进制格式,并且会拒绝未通过校验和的文件


这不是超级安全的,因为有人会对校验和进行反向工程。但它会阻止临时用户编辑您的游戏数据。您可以让游戏客户端根据服务器上已知的良好校验和来验证游戏数据校验和,从而使其更加安全。

首先,gamedev.stackexchange.com可能更适合帮助您。其次,正如您自己所说,无论您如何存储文件,用户最终都可以修改它们。因此,只要你的游戏是单人游戏(如果不是,你有一个服务器来执行这些事情),我就不会担心。将文件存储在游戏安装的子文件夹中,让不想玩实际游戏的人随意修改。这对任何人都没有任何伤害:)说得好,但正如我说的,这主要是为了练习,除了朋友之外,可能不会分发给任何人。我正在尝试尽可能多的练习领域,并将它们放在一起。这将产生巨大的差异:)在这种情况下,海森堡可能在他的答案中找到了答案+1、这是一个很好的起点。如果使用非对称加密算法(即公钥和私钥对),则可以避免其弱点(逆向工程)。有很多免费的实现,我不认为非对称加密可以解决这个问题。事实上,在二进制文件中仍然可以找到硬编码的私钥。谢谢你的推荐。我在考虑这样的事情,但我在想可能有某种文件可以保存它。一个梦,我知道。XDI考虑以另一种方式(而不是硬编码)分发私钥,例如使用私钥服务器,使其成为许可证密钥的一部分,或者使用usb令牌。这可能使部署更加复杂;这取决于应用程序。无论如何,知道钥匙是不够的。您还需要知道所使用的加密算法,因此它没有那么弱。您可以制作一种用于编辑文件的Crytographic安全格式,因为如果客户端只需要读取数据文件,您不必分发私钥。它并不能阻止一个有决心的黑客找到存储的公钥并读取文件。但您可以控制谁可以编辑该文件。