Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
Ccx03.기본기능 실습
Next
Download to read offline and view in fullscreen.

Share

Cocos2d x a to z (상)

Download to read offline

이야아아아아아

Cocos2d x a to z (상)

  1. 1. week2 게임엔진 cocos2d-x의 개념적인 부분들
  2. 2. cocos2d-x? • 유래 • 역사 • 정도는 제끼고 넘어가는걸로
  3. 3. cocos2d-x 2.x? 3.x? • 2.x • 모바일 게임엔진으로써 1.x에서 일어나는 퍼포먼스 문제를 해결하기 위해 나옴 (1.x버전은 2011년 중순까지 30fps가 한계였다.) • 당시 모바일 cpu들이 싱글코어였기 때문에 이에 맞춰서 개발됨.
  4. 4. • 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하게 개발하는것에 초점이 맞추어져있다.
  5. 5. cocos2d-x 2.x? 3.x? • 사실은 그냥 신버전이니까 더 나아졌겠거니 하고 3.x를 쓰기로 한다.
  6. 6. 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군의 은밀한 블로그
  7. 7. cocos2d-x 구조 • cocos2d-x 는게임에 필요한 모든 객체들을 지원한다 • Sprite • SpriteBatch • Action (Animation, Event) • Camera • Layer • Scene • ParticleSystem • Physics (Chipmunk, Box2d, LiquidFun)
  8. 8. cocos2d-x 구조 • cocos2d-x 는게임에 필요한 모든 객체들을 지원한다 • Sprite • SpriteBatch • Action (Animation, Event) • Camera • Layer • Scene • ParticleSystem • Physics (Chipmunk, Box2d, LiquidFun) • Useless ( 이유는 추후 설명)
  9. 9. cocos2d-x 구조 • 위 모든 객체들은cocos2d-x 내의 Node 객체를 상속받아 구현된다. • 자세한 부분은 아래 링크 참조 (2.1.4 기준 class diagram) • http://plming.tistory.com/57
  10. 10. cocos2d-x의 장점과 단점 • 장점 • 여타 엔진 대비 엄청나게 낮은 진입장벽 • 잘 되어있는 문서화 (http://cocos2d-x.org/docs/README) • 이미 많은 사람들이 먼저 경험한 문제와 그에대한 해결방법들 • 단점 • 잦은 버그 (이후 사례 소개) • 다른 버전에 대한 포팅의 어려움
  11. 11. cocos2d-x의 장점 • 여타 엔진 대비 엄청나게 낮은 진입장벽 • cocos2d-x와 비교할 엔진 : Unity3D • Unity3D는 실제 개발에 투입될때 GUI의 사용법과 3D 뷰를 자유롭게 컨트롤 할 수 있어야 함. Component 방식의 개발 방법도 학습코스트가 그리 낮지 않다. • cocos2d-x는 C++을 사용할줄 안다면 아주 손쉽게(깔끔하게는 아니다) 게임개발을 시작할 수 있다. 극단적으로 보면addChild만 쓸줄알면 게임 개발이 가능함
  12. 12. cocos2d-x의 장점 • 잘 되어있는 문서화 • 요즘 잘 안되어져 있는 문서가 어딨겠냐마는, cocos2d-x는 자체적으로 한국어 document 지원 • http://cocos2d-x.org/docs/README
  13. 13. cocos2d-x의 단점 • 버그 • 실제로 2.x 쓸때 Animation의 프레임이 일정 수준 이상 넘어가면 자기 멋대로 돌아가는 현상 발생. • 직접 Animation 시스템을 개발해 쓰는것을 추천하기도 함 • 포팅의 어려움 • Unity3D는 버튼 한번만 누르면 apk가 떨어지는데 반해, cocos2d-x는 apk한번 떨구기까지의 과정도 험난하며 실행시 각종 버그 터짐. 다시한번 디버깅을 하는 과정도 쉽지않다.
  14. 14. cocos2d-x 에 대해서 쓸모있을 상식들 • 기초적인 요소들 • Scene Graph • Director • Layer • Node • Scene • Sprite • 2.x -> 3.x의 내부적인 요소 • Renderer와 Scene Graph 분리 • Auto Batching • Auto Culling
  15. 15. Renderer와 Scene Graph 분리(RenderQueue) • 3.x가 되면서 기존 Scene Graph와 Renderer를 분리함 • RenderQueue와 CommandQueue를 개발했고, 더이상 렌더링하는동안 OpenGL을 직접 부르지 않게 되었다.
  16. 16. 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는 그려진다.
  17. 17. Auto Culling • 2.x • Camera에 잡히지 않는 객체들은 그동안 프로그래머가 직접 필터링해왔다. • 3.x • 카메라에 보여지지 않는 객체는 자동으로 현재 프레임에서 삭제해 그려지지 않도록 되었다. • 정확히 말하면, 내부적으로 AABB에 집어넣어 false를 반환하면 RenderQueue에 집어넣지 않는다.
  18. 18. Scene graph - Director • http://www.cocos2d-x.org/wiki/Director • Scene들을 관리해주는 역할을 맡는다. • 역할이 역할이니만큼 Singleton으로 구현되어져 있다. • Director로 Scene을Push하면 이전에 Active상태에 있던 Scene은 알아서 Pause상태로 들어간다. • 기존 Scene을 Pop해주면 이전 Scene은Active상태로 돌아온다.
  19. 19. Scene graph - Layer • http://www.cocos2d-x.org/wiki/Layer • 기존 Layer는 ui의 용도로 쓰였다. (터치 이벤트 기능 때문에) • 하지만 3.x부터는 모든 node가 터치 이벤트를 받을 수 있기 때문에 Layer를 쓸 이유가 급격히 줄어들었다. • 추후 Deprecated로 들어갈 예정.
  20. 20. Scene graph - Node • http://www.cocos2d-x.org/wiki/Node • TBD
  21. 21. Scene graph - Scene • http://www.cocos2d-x.org/wiki/Scene • 실제로 Sprite와 함께 가장 큰 비중을 차지하는 녀석. • Scene과 Sprite만 준다면 게임을 만들 수 있기는 하다. • Director에서 관리한다. • Scene에 Sprite를 addchild한다. 모든 스프라이트의 엄마아빠다. • Scene들의 순서를 나열하는것 만으로 게임 플로우로 쓸수있다. • CCNode의 Subclass이기 때문에 CCActions 사용가능(화면 전환효과)
  22. 22. Scene graph - Sprite • 캬 나왔다 • cocos2d-x의 95%다. 움직이고, 돌리고, 키우고, 애니메이션, 불투명도 조절 다 해줄수 있다. • 게임 개발시 모든 게임 오브젝트는 Sprite를 상속받아 개발해두면 향후 편리하다. (게임 내 오브젝트들을 List<Sprite>로 묶어 관리해줄수 있음)
  • honggyunkim

    Dec. 26, 2016
  • risekon

    Dec. 19, 2014

이야아아아아아

Views

Total views

1,288

On Slideshare

0

From embeds

0

Number of embeds

2

Actions

Downloads

6

Shares

0

Comments

0

Likes

2

×