Starling Framework - 2D GPU 가속 렌더링 플래시 게임 엔진
2011/09/23 03:35
Starling Framework는 플래시 게임 엔진으로 Flash Player 11의 Stage3D기반에서 2D GPU 렌더링을 지원한다. API의 인터페이스가 플래시 패키지와 유사하다. 가령 MovieClip의 경우, flash.display.MoviClip대신 staring.display.MoviClip이 된다. 그래서 Stage3D에 대해서 잘 모르더라도 개발에 대한 처음 진입장벽이 낮은 편이다. 2D 게임을 만들기에 편리하도록 다양한 기능도 포함하고 있다.
이 프레임워크는 iOS용인 Sparrow Framework를 만든 개발자가 직접 포팅한 것이다.
이 프레임워크 환경에서 2D 게임을 개발하기 위해 다음 조건이 필요하다.
1. Flash Player 11이 브라우져에 설치되어야 한다.
2. Flash Buidler에 Flash Player 11용 Flash를 개발하기 위한 환경을 조성한다.
3. starling-framework를 다운로드 받아야 한다.
정식으로 Flash Player가 배포된 것은 아니므로 아직까지는 개발자용으로만 테스트 해볼 수 있겠다.
Introducing the Starling Framework 글에 있는 동영상을 보고 간단하게 테스트 해봤다.
이 동영상에서 SpriteSheet를 쉽게 만들어주는 TexturePacker 앱이 눈에 띄었다. 사용법도 간단하니 한번 써보길 바란다. 동영상을 따라하려면 이 앱을 설치해야 한다. 이것을 사용하면 여러개의 이미지 소스로 부터 아래와 같은 1개의 SpriteSheet용 이미지를 아주 편하게 생성할 수 있다. 필요없는 영역도 자동으로 다 제거해주니 정말 편하다.
위 SpriteSheet를 플래시 내에서 다시 쪼개기 위한 xml도 다음처럼 만들어준다.
이 예제는 단순히 SpriteSheet 텍스쳐의 이미지를 가지고 에니메이션 처리하는게 다 이지만, Starling 프레임워크가 어떤 형태로 개발할 수 있는가 직접 볼 수 있는데 의의가 있겠다.
다른 데모는 아래 링크를 통해 보도록 하자.
http://www.starling-framework.org/demo/index.html
만약 입자 시스템에 대한 확장 기능이 필요하다면 다음 링크를 참고하자.
입자시스템 소스 : https://github.com/PrimaryFeather/Starling-Extension-Particle-System
입자시스템 데모 : http://www.bytearray.org/?p=3431
Flash Player 11이 AIR 3.0과 더불어 곧 나올 기세이다. 이런 프레임워크는 이들 플랫폼에 쉽게 대응하는데 큰 도움이 될 것이다. 꼭 한번 테스트라도 해보는게 좋을 것 같다.
글쓴이 : 지돌스타(http://blog.jidolstar.com/786)
이 프레임워크는 iOS용인 Sparrow Framework를 만든 개발자가 직접 포팅한 것이다.
이 프레임워크 환경에서 2D 게임을 개발하기 위해 다음 조건이 필요하다.
1. Flash Player 11이 브라우져에 설치되어야 한다.
2. Flash Buidler에 Flash Player 11용 Flash를 개발하기 위한 환경을 조성한다.
3. starling-framework를 다운로드 받아야 한다.
정식으로 Flash Player가 배포된 것은 아니므로 아직까지는 개발자용으로만 테스트 해볼 수 있겠다.
Introducing the Starling Framework 글에 있는 동영상을 보고 간단하게 테스트 해봤다.
이 동영상에서 SpriteSheet를 쉽게 만들어주는 TexturePacker 앱이 눈에 띄었다. 사용법도 간단하니 한번 써보길 바란다. 동영상을 따라하려면 이 앱을 설치해야 한다. 이것을 사용하면 여러개의 이미지 소스로 부터 아래와 같은 1개의 SpriteSheet용 이미지를 아주 편하게 생성할 수 있다. 필요없는 영역도 자동으로 다 제거해주니 정말 편하다.
위 SpriteSheet를 플래시 내에서 다시 쪼개기 위한 xml도 다음처럼 만들어준다.
<?xml version="1.0" encoding="UTF-8"?>
<TextureAtlas imagePath="run.png">
<!-- Created with TexturePacker -->
<!-- http://texturepacker.com -->
<!-- $TexturePacker:SmartUpdate:54fd03ba2d659990a342598e55bc0af8$ -->
<SubTexture name="run0001" x="0" y="0" width="94" height="156" frameX="-230" frameY="-128" frameWidth="550" frameHeight="400"/>
<SubTexture name="run0002" x="94" y="0" width="94" height="150" frameX="-230" frameY="-134" frameWidth="550" frameHeight="400"/>
<SubTexture name="run0003" x="188" y="0" width="98" height="148" frameX="-229" frameY="-136" frameWidth="550" frameHeight="400"/>
<SubTexture name="run0004" x="286" y="0" width="100" height="154" frameX="-230" frameY="-130" frameWidth="550" frameHeight="400"/>
<SubTexture name="run0005" x="386" y="0" width="98" height="160" frameX="-230" frameY="-124" frameWidth="550" frameHeight="400"/>
<SubTexture name="run0006" x="0" y="160" width="96" height="160" frameX="-230" frameY="-124" frameWidth="550" frameHeight="400"/>
<SubTexture name="run0007" x="96" y="160" width="96" height="158" frameX="-229" frameY="-126" frameWidth="550" frameHeight="400"/>
<SubTexture name="run0008" x="192" y="160" width="96" height="152" frameX="-229" frameY="-132" frameWidth="550" frameHeight="400"/>
<SubTexture name="run0009" x="288" y="160" width="98" height="150" frameX="-229" frameY="-134" frameWidth="550" frameHeight="400"/>
<SubTexture name="run0010" x="386" y="160" width="100" height="156" frameX="-230" frameY="-128" frameWidth="550" frameHeight="400"/>
<SubTexture name="run0011" x="0" y="320" width="98" height="160" frameX="-230" frameY="-124" frameWidth="550" frameHeight="400"/>
<SubTexture name="run0012" x="98" y="320" width="96" height="160" frameX="-229" frameY="-124" frameWidth="550" frameHeight="400"/>
</TextureAtlas>
Starling은 아래 코드처럼 아주 간단하게 만들 수 있다. //StarlingTest.as
package
{
import flash.display.Sprite;
import starling.core.Starling;
[SWF(frameRate=60, width=800, height=600)]
public class StarlingTest extends Sprite
{
public function StarlingTest()
{
//Starling을 생성하고 시작한다.
var star:Starling = new Starling(Main, stage);
star.start();
}
}
}
//Main.as
package
{
import starling.core.Starling;
import starling.display.MovieClip;
import starling.display.Sprite;
import starling.textures.Texture;
import starling.textures.TextureAtlas;
public class Main extends Sprite
{
//SpriteSheet 텍스쳐 이미지에 대한 정보 XML
[Embed(source="run.xml", mimeType="application/octet-stream")]
private var AtlasXML:Class;
//SpriteSheet 텍스쳐 이미지
[Embed(source="run.png")]
private var AtlasTexture:Class;
public function Main()
{
//이미지로 부터 텍스쳐 생성
var texture:Texture = Texture.fromBitmap(new AtlasTexture());
//XML 데이터
var xml:XML = XML(new AtlasXML());
//Texture Atlas 생성
var atlas:TextureAtlas = new TextureAtlas(texture, xml);
//Texture Altlas로 부터 텍스쳐를 읽어 무비클립 생성 후 자식으로 추가. 주기는 30bps로 설정
var mc:MovieClip = new MovieClip(atlas.getTextures("run"), 30);
addChild(mc);
//현재 활동하는 Starling 객체로 지정
Starling.juggler.add(mc);
}
}
}
이 예제는 단순히 SpriteSheet 텍스쳐의 이미지를 가지고 에니메이션 처리하는게 다 이지만, Starling 프레임워크가 어떤 형태로 개발할 수 있는가 직접 볼 수 있는데 의의가 있겠다.
다른 데모는 아래 링크를 통해 보도록 하자.
http://www.starling-framework.org/demo/index.html
만약 입자 시스템에 대한 확장 기능이 필요하다면 다음 링크를 참고하자.
입자시스템 소스 : https://github.com/PrimaryFeather/Starling-Extension-Particle-System
입자시스템 데모 : http://www.bytearray.org/?p=3431
Flash Player 11이 AIR 3.0과 더불어 곧 나올 기세이다. 이런 프레임워크는 이들 플랫폼에 쉽게 대응하는데 큰 도움이 될 것이다. 꼭 한번 테스트라도 해보는게 좋을 것 같다.
글쓴이 : 지돌스타(http://blog.jidolstar.com/786)
'Adobe Flash 3D' 카테고리의 다른 글
| Away3D 4.0 으로 만들어본 지구 (0) | 2011/11/17 |
|---|---|
| Flash Player 11 3D 용어 정리 (3) | 2011/10/18 |
| Starling Framework - 2D GPU 가속 렌더링 플래시 게임 엔진 (1) | 2011/09/23 |
| Away3D 4.0 학습에 대해 - Github 오픈소스 활용 및 Scene Graph, Mesh, Geometry, Material (0) | 2011/08/01 |
| 1회 Adobe Flash Platform e세미나 - Flash Player 11과 AIR 3 환경에서 3D 개발 (8) | 2011/07/16 |
| [ACC 기술세미나]Adobe Flash Builder 4.5 환경에서 Molehill 3D를 이용한 개발소개 (5) | 2011/05/29 |
윈도8부터 익스가 이원화되는 것부터 시작해서 세계적으로
탈 플래시 바람이 부는데 11버전 좀 빨리나와서 개발도 좀
편하게 했으면 좋겠습니다.
한번 세팅해봤는데도 다시 하려니 귀찮아서 손 놓게 되네요 -.-;