The StarlingFramework Game   The Open Source     Engine for Flash
Czy to w ogóle działa?Stage3D nie wspiera:• GPU nie obsługujące Pixel Shader wersja 2.x• GPU ze sterownikami starszymi niż...
Jak sprawdzić brak wsparciasprzętowego ?Starling.context.driverinfo.toLowerCase().indexOf(„software”)                     ...
Informacja dlaużytkownika/gracza
Jak dobrać się do klasy głównej zpoziomuDisplay List?new Starling(StarlingGamePlay, Game.instance().stage);var st:starling...
Łączenie Stage3D z DisplayList• Komputery stacjonarne – nie ma  problemów• Mobile – zjazd framerate do 30fps, zaleca  się ...
Wmode – „direct” potencjalnykłopot
Źródła problemów:• Wszędzie gdzie nie odpowiadamy za  osadzenie swf’a• FGL - sprzedż gier na portale• Facebook – zaleca ko...
Korzystając z wmode – „direct” użytkowniknie zobaczy żadnych komunikatów zFacebook’a. http://developers.facebook.com/docs/...
Screenshot ze sceny Starlingvar support:RenderSupport = new RenderSupport();RenderSupport.clear(Game.instance().starlingGa...
+ screenshot z Display Listvar displayListBmpData:BitmapData = new BitmapData(760, 590,true, 0xffffff);displayListBmpData....
Łączymy w całośćvar endBmpData:BitmapData = new BitmapData(760, 590);endBmpData.draw(container);var endBmp:Bitmap = new Bi...
Co po stronie                JSfunction facebookPost(arg){        var objData = arg;        FB.ui({method: feed‘, name    ...
Co po stronie                 JSfunction displayFlashScreenshot(screenshotData) {// Set the screenshot image data as a bas...
Dynamiczne kolorowanieelementów• Rzeczywiste odwzorowanie kolorów nastąpi wyłacznie  na czystej bialej teksturze• Wówczas ...
Duże tekstury• Ograniczenie rozmiaru do 2040px• Można je obejść krojąc teksturę na mniejsze  części i składając pozniej w ...
Maski• http://wiki.starling-   framework.org/extensions/clippedsprite• Maska nie podlega rotacji• Ma formę prostokąta• Koo...
Starling MVC• http://creativebottle.github.com/starlingMVC/•  Dependency Injection(DI)/Inversion of Control(IOC)• View Med...
Upcoming SlideShare
Loading in …5
×

The starling framework

1,956 views

Published on

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,956
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

The starling framework

  1. 1. The StarlingFramework Game The Open Source Engine for Flash
  2. 2. Czy to w ogóle działa?Stage3D nie wspiera:• GPU nie obsługujące Pixel Shader wersja 2.x• GPU ze sterownikami starszymi niż styczeń 2008 (FP11.2)• NVIDIA driver 8.17.11.9621 oraz 8.17.11.8267• Mac - ATI Radeon X1600, ATI Radeon 2400,• Mac - Firefox 3.6 i wcześniej, Mac OS X 10.5 i wcześniej
  3. 3. Jak sprawdzić brak wsparciasprzętowego ?Starling.context.driverinfo.toLowerCase().indexOf(„software”) == -1
  4. 4. Informacja dlaużytkownika/gracza
  5. 5. Jak dobrać się do klasy głównej zpoziomuDisplay List?new Starling(StarlingGamePlay, Game.instance().stage);var st:starling.display.Stage = Starling.current.stage;starlingGamePlay = st.getChildAt(0) as StarlingGamePlay;
  6. 6. Łączenie Stage3D z DisplayList• Komputery stacjonarne – nie ma problemów• Mobile – zjazd framerate do 30fps, zaleca się całkowitą rezygnację z Display Listy
  7. 7. Wmode – „direct” potencjalnykłopot
  8. 8. Źródła problemów:• Wszędzie gdzie nie odpowiadamy za osadzenie swf’a• FGL - sprzedż gier na portale• Facebook – zaleca korzystać zawsze gdy to możliwe z wmode – opaque, transparent
  9. 9. Korzystając z wmode – „direct” użytkowniknie zobaczy żadnych komunikatów zFacebook’a. http://developers.facebook.com/docs/hideflashcallback/ JS hideflashcallback
  10. 10. Screenshot ze sceny Starlingvar support:RenderSupport = new RenderSupport();RenderSupport.clear(Game.instance().starlingGamePlay.stage.color, 1.0);support.setOrthographicProjection(760, 590);Game.instance().starlingGamePlay.stage.render(support, 1.0);support.finishQuadBatch();var result:BitmapData = new BitmapData(760, 590, true);Game.instance().starlingInstance.context.drawToBitmapData(result);var bmp:Bitmap = new Bitmap(result);
  11. 11. + screenshot z Display Listvar displayListBmpData:BitmapData = new BitmapData(760, 590,true, 0xffffff);displayListBmpData.draw(Game.instance().stage);var displayLBmp:Bitmap = new Bitmap(displayListBmpData);container.addChild(starlingBmp);container.addChild(displayLBmp);
  12. 12. Łączymy w całośćvar endBmpData:BitmapData = new BitmapData(760, 590);endBmpData.draw(container);var endBmp:Bitmap = new Bitmap(endBmpData);var pngBytes:ByteArray = PNGEncoder2.encode(endBmpDatavar screenshotBase64:String = Base64.encode(pngBytes);https://github.com/cameron314/PNGEncoder2/Napisany w haxe, 5x szybszy od PNGEncodera z as3corelibhttp://www.sociodox.com/base64.htmlsociodox: encode : 260ms decode: 255msas3Crypto encode : 6728ms decode: 4098ms
  13. 13. Co po stronie JSfunction facebookPost(arg){ var objData = arg; FB.ui({method: feed‘, name : objData.name,link:objData.link,picture: objData.picture, caption: objData.caption,description:objData.description },function(response) { hideScreenshot(); if (response && response.post_id) { //alert(Post was published.); } else { //alert(Post was not published.); } }); displayFlashScreenshot(objData.screenshot);}
  14. 14. Co po stronie JSfunction displayFlashScreenshot(screenshotData) {// Set the screenshot image data as a base64//encoded data URI in the img src attribute document.getElementById(screenshotObject).src = data:image/jpeg;base64, + screenshotData; document.getElementById(flashContent).style.top = -10000px; document.getElementById(imageContent).style.top =;}
  15. 15. Dynamiczne kolorowanieelementów• Rzeczywiste odwzorowanie kolorów nastąpi wyłacznie na czystej bialej teksturze• Wówczas w prosty sposób modyfikujemy właściwość color w obiekcie Image, np: var newCol:uint= Color.interpolateColor(0xff0000,0xFFFF00,_aimfactor); image.color = newCol;
  16. 16. Duże tekstury• Ograniczenie rozmiaru do 2040px• Można je obejść krojąc teksturę na mniejsze części i składając pozniej w calość• Dla performance zawsze lepiej będzie dac wiecej małych elementów niż 1 duży
  17. 17. Maski• http://wiki.starling- framework.org/extensions/clippedsprite• Maska nie podlega rotacji• Ma formę prostokąta• Koordynowana względem współrzędnych sceny var sprite:ClippedSprite = new ClippedSprite(); sprite.addChild(anotherObject); // set the mask rectangle in stage coordinates sprite.clipRect = new Rectangle(10, 10, 380 280);
  18. 18. Starling MVC• http://creativebottle.github.com/starlingMVC/• Dependency Injection(DI)/Inversion of Control(IOC)• View Mediation• Event Handling• Stays out of the way of your Starling game code• Simple configuration• Easily extended• More utilities to help with your game code

×