文件的自定义内容包


13

我将要从一个网站上购买很多模型包来制作我的游戏原型。合同中规定,我必须保护他们,以防止公众接触他们。

我记得使用Valve游戏时,他们使用了.gcf(游戏内容文件),该文件基本上是每个游戏的所有内容的存档。他们包装在声音/材料/模型/地图/等。我认为开发类似的东西可能不是一个坏主意,只是编写一个小工具让我从中添加/删除文件。

问题是我真的不知道如何开始这样的事情。我尝试了Google,但我什至不知道要搜索什么。如果任何人有任何想法,可能有用的链接或其他任何内容,我将不胜感激。

Answers:


9

将数据以稍微模糊的存档格式(例如7-Zip)存储

给他们一个不同的文件扩展名,以使临时用户无法轻松地使用其zip程序打开它们。

使用physfs读取和访问这些文件。它还使您也可以处理本地目录中的文件,因此您可以轻松测试新资源而无需重建软件包。强烈推荐。

例如,考虑对内容进行非常琐碎的加密。XOR加密。编写一些批处理文件或脚本来构建程序包,对输入的数据进行加密,并使用相同的功能对游戏中的数据进行解密。

这不会将坚定的用户拒之门外-什么也不会。但这足以满足模型包的要求。


那天晚上有人向我推荐了physfs。漂亮的小图书馆。
greyfade10年

8

如果您只是在制作原型,那么我就不用担心将您的资产打包到GCF / ZIP / PAK文件中;公众不会看到您的原型!

而且,Valve的GCF为您的内容提供了与ZIP文件一样多的保护-即零。该文件未加密;您可以下载GCFScape来浏览并提取其内容。

除非您现在有ZIP文件或操作系统自己的文件访问机制无法满足的特定需求,否则不应该花精力来创建自己的打包文件系统。实际上,我能想到的唯一原因是:

  • 内容混淆(使文件免于修改是有用的;我仍然建议根据您的当前需求来解决)
  • 以游戏特定的方式存储每个文件的其他元数据,以某种方式帮助数据驱动内容,
  • 解决操作系统的文件系统限制,例如需要快速访问数千个小文件,或确保连续的数据访问。(在控制台上操作时这确实是必需的。)

我完全同意。问题是,如果没有某种形式的保护,我将无法发布演示。ZIP太众所周知了,PAK差不多。ATLEAST与自定义格式(阀需要被硬编码到游戏引擎,以获得GCF文件CTX键)平均乔将不只是能够运行在其上的提取工具和进入。
艾丹·奈特

糟糕,没意识到enter不会落空。无论如何,我发现此nemesis.thewavelength.net/index.php?p=35似乎是一个开源Lib,提供了独立于Valve游戏的GCF功能。我在这里看到的问题是它太健壮了,我一直在寻找一些更简单的方法,只是创建一个基本版本以供以后扩展。(说实话,他的编码方式使我的头部受伤)
艾丹·奈特

4
出于好奇,这是否提及合同如何,你都应该保护自己的内容?
布莱尔·霍洛威

2
这才是重点!由于您不能真正保护它,因此必须(如果您不很愚蠢)确切知道这些不称职的人希望您做什么。否则,无论您做什么,因为它都行不通,您将承担责任(没有做起初无法做的事情)。
o0'。

3

这个要求是胡扯。

由于游戏可以访问数据,并且用户可以访问游戏,因此如果他足够熟练并且有足够的决心,他将设法对您用来存储数据的格式进行逆向工程,如果您足够傻,则可以获取最终的密钥。对其进行加密。

您无法添加安全性。我再说一遍:您只是无法添加安全性。您只能添加晦涩感,而晦涩感完全没有意义,因为-正如我所说-具有足够技能和决心的用户会破坏它。

不要签署任何要求您做不到的事情。


1
晦涩并不是没有意义的,因为大多数用户没有足够的技能和决心。保护您的房屋也是如此:任何真正想要进入的人都可以这样做,但是仍然认为值得让他们感到尴尬。
Kylotan

对抗点:模糊性是没有意义的,因为与闯入您的家不同,一旦有人闯入您的游戏,他们就可以使其他人无足轻重。(从另一方面来说,模糊不清不是没有意义的,因为布雷特需要模型。我只是觉得这种

如果有人从您的家中偷走了一块黄金,他就会拥有您的金子。如果有人从您的数据文件中获取了您宝贵的模型,那么他可以根据需要复制任意数量的副本。因此,不,这个示例不起作用,因为在这里,有多少人破解您的毫无价值的保护完全无关紧要:一个就足够了。
o0'。

一个就足够了,假设其他人足够关心以停止查看其本地文件并上网查看,并提供某人努力将这些内容在线发布(这是非法的,而查看本地副本则是非法的)或发布说明,这些说明假定您有足够的耐心来完成这些操作。每一点帮助。
Kylotan

1
每一点帮助什么?阻止用户查看您的数据而不做任何事情是完全没有意义的,这让我很难过。毫无疑问,存在这种愚蠢的要求是为了防止其他人重复使用这些数据,因此,您只需要关心坚定的人,他们努力并取得成功(因为正如我所说,从长远来看,他们不会失败) 。
o0'。

1

很多时候,我注意到自定义内容包通常是带有不同扩展名的.zip或.rar存档。当然,如果网站想要某种自定义加密,那就不好了。


是的,Ogre已经支持通过zip文件加载资源。有人在聊天室中提到只是为zip文件输入密码,但是由于有大量破解工具,实际上并不是我的首选。我真的很想做一些与Valve使用的.gcf文件类似的操作,但是我什至不知道从入门开始要搜索什么。
艾丹·奈特

如果有人破解了您的zip文件,那怎么了?真。他们可以破解任何您可以扔给他们的东西。你试过了 您在哪里划定这些许可方可以对您负责的职责?
Neverender 2010年

1

一些想法:

1]您是否使用标准模型格式(例如.obj或.x),还是在直接加载到游戏中时使用自定义模型格式?如果您拥有一种自定义格式,并且必须对模型格式进行逆向工程以使其成为一种有用的形式,那么您已经获得了一定程度的保护,以免受机会资产开膛手的侵害。

2] Kylotan关于XOR加密的观点非常出色,除了需要注意的是,您可以使用伪随机数生成序列(可能由文件名上的哈希值播种)进行加密,以避免源数据中长的零序列显示加密字符串。当然,您必须在文件加载后立即对其进行就地解密,但是,如果这确实成为加载时间的负担,则将加密的文件拆分为可重新启动的块将允许您在多个线程上启动就地解密。 。但是我严重怀疑是否需要这种级别的“保护”-特别是,正如其他人所说的那样,坚定的开膛手会绕过它。例如。通过使用DLL绕行库拦截绘图调用,并直接读回顶点缓冲区/索引缓冲区。

3]您必须向原始资产提供者询问他们的保护要求,但这可能只是在程序初始屏幕和/或EULA中添加有关资产版权的内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.