Ⅰ 如何汉化软件app
所谓的游戏汉化软件远远没有我们想象的那么简单,它不仅能够帮助我们进行游戏的汉化,而且它还具有很多相互之间的交互功能,而且
游戏汉化软件
所具有的框架,是其他软件中都不能够具备的,在我们使用汉化软件得时候,我们不仅要保证质量,而且也要提高汉化的速度。
一、名词解释:
文件夹、目录:现在的Mac和Windows都把用来分类存放文件的容器叫做文件夹,但在iPhone,无法称其为文件夹,只能叫做继续沿用Linux、Unix系统的说法叫做目录了,特此解释,我把在Mac或者Windows下的操作称作文件夹,在iPhone或者其安装程序压缩包内的操作称作目录,以免大家对于两种说法感到混乱。
二、拆包ipa
在网上下载的iOS游戏都是后缀为ipa的文件,要想汉化,第一步就是把这个ipa文件给拆包。拆包方法很简单,其实这个ipa文件就是个zip包,把后缀ipa改成zip,然后用winrar 或者 7z打开就可以解压拆包了。
三、寻找资源
拆包完毕之后就是在拆开的文件里面寻找游戏的相关资源:图片、文本和字库(汉化过程一般不会去修改音频资源,视频的话遇到有字幕的就添加中文字幕)。
四、那么该如何寻找呢?
首先,iOS游戏的图片资源一般就是png格式和jpg格式,拆包后一般能在拆包出来的文件里面可以找到很多png和jpg格式的图片。直接用photoshop打开修改即可。不过应用
游戏汉化软件
有时候打开的png图片一片空白,因为这不是标准的png格式图片,需要用工具转换一下。
1.可以使用fixpngWindows来转换,使用方法:把要转换的原始png放在png文件夹,然后执行iPhoneFixPng.exe,点击转换按钮,等转换过程结束,会弹出提示,转换好的文件在fixed文件夹。
2.可以使用ifunboxs 或者 itools直接在安装好的游戏里面进行导出。注:在ifunboxs里面直接把png图片拖出来即可,而itools需要在png图片上右键,然后选择“转换并导出”。
说明:转换后的png图片修改后直接可以使用,无需再转回非标准格式的png图片。
另外,PVR格式也是iOS游戏经常使用的一种图片格式。对于PVR图片可以使用texturepacker转换成png图片。
用PVR Viewer可以打开PVR图片文件,查看图片然后保存成png图片。
说明:PVR转换成png图片可也可直接使用,不用转回PVR文件,但注意文件名要一致,如aaa.pvr-->aaa.png。
其次,文本资源大都存放在.strings和.plist后缀的文件里面,如Localizable.strings,在软件的安装目录下一般会有名称为*.lproj的文件夹,文本资源一般会存放在里面。那如何编辑修正这种格式的文本呢?用记事本肯定是不行的,因为它其实是一种二进制格式的xml文件,我们可以使用plist Editor for windows来编辑。注意:编辑的时候修改string字段即可,请勿修改key字段。
Ⅱ 纹理压缩简介 DXT PVR ETC
参考
为什么需要纹理压缩
移动端纹理压缩格式
干货:Unity游戏开发图片纹理压缩方案
Creator使用压缩纹理
常用纹理和纹理压缩格式
移动设备的纹理压缩方案
各种移动GPU压缩纹理的使用方法
在软件开发,特别是三维应用中,纹理随处可见,但受限于网络环境和硬件能力,纹理也是一大瓶颈。而且在一般的三维应用中,纹理所占大小基本都会在1/2以上,模型中往往超过2/3。或许你会说,纹理不就是一张图吗,有那么重要吗?如下两张对比图,可能你会认为前者逼格高,但对于正常人而言,后者显然要好很多。正是有了纹理,如同在骨架上赋予了皮肤,让我们的应用更加的逼真,贴近现实。
而你能想象到吗?如上的模型一共有三张纹理,其中之一效果如下:
纹理的拼接是纹理压缩的开始,采用不同的压缩方式对纹理最终的大小影响也是显着的。比如上面的这张纹理在不同压缩格式下的大小差别也是非常显着的(原始文件为tga格式,通过Photoshop转换为其他格式,默认选项):
不同于png、jgp这种硬盘压缩方式而言,DXT,ETC等纹理压缩方式可以在游戏运行中无需CPU解压就被GPU直接采样,可以极大的减少内存和带宽的占用,提升运行效率,对移动游戏而言更是如此。
1.DXT
DXT是一种有损纹理压缩算法,微软的Direct中支持,DXT的格式包括DXT1~DXT5,其中DXT1和DXT5较为多见,后面会做详细讨论。可以说DXT是目前应用最广泛的纹理压缩格式,可以认为所有的PC端显卡都支持DXT压缩,维基网络记录,该专利有效期到2017年10月2号。
DXT算法非常容易理解,而且整体看上去效果不错,但如果对局部特写,会发现在细节上会有很多丢失,这也是算法本身导致的,毕竟每个块只有两个颜色,而其他颜色都是在这两个颜色区间的差值,如果当前区域内还有其他显着颜色则必然会有丢失。
另外一个问题就是DXT3和DXT5之间的对比,相比DXT1不支持透明度(但支持是否透明),DXT5要大一倍(多了64bit),和之前颜色保存方案一样对透明度也保存了两个16位的颜色和对应的调色板,对RGBA的效果也得到了保证,但DXT3思路不一样,它是对每一个像素保存了4bit的透明度,同样也是多了64bit,但此时毕竟只有16个透明度选项,相比DXT5,在压缩率上相当,但对透明色的处理不够细腻,因此在实用性上并不推荐DXT3。
尽管DXT在细节上有明显硬伤,在总体效果不错,而且确实是一种强大的压缩方式,所以在多数纹理压缩选择中都是最佳方案,几乎可以认为是PC下的标准压缩格式。
2.PVR&ETC
也许是出于专利和商业角度,也许确实DXT在移动端确实无法满足要求,DXT并没有在移动端得到很大的支持,相反,在iOS设备中支持的是PVR压缩,在Android中支持的是ETC压缩。
DXT在细节上缺陷明显,最重要的原因是当把纹理分为4*4像素的区域块后,每个块之间都是独立的,尽管这极大的简化了压缩算法,但却丢失了相邻块之间这种普遍的相似性。这是算法本身导致的,而PVR则会考虑该区域块对应的右侧,下侧和右下侧的三个区域块的关联性。
从现实的角度来看,受制于专利和硬件厂商,我们并没太多选择的余地,Android下就要用ETC,iOS下只能PVR,而在PC上不用DXT估计就要被嘲讽了。但这也是一个很棘手的问题,比如在WebGL下,特别是Android下差异化很大,是否支持纹理压缩,甚至在同一个设备不同的浏览器,因为驱动的不一致,可能系统自带的会支持ETC压缩,而微信等QQ浏览器下并不支持。而且华为的手机貌似在浏览器级别下都不支持ETC(硬件支持,还是驱动的问题)。而如果在移动设备上不用压缩,显存是有限的,除非你在数据量上做出牺牲,怎么解决都很矛盾,相比而言,iOS下则要舒服很多。
Unity官网对每个平台默认的纹理压缩格式以及使用建议给出了 详细描述 ,需要注意的是:在不同移动GPU平台下选择GPU支持的压缩纹理,就可以在不需要CPU解压的情况下直接被GPU采样,节省CPU内存和带宽,也可以节省存储的体积。 如果目标平台不支持设置的压缩格式,纹理将解压为RGBA32或者RGB24,浪费CPU时间和内存 。
参考 几种主流贴图压缩算法的实现原理
从IOS9(A8架构)Apple 手机开始支持ASTC压缩格式 ,如果考虑放弃Apple 6代之前的手机兼容问题了,可以直接使用了。相对于PVRTC2/4而言,ASTC(4X4)的压缩比会增加到0.25,不过显示效果也会好很多,而且不需要把图片设置为方形。
Using ASTC Texture Compression for Game Assets 说明的比较详细,也给出了一些使用上的建议,即针对不同贴图类型给出不同的压缩方案。
1. laya问答 H5游戏能使用压缩纹理(ETC,PVR等)吗?
Q:H5游戏能使用压缩纹理(ETC,PVR等)吗?
A:部分浏览器会不支持(比如safari)
Q:那laya里面能根据不同浏览器(或不同平台)使用不同压缩格式的纹理吗?
A:你自己是可以获取到当前是哪个浏览器的,自行处理即可
2. LAYA Runtme目前支持 ETC/DXT或者PVR这类格式吗?在文档中没有找到这类的说明
LayaAir目前暂时还不支持ETC/DXT/PVR这类格式!关注layaAir的版本引擎更新日志即可,支持了我们会及时告知!
3. Egret 内存分析-RES加载资源后存在双份内存无法释放的问题
支持pvr、etc已经在计划中。
Ⅲ 一个操作让游戏内存立减50+%-CocosCreator性能优化之压缩纹理
在游戏中,纹理不仅占据大量的包体,也占据了大量的内存。传统的图片压缩格式(如JPEG、PNG等)虽能减少资源大小,但是不能被GPU直接识别,还是需要先加载到内存通过CPU解码,转换成RGB/RGBA等能被GPU识别的格式,才能传送到GPU进行渲染。
为避免这些问题,压缩纹理,指的是一种针对GPU的纹理压缩方案,使纹理能够直接被GPU识别并进行渲染,它具有以下优点。
传统的图片压缩主要目的是 存储 和 传输 ,为了尽可能的高效压缩,使用了可变的压缩比率,因此在解压时需要解压更多的像素位才能读取某个像素的位置,不适合随机和快速读取,也发挥不了GPU的并行处理优势。
而压缩纹理使用一个固定的压缩比率,将纹理划分成多个像素块,每个像素块包含 2*2 或 4*4 个像素,然后对每个像素块进行压缩,被压缩的像素信息存储在一个像素集合中,每个像素块的索引位置存储在一个块索引图中。读取时,首先将纹理坐标转化为块索引值,然后在像素集合中查找对应的像素块,最后在这个像素块中找到纹理颜色值。
因为采用了固定的压缩比率,GPU内部可以并行处理,从而快速的解压缩。与之相对的是,纹理的压缩过程发生在程序运行之前,并不在意编码速度,因此在压缩时会遍历所有可能性,找到和原始像素差值最小的编码,这也是纹理压缩耗时较久的原因。
顺便说一下,普通图片格式中,PNG是无损压缩,JPEG是有损压缩。而压缩纹理都是有损压缩,只是在绝大部分情况下,手机上看不出来而已。
手机上使用压缩纹理依赖于OpenGL ES的支持,OpenGL ES 2.0本身并没有定义任何纹理压缩格式,它仅提供 glCompressTexImage2D() 方法供应用程序上传压缩纹理,压缩纹理的格式由各个GPU厂商定义和实现。
OpenGL ES 3.0提供了压缩纹理标准,使各个平台都可以使用同一种压缩纹理,但市面上的设备还需要很长时间才会全部过渡到OpenGL ES 3.0。因此,仍然需要对不同的平台和设备使用不同的压缩纹理格式。
手机游戏中常用的有以下格式。
ETC1把 4*4 的像素块压缩成固定的64位编码(8个字节), 4*4 像素块是16个像素,每个像素4字节,一共占64个字节,所以压缩比是 64/8=8。但是ETC1只能存储RGB信息,不适用带透明度的纹理,为解决这个问题,Creator在ETC1文件中额外写入了透明度信息,即ETC1+A格式,它的压缩比是 64/16=4。
ETC1/ETC1+A需要OpenGL ES 2.0(对应WebGL 1.0)环境,目前几乎所有Android手机都支持ETC1,但是iOS不支持。
ETC1/ETC1+A纹理的长宽可以不相等,但要求是2的幂次方。
ETC2是ETC1的扩展,压缩比率一样,但压缩质量更高,而且支持透明通道,能完整存储RGBA信息。
ETC2需要OpenGL ES 3.0(对应WebGL 2.0)环境,目前还有不少低端Android手机不兼容,iOS方面从 iPhone5S 开始都支持OpenGL ES 3.0。
ETC2和ETC1一样,长宽可以不相等,但要求是2的幂次方。
Creator中常用的是PVRTC4+A,压缩比和ETC一样,iOS全系列支持,但是Android不支持。另外PVR要求纹理长宽相等(正方形)且是2的幂次方,例如 1280*720 的PNG图片,转换后变成 2048*2048 ,这一点会大大增加内存消耗。在实测中还发现转换后的图片质量不如ETC1,存在模糊、毛边现象,对画面要求高的游戏不适合。
压缩纹理的使用非常简单,根据构建平台添加需要的格式即可,具体参见Creator官方文档,本文不再重复了。
Creator编辑器还提供了转换压缩纹理的选项,根据转换速度分为Fast、Slow等好几档,速度越慢则画面质量越好。但不管选哪个,只影响显示效果和转换时长,显存占用都是一样的。一般情况下,显存占用就是压缩纹理的文件大小,例如文件大小是1.5M,则它占用的显存也是1.5M。
在设置压缩纹理格式时,目前Creator 2.x版本还需手动一个一个设置。如果想一次性设置所有或部分资源,自己写个脚本遍历修改对应的 .meta 文件也比较方便,这里是一个我写好的脚本 一键自动化设置压缩纹理格式
在实际项目中的测试结果是,单图、自动图集、TexturePack合图加起来超过两千张图片的Creator工程,使用PNG时打出来的apk包大小近500M,内存占用1.3G。采用压缩纹理后,包体大小降到150M,内存占用降到600M。