You just need to setup your game’s designed resolution and the adaptation policy, cocos2d will do all the work for you. In the code, you always work with your designed resolution.For example, you have a game to be designed with 480 * 360 as resolution, and you want a background sprite which show full screen,Firstly, you need to setup your designed resolution and the adaptation policy in the “applicationDidFinishLaunching” function:

cc.RESOLUTION_POLICY.SHOW_ALL is the adaptation policy which means you want your game to be always scaled to the screen size and keep the width / height ratio.Then you need to write your sprite like this way.

It is simple to make the game scale up, but I have a request to scale the game down to a fixed size smaller than the designed size. Can you describe the correct way with 2.2.1? I have scaled it smaller, but it does not do so in proper proportions when playing the game.

The proper way is to use resolution policy.You can wrap your canvas into a div which you can control its size and position precisly. Then apply the resolution policy to your cocos2d EGLView then it will work correctly.