Upload
andy-hall
View
1.311
Download
1
Embed Size (px)
DESCRIPTION
Flashを使ったPC、Android、iOS向けにハードウェアアクセラレーション対応の2Dゲーム開発
Citation preview
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Flashを使った PC、Android、iOS 向けに
GPU アクセラレーション対応の 2Dゲーム開発
Andy Hall Adobe Japan
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Andy Hall Game Evangelist
Adobe Japan
アンディ ホール ゲームエバンジェリスト アドビ システムズ 株式会社 @fenomas
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Agenda
1. Flash、ゲームの背景的な話 2. Stage3D、AGALについて 3. Starlingについて 4. 開発に飛び込もう
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Flash and Games
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Why Flash?
• パフォーマンス • ツール • リーチ
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Why Flash?
• パフォーマンス • ツール • リーチ
サイレント 自動アップデート
ユーザ数: 4億人 (!!!)
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Why Flash?
• パフォーマンス • ツール • リーチ
Wii 95.56M
PS3 63.9M
Xbox 360 67.2M
400M
sales numbers as of April-June 2012. Source: Wikipedia
サイレント 自動アップデート
ユーザ数: 4億人 (!!!)
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
採用状況
9 of 10 top Facebook games
Angry Birds Friends (Rovio)
Ruby Blast (Zynga)
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
About Flash
• Flash is: • 柔軟で応用が利く • クロスプラットフォーム • モバイルに最適(Android、iOS 他)
• Flash isn’t:
• 「ドラッグ・ドロップでゲーム!」 • 完全ネイティブパフォーマンス
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Why the GPU?
Tablets, mobiles, retina displays. Pushing pixels through software isn’t an option.
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Stage3D
Display List
3D Video
Vector
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Stage3D
GPU
OpenGL or DirectX
Stage3D (AGAL)
Flash コンテンツ (ActionScript)
シェーダー パイプライン
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
AGALとは
m44 op, va0, vc0 dp4 op.x, va0, vc0 dp4 op.y, va0, vc1 dp4 op.z, va0, vc2 dp4 op.w, va0, vc3 m44 op, va0, vc0 mov v0, va1
(ヒトリデハキケンジャ!)
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
import starling.display.Sprite; var hero:Sprite = new Sprite(); hero.x = 200; hero.y = 200; addChild(hero);
(コレヲ サズケヨウ! )
Starlingの場合
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Stage3D ライブラリー • オフィシャルライブラリー (free, open source):
• Starling (2D)
• Away3D
• ニーズによって他にも様々…
N2D2 Genome2D
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Starling
Flash Player Display List API
(AS3)
Starling (AS3)
Sparrow フレームワーク (ObjC)
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Starling + Stage3D
GPU
OpenGL or DirectX
Stage3D (AGAL)
Flash コンテンツ (ActionScript)
Starling
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Starlingが送ること
• Starling gives you: • 生産性 • 親しみのある習得の早いAPI • 拡張性 • 活発的なコミュニティー
• Starling doesn’t give you: • GPUは何ぞよ、と気にしなくて良いほど
の安全性 • GPUには優しく!
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
コードを見せろってば!
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
starling.display.*
Starling core API
starling.events.EventDispatcher
DisplayObject
DisplayObjectContainer Quad
Image
MovieClip
Button
Sprite
Stage
TextField
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
starling.display.*
Starling core API
starling.events.EventDispatcher
DisplayObject
DisplayObjectContainer Quad
Image
MovieClip
Button
Sprite
Stage
TextField
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Quad • Just vertices with a color but no texture • Color interpolated on the GPU • Simple primitive
Example :
q = new Quad(200, 200); q.setVertexColor(0, 0x000000); q.setVertexColor(1, 0xAA0000); q.setVertexColor(2, 0x00FF00); q.setVertexColor(3, 0x0000FF); addChild (q);
Solid color : q.color = 0x00FF00;
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Image • Image is textured quad (extends Quad) • Textures should be uploaded and pooled,
rather than created when needed • State tracking (setTexture – expensive) • Compressed textures Example : // create a texture, then an image var myBitmap:Bitmap = new MyBitmapClass(); var texture:Texture = Texture.fromBitmap(myBitmap); var image:Image = new Image ( texture ); addChild ( image ); Tint : image.color = 0xFF0000;
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Sprite • The lightest container available (just like with standard Flash display list)
• Can be flattened, to display a complex tree quickly
• However, all children’s textures need to be in the same texture (or atlas) to see really great performance
Example : // freeze the children container.flatten(); // assign changes to a child
container.child.scaleX = .5; // refresh
container.flatten(); // or unflatten();
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
MovieClip • Sprite, with a timeline • A different texture on each frame • Is not a container. • Does not support scripts on frames. • Completely controllable (custom fps,
addFrame, etc).
Example : // retrieve frames from a Flash MC
var frames:Vector.<Texture> = sTextureAtlas.getTextures("running_");
// creates a MovieClip playing at 40fps
mMovie = new MovieClip(frames, 40);
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
TextureAtlas
• Packaged sets of sprite sheets • To optimize, make sure GPU calls each use one Atlas
Example : // get all textures with a common prefix
myTextureAtlas.getTextures(“fly_”);
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
ではコードを書いてみよう。
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
拡張の例
Particle Editor http://onebyonedesign.com/flash/particleeditor/
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Starlingの最適化
• Flatten containers if their contents won’t change: container.flatten();
• Prevent unnecessary touch event handling: container.touchable = false;
• Use object pools: s = pool.getSprite(); pool.returnSprite(s);
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
今後のトピック
Adobe Texture Format (ATF) • A compressed texture format created specially
for Stage3D • The player understand ATF
natively, which brings performance benefits
Tools and libraries are coming.
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
[email protected] @fenomas
ご清聴ありがとうございました。
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.