Basically, I had to work always with 720p in mind.
When the game loads I need to work out a conversion rate for the resolution. So first lines of code executed, even before the engine :
public static const ORIGINAL_X:int= 1280;
public static const ORIGINAL_Y:int = 720;
public static var SCREEN_X:int;
public static var SCREEN_Y:int;
public static var REDUCTION_RATIO:Number;
private function getReductionRatio():void
{
 SCREEN_X = Capabilities.screenResolutionX;
 SCREEN_Y = Capabilities.screenResolutionY;
var ratioX:Number = SCREEN_X / ORIGINAL_X;
var ratioY:Number = SCREEN_Y / ORIGINAL_Y;
if (ratioX < ratioY) {
REDUCTION_RATIO = ratioX;
}else {
REDUCTION_RATIO = ratioY;
}
}
Then apply this REDUCTION_RATIO variable to every loaded asset, positions,speeds and basically everything that involved pixels.
Examples:
params.height = size.w*REDUCTION_RATIO;
params.width = size.h*REDUCTION_RATIO;
_bulletSpeed = 38*REDUCTION_RATIO;
If using AssetManager, all the stretching will be done for you if you initialize it like this:
assetsManager = new AssetManager (1 / GameVars.REDUCTION_RATIO, false);
But if you are converting textures manually then convert them like this:
Texture.fromBitmap(bitmap,false,true,1/GameVars.REDUCTION_RATIO);This will still use same amounts of Texture Memory in 720 than 480 or 320. If you have troubles with that , load different assets that are smaller and change the REDUCTION RATIO.
In my case, load / unload assets between stages, works well too.
I never reached 128MB of VRAM (more or less, the minimum memory these days: ipad1).
It takes time and real concentration to make it work well but when is done it works flawlessly.
Enjoy.
2 comments:
Hello, I'm working with citrus, and starling citrus engine, i want to know how configure to run on android
Hi there,
to set up citrus is simple, just follow this tutorial from Lee Brimelow:
http://gotoandlearn.com/play.php?id=171
or check this tutorial:
http://citrusengine.com/getting-started-citrus-starling-box2d/
Post a Comment