我正在为C ++开发2D游戏引擎,并且几天来,我一直在寻找一种保护未来游戏的图像和音频的方法。我知道没有100%的保护,并且有人可以打开这些文件,但是我的意思是刚刚安装游戏的普通用户,防止其修改精灵,更改声音,用游戏地图数据覆盖xml文件。
我下载了一些Unity制作的游戏,并注意到使用了.assets扩展名,在《暗黑破坏神2》中则使用了.ma0,.mpq,.data,在FEZ .pak中,在Super Meat Boy中仅使用了.tp文件。换句话说,您无法在文本编辑器中打开和编辑任何这些文件,也无法使用winrar解压缩,它们提供了最低级别的保护。怎么做?我是否必须创建自己的二进制文件格式,或者是否有任何程序可以使工作更轻松?
答案 0 :(得分:1)
iirc中实际上有多个问题:
如果您使用的是现有引擎,则它可能对此有所支持,如果足以满足您的目的,则只需学习如何使用它。
如果需要自己动手,则需要明确定义需求并选择满足要求的解决方案。对于资产存储,基于ZIP的格式可能最容易处理,所有语言都对此提供某种形式的支持。为了保护完整性,您应该使用加密算法:数字签名用于检测篡改,而加密则可以防止读取。这些可能会稍微放慢资产的开放速度,但是在大多数情况下,这应该是可以接受的。
答案 1 :(得分:1)
你不能。
“最低保护级别”甚至比您想象的还要小。您可以在十六进制编辑器中打开这些文件,然后对其进行破解。几十年来,这种活动很普遍。
您可以加密数据,但是由于密钥必须存储在应用程序中,并且用户拥有应用程序的副本,因此也可以提取和/或更改它。
您可以添加数字签名,以防止人们修改资产然后再使用它们(“修改”),但是同样,可以在您的应用程序中对此进行更改。
您可以通过以专有格式运输资产来对其进行混淆,但这通常纯粹是出于功能原因,因为有人会再次对它们进行反向工程。
一旦某物在他人的计算机上,您就失去了对该物的控制权。