【转载】TexturePacker 如何使用自带的加密功能及在cocos2dx中的使用

来源:互联网 发布:php app 用户注册源码 编辑:程序博客网 时间:2024/06/04 18:50

【转载】TexturePacker 如何使用自带的加密功能及在cocos2dx中的使用

时间:2014-11-13 10:41:56      阅读:1656      评论:0      收藏:0      [点我收藏+]

标签:class   代码   src   使用   html   文件   问题   com   log   

在cocos2dx中使用纹理图集是非常节省资源的,在这里推荐 TexturePacker,而且 TexturePacker工具的加密接口也非常的好用,下面就来介绍一下。。。

TexturePacker 工具的加密,只是相对于一般使用的基础上增加了几步对密码操作的步骤(目前的加密功能仅适用于.pvr.ccz格式):

一、生成密码(图形化界面和命令行两种方式)

方式一:图形化界面生成密码

bubuko.com,布布扣

密码可以自己手动过输入,或者使用下面的这几个按钮,完后点击外面的空白区域就自动保存了。。。

(2)shell脚本命令行生成密码

1>、首先安装 commandline Tool, 菜单栏 -> Install commanndLine Tool

2>、参照 不忘初“辛”的帖子 http://www.cnblogs.com/flyFreeZn/p/3587770.html,写 生成图集的脚本,并在此基础上增加 加密操作:

1 # next line is encrypt command option        2 # --content-protection "11111112122222223333333344444444" \
bubuko.com,布布扣
 1 #! /bin/bash 2  3 CURRENT_DIR=`dirname $0` 4  5 # input paths 6 IMAGE_DIR=$CURRENT_DIR/imgs/ 7  8 # path that game proj use 9 GAME_IMAGE_PATH=$CURRENT_DIR/10 11 # path of the texture packer command line tool12 TP=/usr/local/bin/TexturePacker13 14 # $1: Source Directory where the assets are located15 # $2: Output File Name without extension16 # $3: RGB Quality factor17 # $4: Scale factor18 # $5: Max-Size factor19 # $6: Texture Type (PNG, PVR.CCZ)20 # $7: Texture format21 # $8: encrypt key, Key: 128 bit, 32 hex digits [A-F0-9]22 pack_textures() {23 24     ${TP} --smart-update 25         --texture-format $7 26         --format cocos2d 27         --data "$2".plist 28         --sheet "$2".$6 29         --maxrects-heuristics best 30         --enable-rotation 31         --scale $4 32         --shape-padding 1 33         --max-size $5 34         --opt "$3" 35         --trim 36         --premultiply-alpha 37         38         --content-protection $8 39         $1/*.png40 41 }42 43 # do the job44 for i in $IMAGE_DIR/*45 do46     if [ -d $i ] 47     then48         spriteSheetName=`basename $i`49         pack_textures $i $GAME_IMAGE_PATH/$spriteSheetName ‘RGBA8888‘ 1 2048 ‘pvr.ccz‘ "pvr2ccz" "12345678123456781234567812345678"50     fi51 done52 53 # next line is encrypt command option        54 # --content-protection "12345678123456781234567812345678" \
bubuko.com,布布扣

至此,加密操作便是完了,密码是 12345678123456781234567812345678。

二、在cocos2dx中读取图集:

1、由于在cocos2dx引擎中集成了图集解密所需要的 ZipUtils类,所以不用引入直接使用就好。。。

2、在游戏还没有使用图集之前进行解密

1 // 图集解密   123456781234567812345678123456782     ZipUtils::setPvrEncryptionKey(0x12345678, 0x12345678, 0x12345678, 0x12345678);

 

3、然后,然后就正常使用就好啦,我贴出我在Lua中的使用:

1 local spriteFrameCache = cc.SpriteFrameCache:getInstance()2     spriteFrameCache:addSpriteFramesWithFile("tmp/texture_tmp.plist", "tmp/texture_tmp.pvr.ccz")

 

 

以上使用的cocos2dx的版本为 v3.2,TexturePacker版本为。。。额,装完命令行工具就找不到版本号了。。。

 

 

内容更新:

在上面的博客中介绍到了使用命令行来加密图集,在使用的过程中我又发现了使用命令行新的有用的命令。。。

上面的命令行可以实现对一个所有处在同一目录下的资源进行打包,但是不能进行递归打包,那么就有了接下来的命令选项。。。

在上面的命令中 更改

$1/*.png

为:

$1

即将索引到图片改为索引到上级目录文件夹,这样的话就可以实现递归文件目录打包,但是有个问题,当要打包的所有图片过多或者过大而使一个图集装不下的情况时,需要进行动态递增打包,使用下面的命令

更改原来的

1 --data "$2".plist2 --sheet "$2".$6 \

为:

1 --data "$2"_{n}.plist2 --sheet "$2"_{n}.$6 3 --multipack \

上面脚本中的 _{n}是占位符,用来增加文件名用的, --multipack 是动态打包的选项。

打包出来的效果是:

bubuko.com,布布扣


TexturePacker 图片加密

TexturePacker最新版本中增加了一个新功能以防止你的产品资源被反编译出来。它被称为ContentProtection,即图片加密。

你的app或者游戏仍可以解密数据,但是其他人则需要耗上很长的时间才能够完成破解。

理论上别人仍可能从源码提取出密钥,并写出一些解码器,这是因为解码器和密钥已经被存储在你的app中-

否则不可能使用你的游戏资源。但是这需要花费知识,时间和精力来解密你的资源。所以他们很有可能找一些

其他更简单的猎物来破解而不是你的资源文件。

TexturePacker加密策略设置

假设你已经运行过TexturePacker 创建精灵表,所以只需要打开一个已经存在的.tps文件。

下载最新版的TexturePacker-在左侧你会看到一个新的option属性:Content Protection。按下“Lock”图标,并会弹出一个新的窗口:

在编辑框中你可以输入你想要设置的key-或者按Create new key 按钮创建新的key

使用Clear/Disable来关闭加密功能。

在 TexturePacker 中 按下Save as global key 会存储密钥key为全局变量,在.pvr查看器中用它来解密,

通过按下Use global key按钮你可以复制密钥key到其他精灵表中。

改变文件的格式为pvr.ccz是非常重要的,它是当前唯一支持解密的格式。

在TexturePacker中按下Publish完成在TexturePacker中的工作。

在命令行中输入的命令是:–content-protection <key> ,其中 key必须是32位十六进制值。

在Cocos2d工程准备 Content protection

下载并拷贝下面2个文件到你的cocos2d文件夹里: libs/cocos2d/Support

-替换已经存在的2个文件:

  1. ZipUtils.h
  2. ZipUtils.m

现在在你的app里设置密钥key。在第一个精灵表导入前你可以在你的程序启动前调用4个方法来完成它。

为了让他们更难被破解请尝试分开调用。

如果你的密钥是aaaaaaaabbbbbbbbccccccccdddddddd,你必须将它们分成4部分每部分8位:

  1. aaaaaaaa
  2. bbbbbbbb
  3. cccccccc
  4. dddddddd

128位加密密钥每个值是32位。在它是作为一个另一个值传递给函数,因此在app中它很难定位。

  1. caw_setkey_part(0, 0xaaaaaaaa);
  2. caw_setkey_part(1, 0xbbbbbbbb);
  3. caw_setkey_part(2, 0xcccccccc);
  4. caw_setkey_part(3, 0xdddddddd);

在每一个文件里使用caw_setkey_part,你都得确保添加下面一行:

  1. #import “ZipUtils.h”

如果你已经改了文件的格式,那么现在你需要导入的是.pvr.ccz文件代替你之前使用的。

当然你也可以添加新文件到你的工程里。对,就是这样!

总结

保护你游戏资源被盗是容易的。使用新的Content Protection功能你只需要不到五分钟的时间来设置就可以做到。

苹果需要加密和内容保护

我不是律师&我不知道这是否合法!根据我对苹果的iTunes Connect指导和工业安全局的理解:如果你使用TexturePacker的Content Protection,你不需要在你的app/游戏里获得ERN认可。

加密仅是用于保护你的知识产权的,并且用户是访问不了的-在规定中不被包含。

查看工业安全局加密 FAQ(the Bureau of Industry and Securitys Encryption FAQ) -

问题 15 (What is Note 4?)里面说到:

…不在第五类第二部分的项,包含在Note 4中,但是没有限制,这些项有:

可消费的应用,一些例子:

  • 软件或者音乐盗版和防盗版。
  • 音乐,电影,曲子/音乐,数码照片-播放器,录音机和管理器。
  • 游戏-设备,实时软件,HDMI和其他组件接口,开发工具。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 学校发的卡掉了怎么办 汇款回执单丢了怎么办 大学交学费的卡丢了怎么办 交学费的银行卡丢了怎么办 学校补助卡丢了怎么办 学校交学费的卡丢了怎么办 采购零星材料无发票怎么办 租房合同弄丢了怎么办 买房的合同丢了怎么办 押金的收据丢了怎么办 房东的合同掉了怎么办 个人档案里单位没有放合同怎么办 签的合同掉了怎么办 一方合同弄丢了怎么办 合同丢了怎么办如何补 签了定金合同对方违约怎么办 医学出生证明丢了怎么办 易通行出站未刷怎么办 炭烧酸奶过期了怎么办 西安建行etc坏了怎么办 电机在设备壳体中拔不出来怎么办 公司变更股东不能亲临现场怎么办? 公司股东变更老股东不签字怎么办 公司变更地址股东不签字怎么办 公司变更股份股东不签字怎么办 公司股东离职股东没变更过来怎么办 河南省宋基投资公司欠钱怎么办 曲江楼观2O18怎么办 华旭金卡身份证扫描不了怎么办 水表里有钱没水怎么办? ff14过图速度慢怎么办 想让电表跑的慢怎么办 家里电表突然没有电了怎么办 电表不识别电卡怎么办 家里水表不转了怎么办 车管所体检色弱怎么办 煤气押金单没了怎么办 中国建设银行登录密码忘了怎么办 中国建设银行登录密码忘记了怎么办 公司车辆怎么办换新能源牌 杭州新能源汽车牌照外地人怎么办