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.

2

Share

Download to read offline

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,279

On Slideshare

0

From embeds

0

Number of embeds

2

Actions

Downloads

6

Shares

0

Comments

0

Likes

2

×