让游戏资源睁开眼睛是不专业的吗?


43

在经历了复杂的API和基本上让我筋疲力尽的zip文件之后,我在打包资源方面仍然遇到问题,我以为我也可以将游戏用人眼可见的资源打包在一个简单的文件夹中。

那会不专业吗?就个人而言,我什至从未见过游戏能够做到这一点,这基本上意味着玩家可以编辑游戏中他想要的任何东西,例如进入map1.txt并在某处添加X来创建墙或更改玩家精灵。到MS PAINT中的小马。


30
只需将其视为改装社区即可:)
Orin MacGregor 2012年

1
您是有预算的专业游戏开发商吗?我认为如果您不打算从此游戏中赚很多钱的话,那很好。我确实有一些提示。如果让您感觉更好,我曾经在X-COM / UFO Defense中编辑保存文件
wolfdawn 2012年

6
@ArthurWulfWhite:我认为,分裂点在于改变资源对游戏的影响,而不是赚钱与否。对于MMORPG,修改后的资源/客户端可能会给某些玩家带来不公平的优势,因此您希望尽可能避免这种情况。对于许多其他游戏,易于更改的客户端使其对于更改社区在您的游戏周围发展具有吸引力,通常被认为是一件好事。
Lie Ryan

1
Quake(1)中的改装方面得到了很好的处理,没有将模型和bsp文件暴露给休闲游戏玩家。我认为隐藏事物同时仍使它们易于访问并不坏。我喜欢我可以在X-COM中编辑保存文件的事实,我将其视为一项功能。但是,如果有一个名为money.txt的文本文件,那太可笑了,我只能输入我想开始的现金数额,因为这会模糊沙盒和游戏之间的边界。
wolfdawn 2012年

2
我喜欢内向的方式:将文件放入重命名的zip文件中,例如sound.dat。使用具有数百个文件的未压缩文件夹会使(卸载)安装变得很烦人。
Tobias Kienzler 2012年

Answers:


44

不,不是,改变游戏数据被称为“修改”,这是一种常见的做法,通常被视为积极的效果。保持游戏数据尽可能透明,并尽可能轻松地进行编辑实际上是一件好事。如果您要选择更多“高级”玩家作为目标受众,那就更是如此。

之所以找不到很多使用普通文件夹结构存储数据的AAA游戏,是因为它们使用了定制的优化存档格式来缩短加载时间。缺点是透明度降低和工具链中所需的其他工具。但是,对于较小的2D游戏,这两个方面通常比改进的加载时间更有价值。

只要确保人们看到的不仅仅是一团糟:)将文件放入适当的文件夹结构中即可。


事物也被包装成一种防止窃取的形式(尽管如果被推动最终会失效)
CobaltHex12年

15

除了其他答案,您还应该考虑两个重要问题:

破坏惊喜
假设我在游戏进行到一半时,发现“视频”文件夹。很好奇,我单击一个,碰巧看到了游戏的最终过场动画。

失去挑战
同样的情况,但是我发现保存的游戏格式具有“黄金”值。我将其从250更改为999999999,并且可以使用。突然,您精心制作的难度曲线(使游戏的乐趣最大化)消失了。

两者都可能导致某人对游戏失去兴趣,部分甚至不是全部。最终可能会降低游戏的整体印象(不公平,但事实如此)。

从目标受众的角度考虑这些问题-年轻球员尤其容易在不真正了解自己正在做的事情的情况下破坏自己的乐趣。

即使您希望鼓励改装,您仍可能希望保护用户避免“偶然”破坏他们自己的游戏体验。


4
非常正确。如果您需要先克服一些障碍,然后再修改游戏,这不会有什么坏处。视频场景+1
wolfdawn,2012年

14

也许不专业是错误的词。真正取决于游戏是否让文件暴露是一件坏事。

对于简单的单人游戏,玩家和改装者会爱上你。您将使他们能够轻松更改游戏并做他们想要的事情。请记住,无论游戏多么小,总是会有游戏的修改者。如果很难进行改装,许多游戏玩家会感到无所适从,毕竟,他们购买了您的游戏,他们应该能够在其中做任何想做的事情。

另一方面,容易编辑游戏资产对于多人游戏不利,因为它被认为是作弊行为。恶意玩家可以替换内容以使敌人更引人注目,透明的墙壁等。尽管您的游戏代码应确实强制要求资产没有被篡改,但“资产打包”方法的好处是有助于阻止这种活动(通过朦胧)。


1
如果您足够擅长绕过校验和测试,那么您也足以弄乱打包的资产。我认为包装不再安全。
mmyers 2012年

11

它有一个简单的修复方法。您可以使用以下命令在命令提示符中简单地对扩展名进行批量重命名

rename *.txt *.map

然后将它们放在\ map文件夹中

您可以从运行cmd的Windows访问命令提示符

这不会阻止那些知道自己想修改游戏的修改者,并且只会给那些只想玩游戏而又没有所有内容徘徊的人留下草率的印象。

是的,它仍然是可编辑的。人们只会很少注意到它。

回答埃里克·罗伯逊的评论

如果您希望对玩家正确隐藏游戏内容,则可以在这些文本文件上使用RSA加密,并在使用时将它们合并为一个文本文件。尽管我认为这超出了解决的范围,但这应该不会造成太大的麻烦。


1
-1这不是一个真正的“解决方案”。资源仍然可用。
埃里克·罗伯逊

6
@Eric Robertson好吧,这也可以说是关于包装Quake(1)样式的。没有完全隐藏资产的神奇解决方案。这仅是为了将它们从休闲玩家中隐藏起来,并在某种程度上规避了他提到的问题。话虽这么说,将它们放在文件夹结构或资产包中并不意味着资产不存在(肉眼可见),除非您使用加密。
wolfdawn 2012年

我知道文件扩展名在Linux上无关紧要,但是您确定这在Windows上可以工作吗?
jcora 2012年

1
@Bane文件名无关紧要,请尝试此操作,将.txt文件重命名为.zip,.bmp或.xyz,然后使用记事本重新打开。文件名仅在您浏览PC上的文件时才重要,例如.xyz具有与之相关的特定图标,如果您希望使用xsoftware打开文件,则默认情况下它将仅显示* .x文件,记事本将显示。 txt文件,mspaint将显示gif,jpegs,bmps,png,tiff,icos等。文件名只是一个方便的约定(因此您不必查看和分析文件中的数据即可确定其性质。内容。
wolfdawn

1
感谢您的解释!那么Windows在该域中似乎与Linux并没有太大不同
jcora 2012年

3

如果它不是专业的,那就可能不再了。早期,游戏使用其自己的包装格式,主要是为了保留其知识产权(IP)。

通过将所有资源打包到单个存档中,可以克服一些限制,例如碎片化和底层本机文件系统的不必要的函数调用。这使得在客户端PC上部署程序包时发生碎片事件的可能性较小。
在最坏的情况下,您最终可能会在硬盘扇区周围散布着很小的单个文件资源。(随着SSD的到来,这一点常常变得毫无意义)

但是所有这些好处也可以通过免费的(Unix)年代久远的.tar存档格式获得。

此外,通过使用自己的包格式,您可以克服一些限制,例如缺少版本控制,文件哈希,文件内的编码和指针/链接等。

最后,除非您明确需要保护自己的IP,否则我主张在独立开发中保持透明。


至于以下方面提出的要点MGOwen:为了防止出现意外情况,可以重命名文件扩展名,更改文件属性,使用不常见的媒体格式,删除媒体头并将其存储在其他位置,等等。为了防止丢失挑战,请使用二进制序列化编写器来存储您的游戏状态,并在必要时提供其他加密和诱骗变量。

免责声明:我不是游戏开发商。仅以这篇文章为起点...


1
“为防止输掉挑战,请使用二进制序列化编写器来存储游戏的状态,并根据需要附加加密和诱骗变量。” 如果人们想作弊,他们就会作弊。使用内存中的调试器查找内存中有哪些四个字节与您的黄金相关联,并根据需要跟踪其变化。
Random832 2012年

1
@ Random832阿们。
劳伦斯·洛绍尔

您的答案是错误的。根据我的经验,访问6000个细小的文件的内容比访问1个文件中的相同内容要慢5到10倍以上。对于在SSD上加载需要5秒钟的情况,从普通硬盘驱动器将相同的数据破坏为可编辑的文件需要15秒钟,而在HDD和SSD上加载都将超过30秒。因此,由于某种原因,SSD的增加比HDD的增加更为明显。(两种情况均不使用RAID)
郊狼(Coyote

@土狼我的印象是我在帖子中主张了同样的观点...?碎片(即硬件控制器限制,盘片的物理限制...)+许多文件系统API调用(通常通过包装器)=慢
Lorenz Lo Sauer 2012年

然后,这个特定的句子是错误的:“随着SSD的到来,这一点变得毫无意义”
郊狼2012年

1

修复起来很容易,否则搜索索引会找到您的大结局视频等。因此,

对于数据文件:使用xor翻转位

   realByte_cpp = readByte_cpp ^ 0x44; // xor

在GREP中隐藏“ Gold:250”。

只需使用相同的(随机)异或值进行编码。

要使场景远离休闲用户,请尝试以下操作:Machinarium转换了文件名,因此\ videos变为\ 0101,然后所有文件都有一个8位ID,后跟.101的ID以停止文件关联。

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.