Cocos2d x a to z (상)
-
Upload
seungil-choi -
Category
Education
-
view
234 -
download
2
description
Transcript of Cocos2d x a to z (상)
cocos2d-x 2.x? 3.x?
• 2.x• 모바일 게임엔진으로써 1.x 에서 일어나는 퍼포먼스 문제를 해결하기 위해
나옴 (1.x 버전은 2011 년 중순까지 30fps 가 한계였다 .)• 당시 모바일 cpu 들이 싱글코어였기 때문에 이에 맞춰서 개발됨 .
• cocos2d-x 2.x? 3.x?
• 3.x • 2.x 의 낡은 디자인 방식 , 현대의 멀티코어 태블릿 PC, 모바일 기기를
지원하기 위해 나옴 • performing, elegant, scalable, flexible but still simple to use and to
understand 하게 개발되었다 . 고 cocos2d-x 3.0 로드맵에 쓰여져있다 . 정말 개발자가 쓴것같다 .
• 이전 버전과 comfortable 하게 개발하는것에 초점이 맞추어져있다 .
cocos2d-x 인스톨• 설치• only pc
• cocos2d-x 다운로드 . 압축 해제 후 터미널을 이용해 cocos2d-x 폴더로 가서 cocos new -l [language] 진행
• 만약 다른 디바이스로 포팅 계획이 있다면• Android SDK, Android NDK, Apache ANT 필요• http://riniblog.egloos.com/viewer/1075865 참고• Rini 군의 은밀한 블로그
cocos2d-x 구조
• cocos2d-x 는게임에 필요한 모든 객체들을 지원한다• Sprite• SpriteBatch• Action (Animation, Event)• Camera• Layer• Scene• ParticleSystem• Physics (Chipmunk, Box2d, LiquidFun)
cocos2d-x 구조• cocos2d-x 는게임에 필요한 모든 객체들을 지원한다
• Sprite • SpriteBatch • Action (Animation, Event) • Camera • Layer • Scene • ParticleSystem • Physics (Chipmunk, Box2d, LiquidFun)
• Useless ( 이유는 추후 설명 )
cocos2d-x 구조• 위 모든 객체들은 cocos2d-x 내의 Node 객체를 상속받아
구현된다 .• 자세한 부분은 아래 링크 참조 (2.1.4 기준 class diagram)• http://plming.tistory.com/57
cocos2d-x 의 장점과 단점
• 장점• 여타 엔진 대비 엄청나게 낮은 진입장벽• 잘 되어있는 문서화 (http://cocos2d-x.org/docs/README)• 이미 많은 사람들이 먼저 경험한 문제와 그에대한 해결방법들
• 단점• 잦은 버그 ( 이후 사례 소개 )• 다른 버전에 대한 포팅의 어려움
cocos2d-x 의 장점• 여타 엔진 대비 엄청나게 낮은 진입장벽• cocos2d-x 와 비교할 엔진 : Unity3D
• Unity3D 는 실제 개발에 투입될때 GUI 의 사용법과 3D 뷰를 자유롭게 컨트롤 할 수 있어야 함 . Component 방식의 개발 방법도 학습코스트가 그리 낮지 않다 .
• cocos2d-x 는 C++ 을 사용할줄 안다면 아주 손쉽게 ( 깔끔하게는 아니다 ) 게임개발을 시작할 수 있다 . 극단적으로 보면 addChild 만 쓸줄알면 게임 개발이 가능함
cocos2d-x 의 장점• 잘 되어있는 문서화
• 요즘 잘 안되어져 있는 문서가 어딨겠냐마는 , cocos2d-x 는 자체적으로 한국어 document 지원
• http://cocos2d-x.org/docs/README
cocos2d-x 의 단점• 버그
• 실제로 2.x 쓸때 Animation 의 프레임이 일정 수준 이상 넘어가면 자기 멋대로 돌아가는 현상 발생 .
• 직접 Animation 시스템을 개발해 쓰는것을 추천하기도 함• 포팅의 어려움
• Unity3D 는 버튼 한번만 누르면 apk 가 떨어지는데 반해 , cocos2d-x 는 apk 한번 떨구기까지의 과정도 험난하며 실행시 각종 버그 터짐 . 다시한번 디버깅을 하는 과정도 쉽지않다 .
cocos2d-x 에 대해서 쓸모있을 상식들• 기초적인 요소들
• Scene Graph • Director • Layer • Node • Scene • Sprite
• 2.x -> 3.x 의 내부적인 요소• Renderer 와 Scene Graph 분리• Auto Batching• Auto Culling
Renderer 와 Scene Graph 분리(RenderQueue)• 3.x 가 되면서 기존 Scene Graph 와 Renderer 를 분리함• RenderQueue 와 CommandQueue 를 개발했고 , 더이상
렌더링하는동안 OpenGL 을 직접 부르지 않게 되었다 .
Auto batching
• 3.x 에서 Auto Batching 이 구현되어 , 더이상 SpriteBatchNode 를 쓸 필요가 없어졌다 .
• 원리• 1 개의 Quad 는 3 개의 속성을 갖는다 -> vertex(x,y,z), (u, v), color(rgba).• 새로운 Quad 를 Buffer 에 만든다 .• 새로운 quad 와 이전의 quad 를 비교해 같은 material 을 사용하면 아무런
일도 일어나지 않고 넘어간다 .• 그러나 material 이 다르다면 quad 는 그려진다 .
Auto Culling
• 2.x• Camera 에 잡히지 않는 객체들은 그동안 프로그래머가 직접 필터링해왔다 .
• 3.x• 카메라에 보여지지 않는 객체는 자동으로 현재 프레임에서 삭제해
그려지지 않도록 되었다 .• 정확히 말하면 , 내부적으로 AABB 에 집어넣어 false 를 반환하면
RenderQueue 에 집어넣지 않는다 .
Scene graph - Director
• http://www.cocos2d-x.org/wiki/Director• Scene 들을 관리해주는 역할을 맡는다 .• 역할이 역할이니만큼 Singleton 으로 구현되어져 있다 .• Director 로 Scene 을 Push 하면 이전에 Active 상태에 있던 Scene 은
알아서 Pause 상태로 들어간다 .• 기존 Scene 을 Pop 해주면 이전 Scene 은 Active 상태로 돌아온다 .
Scene graph - Layer
• http://www.cocos2d-x.org/wiki/Layer• 기존 Layer 는 ui 의 용도로 쓰였다 . ( 터치 이벤트 기능 때문에 )• 하지만 3.x 부터는 모든 node 가 터치 이벤트를 받을 수 있기 때문에
Layer 를 쓸 이유가 급격히 줄어들었다 . • 추후 Deprecated 로 들어갈 예정 .
Scene graph - Scene
• http://www.cocos2d-x.org/wiki/Scene• 실제로 Sprite 와 함께 가장 큰 비중을 차지하는 녀석 .• Scene 과 Sprite 만 준다면 게임을 만들 수 있기는 하다 .• Director 에서 관리한다 .• Scene 에 Sprite 를 addchild 한다 . 모든 스프라이트의 엄마아빠다 .• Scene 들의 순서를 나열하는것 만으로 게임 플로우로 쓸수있다 .• CCNode 의 Subclass 이기 때문에 CCActions 사용가능 ( 화면
전환효과 )