2014年05月24日更新

以前的关注点都是 怎么用 根本没有往深层次追踪过。为什么这么用。今天记录下:

如果我们用的是pvr.ccz的图片 加载到内存中是根据你到处是的像素格式来渲染到ui中。如到处是你用16位则加载到内存中他还是16位。占用的内存比较少。

如果你用32位 则内存中也是32位 内存是16位的2倍;

但是如果你用的是png jpg则不是上面的方式 。。不管你用什么格式 加载到内存中都是32位占的内存是最大的。除非你设置

Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGBA4444);

用完之后记得设置为默认模式

Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::DEFAULT);

IOS与图片内存

在IOS上,图片会被自动缩放到2的N次方大小。比如一张1024*1025的图片,占用的内存与一张1024*2048的图片是一致的。图片占用内存大小的计算的公式是;长*宽*4。这样一张512*512 占用的内存就是 512*512*4 = 1M。其他尺寸以此类推。(ps:IOS上支持的最大尺寸为2048*2048  ios 8 看了下 支持4096*4096)。

今天就说一下反馈的评论  有人说 图和标题怎么不一样   我解释下  最近我在弄点击图片放大图片的功能 所以为了测试我就随便加个图。测试用。。。

接着上次写的 。。。

在写之前 我想了一下 我要写的内容 和网上的内容一样。还有必要写吗,仔细想想 还是写比较好。。写下来 也算是自己了解过一次。虽然一样,但是记录下来闲暇的时候可以回顾一下。

言归正传 。我现在在开发一款手机游戏 梦幻寻仙,已经封测了两次了 。。都会出现各种问题。玩家反馈最多的就是 玩着玩着就崩了,这款游戏的内存在游戏页面也就是主页面  最大的时候竟然达到了400M的内存。。这是很高的内存了。。。玩不过一小时 必崩。。这种情况在项目开发之初就存在很大的问题。。所有的动画都是帧动画。。如玩家  橘色  坐骑  npc 怪 可以用骨骼动画,还有特效 也是帧动画,这个没办法 有些特效是可以用粒子特效。但是也有很多事没办法用粒子特效的。再就是背景音乐  大小是1.5M。太大了 比特率 和样本率都很高 只用音乐大师才能听得出差别来 对于我们这种屌丝玩家   无关紧要。。重要的是游戏别动不动就死。。。这是关键。

音乐 一般有三个因素影响文件内存使用。是音频文件格式,比特率,和样本率。

我们最希望音频文件时mp3格式。因为它被android和ios都支持。

并且它也被压缩并且硬件加速了。你应该保证你的背景音乐文件大小在800KB一下。

最简单的方式就是减少背景音乐播放时间并且重复调用。你应该保持你的音频文件样本率在96-128kbps之间,并且比特率在44kHz就足够了。

粒子系统  我们可以减少粒子数量 来减少内存。

让我们看一下纹理优化
为了优化纹理内存的使用,我们必须知道什么因素影响了内存的使用情况。
有三个因素影响了纹理的内存使用。纹理格式(压缩的还是非压缩的),颜色,大小。
我们可以使用PVR格式的纹理来减少内存使用。最被建议的纹理格式是pvr.ccz,每色的bit值越高,画面质量就约好。但是也会消费很多内存。
那么我们使用颜色深度是RGBA4444的纹理来代替RBGA8888,这将会消费一半内存。
我们也会发现大纹理也会导致内存相关的问题。那么你最好使用适度的大小。

程序包的【体积】优化方法:

首先 你需要很清楚当前自己项目什么地方占的体积最多,例如动画序列多少MB、地图占多少MB等等,都要提前做一个Check! 别总是认为哪里哪里可能占的多,要详细的知道才行!

1. 采用工具对资源进行[打包],例如TexturePacker 等工具。

2. 采用png压缩工具等,在打包图片前对每张图片进行[压缩]!

如果以上两点都做了还是体积过大,那么继续采取如下办法:

3. [降低图片质量],比如你项目使用的图片是24bit,那么你可以采用低一些的,例如8bit的图片质量类似。 (ps.别说这样会让图片失真,先试试降低到什么程度的bit最合适再说)

4. 使用特定的压缩格式的图片,例如[wdp] 等等

5. 如果项目中帧序列动画占的比较多,那么可以采取[降帧]的方式来优化。

6. [缩放] 图片!举例,假设你项目用了10张500*500规格的图片,那么你可以让美术把这种图片缩放70%~80%,然后用这种缩放过的图片进行程序放大。(这种方式的图片质量是否会看起来失真,完全取决于缩小的倍数决定,可以适当调整缩放倍数,但是此方法绝对可行!)

7.如果以上方式都优化过,那么可以采取 [换思路]方式,假设你的地图是一张500*500的大图作为背景地图,那么你要考虑是否可以采用地图编辑器来进行拼接的方式来进行!

8. 采用[编辑器],可以利用地图编辑器、动作编辑器、骨骼编辑器等从而减少资源的使用从而达到减少体积,降低内存的使用。

9. 如果以上方式还都无法让你的项目包体积降低,那么你只能采用[在线更新下载]了,将程序包分为两部分,一部分是启动游戏所需的必要资源,另外一部分是游戏启动非涉及到的资源,将启动不会使用的资源放在服务器端,通过在线更新方式,从服务器将其他资源下载到客户端即可。

10. 再如果以上方式都采用后还是体积偏大,宝贝,你只能来个[阉割版]了,常命名为[xxx Lite]

程序【运行内存】的体积优化方法:

其实降低程序包体积的方法很多都同时降低了程序的运行内存,例如:

1. [降低图片质量]、[调整图片规格]、 [采用编辑器]、[缩放图片] 等等。

其他方法:

2. [检查代码逻辑 ,主要看资源加载相关的部分代码]

3.[ 检查释放逻辑代码]

总之手机游戏的内存优化问题还是有很多需要改进的。。。

【手游开发优化篇】cocos2d-x内存管理优化(内存是游戏的硬伤)相关推荐

  1. Cocos2d-Lua手游开发基础篇-何韬-专题视频课程

    Cocos2d-Lua手游开发基础篇-62875人已学习 课程介绍         Cocos2d-Lua是一个开源的移动游戏框架,可以轻松运行在iOS.Android.Blackberry等操作系统 ...

  2. Unity3D手游开发实践

    本次分享总结,起源于腾讯桌球项目,但是不仅仅限于项目本身.虽然基于Unity3D,很多东西同样适用于Cocos.本文从以下10大点进行阐述:架构设计.原生插件/平台交互.版本与补丁.用脚本,还是不用? ...

  3. (转)Unity3D手游开发实践

    作者:吴秦 出处:http://www.cnblogs.com/skynet/ 本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接). (转 ...

  4. Unity手游开发札记——我们是如何使用Lua来开发大型游戏的?(上)

    0. 照旧的碎碎念 转眼间已经三月了,2月份的博客因为过年的懒惰和开年之后的忙碌而没有写--第二个月就打破了去年总结时对于2018年的愿望,真是羞耻呢-- 年后在准备新的测试版本,断断续续做了一些优化 ...

  5. Unity手游开发札记——移动平台的天气系统实现

    0. 牢骚 我发现,每个月的20+号是我有精力写博客的时间-- 这次项目算是经历的第一次严格意义上的渠道测试,更换了正式名称,见了更多玩家,开发组也经历的更多通宵--评价和数据如何暂时还未揭晓,趁着没 ...

  6. 一 手游开发工具cocos2d-x editor初识

    可学习的demo: 7个实战项目 flappybird(飞扬小鸟).popstar(消灭星星).fruitninja(水果忍者).2048(数度消除). moonwarriors(月亮战神).frui ...

  7. 手游开发神器 cocos2d-x editor 教程聚合和代码下载(持续更新中)

    --------------游戏基础教程篇-------------已完成--------- 一 cocos2d-x editor工具下载和基础教程JS篇: 一 手游开发神器 cocos2d-x ed ...

  8. 手游立项(一):理解手游开发

    自己之前一直心心念想要做一款手游,但是连目前最起码的手游开发流程都不清楚,独立开发手游无异于痴人说梦.那么,撇开版本号备案充值之类的,做出一款单纯能玩的手游需要些什么呢? 游戏开发是一个项目. 用PM ...

  9. 一、Cocos2d-x/Qt,2D手游开发方案

    一.基础 Cocos2d-x v3.0:http://www.cocos2d-x.org/download/version#Cocos2d-x Qt v5.2:http://qt-project.or ...

  10. 视频教程-使用Cocos2d-x 开发3D游戏-手游开发

    使用Cocos2d-x 开发3D游戏 中国早期游戏程序员,2003年起从事游戏程序开发,负责开发过多款游戏项目,曾担任大型端游<无限世界>自研引擎技术负责人,2012年起关注Cocos引擎 ...

最新文章

  1. 百科知识 .tar.xz文件如何打开
  2. Thymeleaf介绍
  3. nginx fastcgi python_linux下nginx+python+fastcgi部署总结(django版)
  4. 如何在Word,Excel和PowerPoint 2010中裁剪图片
  5. java.lang.illegalagr_spring – java.lang.IllegalArgumentException:环境不能为null
  6. 设计师必备的资源网站和灵感作品社区分享!
  7. Doc命令之 cd,(跳转到别的盘符)。
  8. 实例练习----电影天堂抓取下载链接
  9. 三电系统集成技术杂谈
  10. shl归纳推理测试题库_SHL(外企笔试常见试题)全攻略
  11. 京东手机评论数据集介绍
  12. Introduction to modern cryptography 第二章阅读笔记
  13. 印象笔记html标签删除吗,我用了9年印象笔记,打算彻底放弃,直到……
  14. win7计算机高级设置在哪,windows7投屏设置在哪里
  15. 正则表达式爬取红牛分公司数据
  16. 《OpenHarmony 3GPP协议开发深度剖析》之--搜网流程之PLMN选择
  17. flask容联云发送短信验证码和异步发送
  18. 联想拯救者Y7000/Y7000P EFI
  19. 2345流氓软件让浏览器打开跳转到它的导航,并且自动下载安装2345浏览器
  20. 实现电话自动拨打、挂断

热门文章

  1. 写入hd5文件报错:missing optional dependency ‘tables’. use pip or conda to install tables
  2. 路由器放在3类地方,当心百兆光纤变“蜗速”,尽快告知家人
  3. Redis缓存面试题重点汇总
  4. 使用正则替换Excel字符串
  5. web前端开发常用又好用的几个软件
  6. 从代码级别的技术细节入手,看性能优化怎么做?
  7. 使用安卓投屏软件在电脑上玩吃鸡、王者手游的方法教程!
  8. 彩电业入“大周期” 三星等品牌为何力推高端大屏
  9. 如何把森林转化成二叉树
  10. 微信小程序前端动态获取最新的轮播图优化