Turn COCOS2DX memory optimization (bis)

Source: Internet
Author: User

First, COCOS2DX How to optimize memory usage (Advanced article)

This article by qinning199 Original, reprint please specify: http://www.cocos2dx.net/?p=93

First, the principle of memory optimization

To optimize the application memory, you should know what is consuming most of your application's memory, the answer is texture (texture)! It occupies almost 90% of the application memory. Then we should try our best to reduce the texture memory usage of our application, otherwise our application process may be killed by the system.

To reduce memory warnings, here are two general guidelines for memory optimization for COCOS2DX games.

1) understand the bottleneck and then resolve the

What textures consume most of the application's memory? Or how much memory is consumed by these textures? You don't have to calculate or guess by hand.

Here we happen to have a tool. It's Apple's development tool-allocations & Leaks, in Xcode you press and hold the Run button and select profile to start the two tools. Here we have a:

You can use the allocation tool to calculate your app's memory usage and to see memory leaks.

You can also use some code to get some useful information about the memory usage of the game.

The following code can be:

[CPP]View Plaincopy
    1. Cctexturecache::sharedtexturecache ()->dumpcachedtextureinfo ();


As shown below: When you call this code and run your game in debug mode, you will see some formatted log information in your Xcode console window

[CPP]View Plaincopy
    1. Cocos2d:cocos2d: "cc_fps_images" rc=5 id=3 x @ + BPP = + KB
    2. Cocos2d:cocos2d: "XXX/HD/ACTOR.PVR.CCZ" rc=1059 id=4 2048 x 2048 @ + BPP = 16384 KB
    3. Cocos2d:cocos2d:CCTextureCache dumpdebuginfo:2 textures, for 16400 KB (16.02 MB)

These logs show the texture's name, reference number, ID, size, and the bit value of the pixel, and most importantly it shows the memory usage. As the cc_fps_images consumes 16KB,ACTOR.PVR.CCZ consumes 16M of memory.

2) do not over-optimize

This is a general rule of optimization. When you are doing memory optimization, you should make a tradeoff. Because sometimes picture quality and picture memory usage are opposite on both sides. So don't over-optimize.

Second, memory optimization level

Here we divide the COCOS2DX memory optimization into three levels. At each level, we have different opinions and strategies are also somewhat varied.

1. COCOS2DX Client Level

This is the most important level of optimization that we can care about. Because we are developing games on the COCOS2DX engine, the engine itself offers a number of options to optimize the program. At this level, we can do most of the work.

First, let's take a look at the texture optimization

In order to optimize the use of texture memory, we must know what factors affect the use of memory.

There are three factors that affect the memory usage of textures. Texture format (compressed or non-compressed), color, size.

We can use the PVR format texture to reduce memory usage. The most recommended texture format is PVR.CCZ, the higher the bit value per color, the better the picture quality. But it also consumes a lot of memory.

Then we use the color depth is the RGBA4444 texture to replace the RBGA8888, this will consume half of the memory.

We also find that large textures can also cause memory-related problems. Then you'd better use a moderate size.

Second, let's do something about the sound

There are three factors that affect the use of file memory. is the audio file format, bit rate, and sample rate

We most want audio files when mp3 format. Because it is supported by both Android and iOS. Also it was compressed and the hardware accelerated.

You should make sure your background music file size is 800KB at a moment. The simplest way is to reduce the playback time of the background music and repeat the call.

You should keep your audio file sample rate between 96-128kbps, and the bit rate at 44kHz is enough.

Finally, we talk about font and particle system optimization.

Here we have two suggestions: when using BM font to display game scores, select the smallest number characters in your image file, for example:

If you want to display only the numbers, you can remove all the characters.

In particle systems, we can reduce the number of particles to reduce memory usage.

2. COCOS2DX Engine class

If you are not good at opengles and the game engine kernel, you can leave this part to an engine developer. If you are an open source game engine enthusiast, if you have done some optimization of the engine level, please inform the engine developers!

3. C + + language level

At this level, my advice is to write some code without memory leaks. Use the COCOS2DX Engine memory management tool and do your best to avoid memory leaks.

III. recommendations and techniques

1, a frame of the load game resources.

2, reduce draw calls. Using Ccspritebatchnode

3. Load textures in order of maximum to smallest

4. Avoid peak memory usage,

5. Use the loading interface to pre-load the game resources.

6. Release useless resources when you don't need them.

7. Release cached resources when there is a memory warning

8, use Texturepacker to optimize the texture size, format, color depth value and so on.

9. Be careful with JPG files

10. Use 16-bit RBGA4444 color depth texture

11. Replace pot texture with npot texture

12, avoid loading large-size pictures

13. Use 1024*1024 npot PVR.CCZ texture atlas instead of native pictures

Turn COCOS2DX memory optimization (bis)

Related Article

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.