SlideShare a Scribd company logo
1 of 22
week2 
게임엔진 cocos2d-x의 개념적인 부분들
cocos2d-x? 
• 유래 
• 역사 
• 정도는 제끼고 넘어가는걸로
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 2.x? 3.x? 
• 사실은 그냥 신버전이니까 더 나아졌겠거니 하고 3.x를 쓰기로 
한다.
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 - Node 
• http://www.cocos2d-x.org/wiki/Node 
• TBD
Scene graph - Scene 
• http://www.cocos2d-x.org/wiki/Scene 
• 실제로 Sprite와 함께 가장 큰 비중을 차지하는 녀석. 
• Scene과 Sprite만 준다면 게임을 만들 수 있기는 하다. 
• Director에서 관리한다. 
• Scene에 Sprite를 addchild한다. 모든 스프라이트의 엄마아빠다. 
• Scene들의 순서를 나열하는것 만으로 게임 플로우로 쓸수있다. 
• CCNode의 Subclass이기 때문에 CCActions 사용가능(화면 전환효과)
Scene graph - Sprite 
• 캬 나왔다 
• cocos2d-x의 95%다. 움직이고, 돌리고, 키우고, 애니메이션, 
불투명도 조절 다 해줄수 있다. 
• 게임 개발시 모든 게임 오브젝트는 Sprite를 상속받아 개발해두면 
향후 편리하다. (게임 내 오브젝트들을 List<Sprite>로 묶어 
관리해줄수 있음)

More Related Content

What's hot

동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념Changhwan Yi
 
게임개발 Cocos2d-x : 소프트웨어씽킹연구소
게임개발 Cocos2d-x : 소프트웨어씽킹연구소게임개발 Cocos2d-x : 소프트웨어씽킹연구소
게임개발 Cocos2d-x : 소프트웨어씽킹연구소SWTHINKING LAB
 
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장ukjinkwoun
 
동국대 앱창작터 5일차:Cocos2d-X 확장기능
동국대 앱창작터 5일차:Cocos2d-X 확장기능동국대 앱창작터 5일차:Cocos2d-X 확장기능
동국대 앱창작터 5일차:Cocos2d-X 확장기능Changhwan Yi
 
동국대 앱창작터 2일차:Cocos2d-X 기본기능
동국대 앱창작터 2일차:Cocos2d-X 기본기능동국대 앱창작터 2일차:Cocos2d-X 기본기능
동국대 앱창작터 2일차:Cocos2d-X 기본기능Changhwan Yi
 
Direct x 11 입문
Direct x 11 입문Direct x 11 입문
Direct x 11 입문Jin Woo Lee
 
[NHN_NEXT] DirectX Tutorial 강의 자료
[NHN_NEXT] DirectX Tutorial 강의 자료[NHN_NEXT] DirectX Tutorial 강의 자료
[NHN_NEXT] DirectX Tutorial 강의 자료MinGeun Park
 
[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술MinGeun Park
 
17. cocos2d 기초
17. cocos2d  기초17. cocos2d  기초
17. cocos2d 기초Sangon Lee
 
Ccx03.cocos builder
Ccx03.cocos builderCcx03.cocos builder
Ccx03.cocos builder우진 이
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11민웅 이
 
3 d 그래픽 엔진 비교
3 d 그래픽 엔진 비교3 d 그래픽 엔진 비교
3 d 그래픽 엔진 비교yoonhs306
 
NVIDIA GPU CLOUD로 시작하는 딥러닝 환경설정
NVIDIA GPU CLOUD로 시작하는 딥러닝 환경설정NVIDIA GPU CLOUD로 시작하는 딥러닝 환경설정
NVIDIA GPU CLOUD로 시작하는 딥러닝 환경설정JinYeong Wang
 
20140514 team blender_v01 (Korean)
20140514 team blender_v01 (Korean)20140514 team blender_v01 (Korean)
20140514 team blender_v01 (Korean)Dongho Kim
 
Tips and experience_of_dx12_engine_development._ver_1.2
Tips and experience_of_dx12_engine_development._ver_1.2Tips and experience_of_dx12_engine_development._ver_1.2
Tips and experience_of_dx12_engine_development._ver_1.2YEONG-CHEON YOU
 
Compute shader
Compute shaderCompute shader
Compute shaderQooJuice
 
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발YEONG-CHEON YOU
 

What's hot (20)

동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
 
게임개발 Cocos2d-x : 소프트웨어씽킹연구소
게임개발 Cocos2d-x : 소프트웨어씽킹연구소게임개발 Cocos2d-x : 소프트웨어씽킹연구소
게임개발 Cocos2d-x : 소프트웨어씽킹연구소
 
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
 
동국대 앱창작터 5일차:Cocos2d-X 확장기능
동국대 앱창작터 5일차:Cocos2d-X 확장기능동국대 앱창작터 5일차:Cocos2d-X 확장기능
동국대 앱창작터 5일차:Cocos2d-X 확장기능
 
동국대 앱창작터 2일차:Cocos2d-X 기본기능
동국대 앱창작터 2일차:Cocos2d-X 기본기능동국대 앱창작터 2일차:Cocos2d-X 기본기능
동국대 앱창작터 2일차:Cocos2d-X 기본기능
 
Direct x 11 입문
Direct x 11 입문Direct x 11 입문
Direct x 11 입문
 
[NHN_NEXT] DirectX Tutorial 강의 자료
[NHN_NEXT] DirectX Tutorial 강의 자료[NHN_NEXT] DirectX Tutorial 강의 자료
[NHN_NEXT] DirectX Tutorial 강의 자료
 
[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술
 
2D games with iOS or Corona
2D games with iOS or Corona2D games with iOS or Corona
2D games with iOS or Corona
 
17. cocos2d 기초
17. cocos2d  기초17. cocos2d  기초
17. cocos2d 기초
 
Ccx03.cocos builder
Ccx03.cocos builderCcx03.cocos builder
Ccx03.cocos builder
 
Coco2d x
Coco2d xCoco2d x
Coco2d x
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11
 
3 d 그래픽 엔진 비교
3 d 그래픽 엔진 비교3 d 그래픽 엔진 비교
3 d 그래픽 엔진 비교
 
NVIDIA GPU CLOUD로 시작하는 딥러닝 환경설정
NVIDIA GPU CLOUD로 시작하는 딥러닝 환경설정NVIDIA GPU CLOUD로 시작하는 딥러닝 환경설정
NVIDIA GPU CLOUD로 시작하는 딥러닝 환경설정
 
20140514 team blender_v01 (Korean)
20140514 team blender_v01 (Korean)20140514 team blender_v01 (Korean)
20140514 team blender_v01 (Korean)
 
Tips and experience_of_dx12_engine_development._ver_1.2
Tips and experience_of_dx12_engine_development._ver_1.2Tips and experience_of_dx12_engine_development._ver_1.2
Tips and experience_of_dx12_engine_development._ver_1.2
 
Kinect pc
Kinect   pcKinect   pc
Kinect pc
 
Compute shader
Compute shaderCompute shader
Compute shader
 
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
 

Viewers also liked

GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터Mark Choi
 
Dll파일 호출
Dll파일 호출Dll파일 호출
Dll파일 호출abapier
 
Silverlight vs flash
Silverlight vs flashSilverlight vs flash
Silverlight vs flash권 태혁
 
4.5부동소수점
4.5부동소수점4.5부동소수점
4.5부동소수점JaeHong Park
 
게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출hongsungbock
 
[NDC14] 파워포인트로 그래픽 리소스 만들기
[NDC14] 파워포인트로 그래픽 리소스 만들기[NDC14] 파워포인트로 그래픽 리소스 만들기
[NDC14] 파워포인트로 그래픽 리소스 만들기Sun Park
 
3D Engine (ICON 2007)
3D Engine (ICON 2007)3D Engine (ICON 2007)
3D Engine (ICON 2007)SeongWan Kim
 
Dom 생성과정
Dom 생성과정Dom 생성과정
Dom 생성과정abapier
 
C# 뉴비를 위한 맛보기 2
C# 뉴비를 위한 맛보기 2C# 뉴비를 위한 맛보기 2
C# 뉴비를 위한 맛보기 2진상 문
 
Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Thisisone Lee
 
GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체Mark Choi
 
알고리즘 스터디 NP-완비
알고리즘 스터디 NP-완비알고리즘 스터디 NP-완비
알고리즘 스터디 NP-완비SeungMin Yang
 
[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉MinGeun Park
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 JiUng Choi
 
이권일 Sse 를 이용한 최적화와 실제 사용 예
이권일 Sse 를 이용한 최적화와 실제 사용 예이권일 Sse 를 이용한 최적화와 실제 사용 예
이권일 Sse 를 이용한 최적화와 실제 사용 예zupet
 
Digital lighting and rendering
Digital lighting and renderingDigital lighting and rendering
Digital lighting and renderingJaeHong Park
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp진현 조
 
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2진상 문
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정funmeate
 

Viewers also liked (20)

GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터
 
Dll파일 호출
Dll파일 호출Dll파일 호출
Dll파일 호출
 
Silverlight vs flash
Silverlight vs flashSilverlight vs flash
Silverlight vs flash
 
4.5부동소수점
4.5부동소수점4.5부동소수점
4.5부동소수점
 
게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출
 
[NDC14] 파워포인트로 그래픽 리소스 만들기
[NDC14] 파워포인트로 그래픽 리소스 만들기[NDC14] 파워포인트로 그래픽 리소스 만들기
[NDC14] 파워포인트로 그래픽 리소스 만들기
 
3D Engine (ICON 2007)
3D Engine (ICON 2007)3D Engine (ICON 2007)
3D Engine (ICON 2007)
 
Dom 생성과정
Dom 생성과정Dom 생성과정
Dom 생성과정
 
투영 공식
투영 공식투영 공식
투영 공식
 
C# 뉴비를 위한 맛보기 2
C# 뉴비를 위한 맛보기 2C# 뉴비를 위한 맛보기 2
C# 뉴비를 위한 맛보기 2
 
Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2
 
GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체
 
알고리즘 스터디 NP-완비
알고리즘 스터디 NP-완비알고리즘 스터디 NP-완비
알고리즘 스터디 NP-완비
 
[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
 
이권일 Sse 를 이용한 최적화와 실제 사용 예
이권일 Sse 를 이용한 최적화와 실제 사용 예이권일 Sse 를 이용한 최적화와 실제 사용 예
이권일 Sse 를 이용한 최적화와 실제 사용 예
 
Digital lighting and rendering
Digital lighting and renderingDigital lighting and rendering
Digital lighting and rendering
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp
 
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
 

Similar to Cocos2d x a to z (상)

Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기iFunFactory Inc.
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기Sumin Byeon
 
CUDA 프로그래밍 기초 MODUCON2018
CUDA 프로그래밍 기초 MODUCON2018CUDA 프로그래밍 기초 MODUCON2018
CUDA 프로그래밍 기초 MODUCON2018Shengzhe Li
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우
 
Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5YEONG-CHEON YOU
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .YEONG-CHEON YOU
 
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013devCAT Studio, NEXON
 
Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Minsu Park
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템Young Soo Kim
 
120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseer120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseerChan-hyun Park
 
아이폰에 포팅해보기
아이폰에 포팅해보기아이폰에 포팅해보기
아이폰에 포팅해보기changehee lee
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안Jeongsang Baek
 
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08Nomad Connection, Inc.
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템Young Soo Kim
 
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4Sangcheol Hwang
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)khuhacker
 
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담Sumin Byeon
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 

Similar to Cocos2d x a to z (상) (20)

Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 
CUDA 프로그래밍 기초 MODUCON2018
CUDA 프로그래밍 기초 MODUCON2018CUDA 프로그래밍 기초 MODUCON2018
CUDA 프로그래밍 기초 MODUCON2018
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 
Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .
 
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
 
Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
 
120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseer120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseer
 
아이폰에 포팅해보기
아이폰에 포팅해보기아이폰에 포팅해보기
아이폰에 포팅해보기
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
 
Kinect sdk사용하기
Kinect sdk사용하기Kinect sdk사용하기
Kinect sdk사용하기
 
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
 
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
 
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
 

Cocos2d x a to z (상)

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