

android游戏资源优化
source link: https://www.zenlife.tk/android-resource-optimite.md
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

2013-10-27
我的游戏apk包的大小增加到36M了,而且加载速度也奇慢无比。没办法,不得不做资源优化了。下面是记录下这些点点滴滴。
优化的内容
其实主要就是三个方面:
- 最终的发布包大小
- texture资源的大小
公司对包的大小要求极为严格,必须做到支持低端市场,比如同样游戏,别人做出来30M,我们则一定要压到10M才允许发布。这方面的优化主要就是.9图和降低素材采样率了。
加载速度方面,我现在是所有东西都全部在进游戏时一口气加载完毕的,后面要改成分段加载。
texture资源大多,显存不够的机器上,容易出现白屏。同事的经验是,小Y最多支持7张1024。
优化前分析
我分析了一下目前的资源。
.........
接下来就是优化了。
这方面做的主要工作是,去除冗余,音频压缩,合理使用.9,各种图片资源的格式选择等等。
首先拿掉了没有用到的素材。然后把几个背景图直接压缩了,游戏中再进行拉伸,这个会有锯齿,但是必须折衷,美工那边有给的单张图都过1024的。
接着是音乐音效的资源,将质量变低之后,大小从9M压到了1M。
做完这些后,UI从18M多压到了5.8M。
背景用etc1,这个格式是不带alpha通道的,大概一张1K的样子,有12张背景。
建筑的几张图用tinypng压缩的。然后读pixmap了对未解锁和解锁的分别生成rgb8888和numerance。
xml序列化
asset文件变小之后,加载速度仍然还是很慢。于是我开AssetManager的log后,分析了一下各种资源加载的时间。很大一部分是消耗在flash动画资源加载上。flash动画是我自己写的一个动画包,解析xfl文件得到动画信息,估测应该是xml文件解析花掉了太多时间。
动画的xml文件其实读到内存之后就是一个结构体,我可以直接使用这个结构体的序列化文件,这样加载二进制数据就可以避免xml解析。
做完这步优化之后,我这边感觉不算太明显,总体加载速度能感觉只能算有些提升。但另一个同事测试说序列化后的加载速度比原始解析xml方式速度提升了10倍。
尽量合大图
优化完动画文件的xml加载之后,我继续找最耗时部分。在自己手机上测试,音效资源加载较快,小的可能只有几ms。图片素材加载较慢,发现一张1024大概需要500ms。
现在最大的一个问题是flash动画的合图,我是一个动画合一张小图的。这样就会加载很多的小图,有60多个动画。加载几个小图速度远远慢于加载一张大图速度,每张小图可能要100到400的时间。
所以我又继续把动画的小图合大图了。
然后就是方块那边的合图也是小图改大图合了。
最后就是做分步加载。动画,关卡的xml文件,这些都只有到游戏界面才用得到。我在进游戏loading时改成不加载这些资源,然后在进游戏时加载。
做完这些优后之后,包大小终于降到了14.8M,加载速度估算也几乎是原来的1/4了,完全可以承受的范围。超有成就感。
Recommend
-
167
include重用 merge减少布局层级 ViewStub延迟加载1、< include/>重用比如我们要写一个TitleBar(title_bar_layout.xml),是这样子的。 1234567891011121314151617181920212223242526<?xml version="1.0" encoding="utf-8"?><Li...
-
101
网络优化为什么? 现在App几乎都需要联网操作,做好网络优化一方面可以提高体验,另一方面可以减少流量和电量的损耗.另外,无论是对用户还是网络服务提供者,网络同样是一种资源,任何开发者都不应该假设网络资源是无限制的. 如何检测?1、使用Android Studio里的Network...
-
121
目的公司的新需求终于解决完了,离测试和发布还有段时间,第一次体验了下没需求没bug的感觉,真是舒爽~然后翻了翻有什么可以学的。无意翻到了Android后期发展的五大趋势。一、性能优化。二、高级UI。三、JNI/NDK开发。四、架构师。五、RN开发。
-
130
说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才感觉运行速度稍微提高了点,就算手机在各种性能跑分软件面前分数...
-
117
前述 最近在做app性能优化,这里做一个总结,供大家了解学习,也方便自己以后查阅.用android的同学都知道,新买的手机用过一段时间后,手机变得越来越卡了;装了一些APP后,电量用得飞快,一天基本要一充;有些APP打开半天加载不出来;有些APP进入某些页面突然闪退...
-
82
前言 在Android中,内存泄露的现象十分常见;而内存泄露导致的后果会使得应用Crash 本文 全面介绍了内存泄露的本质、原因 & 解决方案,最终提供一些常见的内存泄露分析工具,希望你们会喜欢。 目录 1. 简介 即 ML (Memory
-
117
起源 内存抖动是由于短时间内有大量对象进出新生区导致的,它伴随着频繁的GC。 gc会大量占用ui线程和cpu资源,会导致app整体卡顿 android profile 效果图如下图 Memory 中 我们可以看到 上面的一溜白色垃圾桶。说明在大量的执行gc操
-
74
我在几周前的 Droidcon NYC 会议上,做了一个关于 Android 性能优化的报告。我花了很多时间准备这个报告,因为我想要展示实际例子中的性能问题,以及如何使用适合的工具去确认它们 。
-
6
Unity3D研究院之提取游戏资源的三个工具支持Unity5(八十四) 这两天无意间又发现了两个提取Unity游戏资源的工具,这会儿刚好有时间我就码点字总结一下。
-
5
字节运营经理索贿超百万被判刑;三七前运营专员卖游戏资源非法牟利被诉 2022-06-08 •...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK