Multi-Platform Madness
Release on Android, iOS, the web browsers and many more platforms with one single code base: Starling is based on Stage3D and thus minimizes the friction involved in deploying to multiple platforms.

Many successful Starling games can be found on Facebook and Steam, as well as Apple's and Google's mobile app stores. Coming soon: support for Apple TV!
Warp 9.1 Performance
Countless hours of performance optimizations have reduced the memory, CPU and GPU footprint of Starling to a minimum. For you, fortunately, all of this is happening behind the scenes: Create your game and let Starling worry about the performance.
Easy on the Battery
Unlike most other game frameworks, Starling makes an effort not to drain your user's batteries. Unchanged parts of the display list are cached and reused in the next frame; when a completely static scene is encountered, the display buffer is simply reused.
starling.skipUnchangedFrames = true;
Hierarchical Display Tree
Organize your objects in hierarchical trees, with parent-child relationships. This provides an intuitive and powerful way to build your game from concrete blocks.
var parent:Sprite = new Sprite();
var child:Image = new Image(texture);
child.x = 25;
Powerful Event System
Use the same display tree to fire events like player touches up and down the tree. Rely on your experience: The Starling event system works like the well-known ActionScript event system.
button.addEventListener(Event.TRIGGERED, onButtonTriggered);

private function onButtonTriggered():void {
    trace("Hello Button!");
Nifty Texture Support
Texture handling can't get any simpler than in Starling. You can load a bunch of different formats (including Adobe's new ATF format), create SubTextures, transform texture coordinates, or even tint with colors.
var texture:Texture = Texture.fromBitmap(bitmap);
var image:Image = new Image(texture);
Display Resolution Awareness
Write your game once, and deploy it to devices with all kinds of screen resolutions (e.g. the iPads 1, 2, 3). Starling will choose the optimal set of textures at run-time.
// the contentScaleFactor takes care of the resolution
var scaleFactor:Number = Starling.current.contentScaleFactor;
var texture:Texture = Assets.getTexture("bunny", scaleFactor);
trace(texture.width); // will take the scale factor into account
Texture Atlases
Also know as "sprite sheets", texture atlases combine many small textures into one big texture, which greatly accelerates rendering on typical GPU architectures. Starling supports them transparently.
var atlas:TextureAtlas = new TextureAtlas(atlasTexture, atlasXML);
var texture:Texture = atlas.getTexture("hero");
var image:Image = new Image(texture);
Choose between several filters to modify the look of your display objects. Add a blur or drop shadow, modify the colors or wreak havoc with a displacement map — all processed directly by the GPU. If you're a serious hacker, you can even write your own custom shaders!
var filter:ColorMatrixFilter = new ColorMatrixFilter();
sprite.filter = filter;
Stencil Masks
Let the shape of one display object mask another. Usage of the native stencil buffer guarantees maxiumum efficiency!
var sprite:Sprite = createSomeContent();
var quad:Quad = new Quad(100, 100);
quad.rotation = 0.5;
sprite.mask = quad; // <- quad masks sprite
Blend Modes
Use different blend modes to create special effects, like glowing fire or dynamic highlights.
var image:Image = new Image(texture);
image.blendMode = BlendMode.SCREEN;
Starling contains its own, powerful tweening system. It allows you animate your objects properties with different transition curves. You can even group animations, using the innovative "Juggler" system.
var tween:Tween = new Tween(hero, 5);
tween.moveTo(10, 20);
tween.animate("health", 1.0);
Starling unifies touch and mouse input, which makes it easy for you to handle both input methods at the same time. Multitouch is baked right into the engine.
private function onTouch(event:TouchEvent):void {
    // get all moving touches
    var touches:Vector.<Touch> = event.getTouches(this, TouchPhase.MOVED);
Bitmap Fonts
Starling supports classic TrueType fonts and Bitmap Fonts. Those provide the best performance you can get with GPU text rendering. They also make it easy to style your text with outlines, shadows, etc.
TextField.registerBitmapFont(bmpFont, "Bacon"); // register the font once
var textField:TextField = new TextField(200, 50, "Hello World!", "Bacon");
3D Effects
That Starling is a 2D engine at its heart does not mean that you can't add some 3D magic here or there! Great for transitioning between scenes or realistically flipping playing cards.
var sprite3D:Sprite3D = new Sprite3D();
sprite3D.rotationX = 1.0;
Render Textures
Whatever you draw on screen can be rendered directly to a texture. This is extremely fast and allows for great special effects like footprints in the snow and bullet holes in the wall.
var snowTrail:RenderTexture = new RenderTexture();
Particles, Particles, Particles
A particle system is the basis for the jaw-dropping effects in your game. Let your hero wander through heavy snowfall, annihilate enemy ships in mighty explosions or create a cosy fireplace.
var particleSystem:ParticleSystem = new ParticleDesignerPS(configXML, texture);
Starling was built from the ground up to be easy to understand, modify and extend. Write custom display objects, plug in your own fragment and vertex shaders, or use Starling in any other way we have never even thought of.
public override function render(painter:Painter):void
{ /* ... */ }
A No-Fuzz Backend
Successful games need a backend. A server-side that stores your players' data. Servers that analyze your games and help you debug your releases. That's why there is Flox: the no-fuzz game backend.

Equip your Starling game with a complete backend and get in-depth game analytics, your players' logs, a place to store data and much more. Flox is the perfect match for Starling-powered games.

Learn more...