Starling API – Introduction à la 2D accélérée GPU

Ce billet est le premier d’une longue série sur l’API Starling. Starling est une API pour créer du contenu 2D qui sera accéléré par votre carte graphique (GPU) dans Flash Player. Starling est gratuit et open source (licence Simplified BSD), ce qui signifie que vous pouvez l’utilisez librement dans vos projets commerciaux. Pour l’instant, vous ne pourrez faire que des jeux dans le navigateur avec Flash Player 11. A partir de début 2012 et de la sortie de Stage3D pour mobile (AIR 3.2), vous pourrez prendre exactement le même code et créer des applications natives pour iOS et Android!

Starling, pour faire quoi?

Le premier et principal cas d’utilisation de Starling est la création de jeux vidéos. Bien sûr, il est possible de réaliser toute sorte de contenu, c’est vous le développeur qui allez décider ;) . L’API est encore en beta, mais utilisable dans vos projets. Vous pourrez trouver toutes les informations sur le site officiel:

http://starling-framework.org/

Et de l’aide sur le forum:

http://forum.starling-framework.org/

Un très bon PDF d’introduction (en anglais):

http://www.bytearray.org/?p=3371

La documentation:

http://doc.starling-framework.org/core/

Les sources sur Github:

https://github.com/PrimaryFeather/Starling-Framework

Inspiration de Sparrow pour iOS et de l’API Flash standard

Starling a principalement été développé par Daniel Sperl, qui a déjà réalisé un framework nommé Sparrow pour iOS, permettant de créer des jeux accélérés GPU sur plateformes Apple. Un vrai pro donc, avec une API qui a déjà fait ses preuves. Encore mieux, l’API de Starling est directement inspirée de la Display List de Flash. On y retrouve donc des classes telles que Sprite (addChild, removeChilden, …), MovieClip, Tween, TextField, etc. Cela permet une prise en main rapide du framework, même si ces classes sont différentes dans leur implémentation par rapport à la Display List de base. Voici par exemple le schéma présentant la chaîne d’héritage de la classe DisplayObject: Certains noms devraient vous être familiers :) .

Accélération GPU

Grâce aux nouvelles APIs de Flash Player 11, et plus particulièrement la classe Stage3D, il est possible d’utiliser le GPU (carte graphique) et non plus le CPU (processeur) pour effectuer des rendus. Le CPU d’une machine a une capacité limitée pour réaliser des traitements graphiques, notamment car il est utilisé par le reste des applications. Le GPU en revanche est spécialisé dans ces traitements (manipulation de vertex, calculs mathématiques, …) et pourtant, il n’est utilisé que dans les jeux qui vous installez sur votre machine (principalement). L’API Starling va vous permettre d’utiliser cette puissance GPU inutilisée pour vos jeux, ce qui va vous permettre de réaliser des jeux d’exception :) . Starling va en fait masquer la complexité des APIs bas niveau offertes par Flash Player et vous proposer une API haut niveau que vous pourrez manipuler plus facilement, sans vous soucier de ce qui se passe derrière. L’accélération GPU n’est pas automatique, il faut que votre carte graphique (+drivers) soient compatibles. Si vous avez une machine assez récente, c’est sûrement le cas. Pour fonctionner sur un maximum de plate-formes, Stage3D (et donc Starling) s’appuie sur OpenGL ES 2 / DirectX qui sont standard. Voici un schéma récapitulatif:

De la 2D avec des APIs 3D?

Flash Player propose des APIs pour faire de la 3D et pourtant Starling est spécialisé dans la 2D. Il est en fait assez simple « d’ignorer » une dimension. Lors d’un rendu 3D, la carte graphique dessine des triangles. Si elle a un polygone à dessiner, elle va le transformer en une série de triangle. Cela facilite notamment la gestion de l’éclairage, du calcul des normales, etc. Lorsque l’on fait de la 2D, on va vouloir afficher des images, carrées ou rectangles donc. Pour transformer un rectangle en triangles, il suffit de le séparer en 2 et on obtient 2 triangles. Voilà comment Starling peut faire de la 2D avec de la 3D!

La suite sur flex-tutorial.fr

Ceux qui me suivent sur Twitter (@fnicollet) ont déjà vu ce que je préparais les dernières semaines. J’ai réalisé avec Starling, un clone d’Angry Birds, avec gestion des collisions que j’avais mis en ligne. Sauf que Rovio m’a envoyé un mail me demandant de retirer ce jeu car j’utilisais leurs éléments graphiques. Donc comme il n’est plus question d’utiliser les images de Rovio et que je n’ai pas le temps / talent d’en créer, je vais essayer avec d’autres sprites que j’ai trouvé sur le net. Il y a aussi un propriétaire mais il faut espérer que cela passe. Si vous êtes sympa et que vous avez des Spritesheet que je peux utiliser librement, n’hésitez pas à m’envoyer un mail :) . En attendant, on va voir les bases de l’API petit à petit et au final, on va réaliser un aquarium animé !

2 réflexions au sujet de « Starling API – Introduction à la 2D accélérée GPU »

  1. tepat

    est on vraiment sur que stage3D sera dans la version 3.2 de air ?
    parce que dans la beta de Air3.2, il n’y a pas de Stage3D …

  2. fnicollet Auteur de l’article

    J’ai pas encore eu le temps de l’essayer mais Stage3D est bien dans les release notes de la prerelease

    Fabien

Les commentaires sont fermés.