【第22期】观点:IT 行业加班,到底有没有价值?

使用RenderWare如何加密解密已经放出去的贴图

原创 2006年06月18日 13:52:00

  我们目前这个项目,因为某些原因,不能使用SFSSingle File System,单文件系统。如果用SFS的话就不需要担心资源加密了。对于一般用户来说,放出去的资源,比如dffanmrws,用户都不知道如何查看这些东西,但是贴图呢,如果没有加密,用ACDSee就可以看了,这样,有些不太想让用户知道的东西,比如过几天要推的新商品,就被他们提前知道长什么样了。

    要解密一张加密过贴图,一般的做法是从磁盘中读进来,以二进制方式,然后解密,再把结果写回磁盘,然后使用RwTextureRead,因为这时候RenderWare才认得贴图文件的格式,Read进来以后再把结果删掉,防止被用户看见。整个过程需要2次磁盘读,1次磁盘写,1次文件删除,忒慢了,将load资源的过程整整加长了大约2倍,玩家会忍受不了的。

    我从RenderWare Support找过相关的咨询,最后决定使用文件系统,就是挂接一个新的内存文件系统进去,专门加密解密贴图。整个过程是这样:一般example运行的时候会先做一件事情,就是调用RwImageRegisterImageFormat来注册贴图的RW函数,对于png格式来说,一般是RtPNGImageReadRtPNGImageWrite 。先把Read的函数替换掉,换成自己的函数,这样使用RwTextureRead的时候就会进自己的函数,这时候会传进来一个filename,把filename加上前缀,这个前缀就是新的文件系统的deviceName,可以把它叫做"Mem:"。举个例子,比如要读的贴图叫"data/GUI/aa.png",我们现在让它变成"Mem:/data/GUI/aa.png",再调用RtPNGImageRead,把新的文件名传给它,这个时候,新的内存文件系统就起作用了。在这个Mem FileSystem中,Open函数先把贴图以二进制格式读进来,判断它有没有被加密过,如果没有,则加密,否则在内存中解密,接下来图片解析过程都是Memory Read,因为属于这个FileSystem的文件都是通过这个FileSystem中的函数来RW的。这样没有被加密过的贴图会在第一次读到的时候被加密,以后再也不会加密,而加密过的贴图只需要一次磁盘Read

    文件系统的例子可以参考example下的pakfile,挂接一个文件系统需要程序提供很多函数,一些不用的函数最好也提供一下,函数体是空的就可以,比如sync,不要让它是NULL。这么说是因为我们在项目中使用了RWARenderWare Audio),RWA的一些程序需要调用RtFSManagerSyncAllFiles,这个函数会sync所有文件系统上的所有函数,通过调用各个FileSystemsync函数,如果sync函数为NULL,就挂了。

 PS:我们用的贴图一般都是png格式,png是无损压缩的,放出去的时候一般都是减色至256色,用的工具是pngquant。还有一个工具叫pngcrush,可以减小png文件的大小,好像也是减色的,具体我忘了:(,可以去sourceforge上下到。如果程序减色的结果不好,可以让美术手动减色。




版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Java使用Hutool实现AES、DES加密解密

介绍AES和DES同属对称加密算法,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法...

使用JavaScript完成最简单加密解密和模仿QQ的窗口抖动效果

众所周知,在计算机里面,字符串都需要编码,在非英文字符都需要一个专门的编码方式,我们可以利用这种方式来 做一个简单的加密解密小程序。 这里使用JavaScript里面自带的escape函数,这

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

AES-128,192,256位加密解密,其中128位已经测试过

package com.test; import java.io.File; import java.io.FileInputStream; import java.io.FileOutpu...

使用exe程序加密解密,web.config时出错 ”Unable to save config to file...."

今天下载了一个web.config加密工具 http://webconfigenc.codeplex.com/ (此工具有源码,有兴趣的可以研究) 在加密页面时,出现一个错误”Unable to save config to file...." 右键选择网站文件夹,...

使用openssl进行RSA加密解密

原文:http://blog.csdn.net/zzj806683450/article/details/17426193 我使用openssl 1.0.1e,过程中遇到一些问题。 #includ...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)