如何打包游戏资产并仅允许引擎读取?

时间:2019-01-15 11:22:40

标签: c++ binary filesystems game-engine

我正在为C ++开发2D游戏引擎,并且几天来,我一直在寻找一种保护未来游戏的图像和音频的方法。我知道没有100%的保护,并且有人可以打开这些文件,但是我的意思是刚刚安装游戏的普通用户,防止其修改精灵,更改声音,用游戏地图数据覆盖xml文件。

我下载了一些Unity制作的游戏,并注意到使用了.assets扩展名,在《暗黑破坏神2》中则使用了.ma0,.mpq,.data,在FEZ .pak中,在Super Meat Boy中仅使用了.tp文件。换句话说,您无法在文本编辑器中打开和编辑任何这些文件,也无法使用winrar解压缩,它们提供了最低级别的保护。怎么做?我是否必须创建自己的二进制文件格式,或者是否有任何程序可以使工作更轻松?

2 个答案:

答案 0 :(得分:1)

iirc中实际上有多个问题:

  • 如何防止用户阅读游戏资产?
  • 如何防止用户操纵游戏资产?
  • 可以使用哪种文件格式存储游戏资产?

如果您使用的是现有引擎,则它可能对此有所支持,如果足以满足您的目的,则只需学习如何使用它。

如果需要自己动手,则需要明确定义需求并选择满足要求的解决方案。对于资产存储,基于ZIP的格式可能最容易处理,所有语言都对此提供某种形式的支持。为了保护完整性,您应该使用加密算法:数字签名用于检测篡改,而加密则可以防止读取。这些可能会稍微放慢资产的开放速度,但是在大多数情况下,这应该是可以接受的。

答案 1 :(得分:1)

你不能。

“最低保护级别”甚至比您想象的还要小。您可以在十六进制编辑器中打开这些文件,然后对其进行破解。几十年来,这种活动很普遍。

您可以加密数据,但是由于密钥必须存储在应用程序中,并且用户拥有应用程序的副本,因此也可以提取和/或更改它。

您可以添加数字签名,以防止人们修改资产然后再使用它们(“修改”),但是同样,可以在您的应用程序中对此进行更改。

您可以通过以专有格式运输资产来对其进行混淆,但这通常纯粹是出于功能原因,因为有人会再次对它们进行反向工程。

一旦某物在他人的计算机上,您就失去了对该物的控制权。