4. • 오픈소스 Cocos2d 엔진의 브랜치 중 하나
• 다중 플랫폼을 지원하는 2D 게임 엔진
• Cocos2d-x 엔진의 전신은 Cocos2d-iPhone
• Objectve-C로 작성된 Cocos2d-iPhone을 C++ 언어로 포
팅
• 엔진의 이름 끝에 붙은 x는 다중 플랫폼을 지원한다는
의미
Cocos2d-x는
5. • 애플사의 iOS 운영체체 환경의 기본 프로그래밍 언어인
Objective-C로 작성
• 기본적으로는 애플의 iOS 환경에서만 사용 가능
• Cocos2d 엔진을 널리 알린 가장 인기있던 브랜치
• Cocos2d-x는 이를 범용성 높은 C++ 언어로 포팅해서 여
러 플랫폼을 쉽게 지원할 수 있도록 한 것이다.
Cocos2d-iPhone
6. • Mac OSX 10.7+ & iOS 5+
• Android 2.3+
• Windows 7+ & Windows Phone 8+
• Linux Ubuntu 12.04+
Cocos2d-x v3.0 지원 플랫폼
7. • Xcode 4.6 (for iOS, Mac)
• gcc 4.7 for Linux or Android(ndk-r9+)
• Visual Studio 2012 (for Windows)
Compiler 요구 사항
8. 2010년 중국의 개발자 왕저(Wang Zhe)에 의해 C++로 포팅되었다.
Cocos2d-x 의 개발자
9. 왕저(王哲)
현재 추콩 테크놀로지의 부사장이자
Cocos2d-x 개발을 이끌고 있다.
(추콩에 인수된 Xiamen Coco
Software의 대표였다.)
2013년 11월 말에는 한국에도 방문
하였다.
10.
11. ● 北京触控科技有限公司
● www.chukong-inc.com
● 触控(촉공) Chukong : Touch & Drag
● 현재 Cocos2d-x의 개발을 지원하고 있다.
● 추콩의 전신은 CocoaChina.com으로서 애플의 코코아 프레임웍의
기술 정보를 공유할 목적으로 만들어진 개발자 커뮤니티 사이트였
다.
● 현재 해당 사이트는 중국에서 가장 큰 규모의 iOS 개발자 커뮤니티
로 성장했고, 현재 26만명의 개발자가 회원으로 가입되어 있다.
추콩 테크놀로지?
14. ● 2008년 아르헨티나의 게임 개발자인 리카르도 퀘사다
(Ricardo Quesada)와 그의 동료 개발자들에 의해서
Python 언어로 처음 만들어진 것이다.
● Cocos2d가 탄생한 곳은 아르헨티나 코르도바 근처의
Los Cocos 라는 마을이다.
● 처음에는 엔진의 이름을 마을 이름을 따서 Los Cocos 라
고 했다가 나중에 0.1 버전을 출시하면서 이름을
Cocos2d로 바꾸었다.
Cocos2d 의 역사
16. • python으로 만들어진 Cocos2d가 출시된 직후 애플의 앱
스토어가 열리고 iPhone SDK가 공개된다.
• 앱스토어의 미래 가능성을 보고 바로 같은 해에 Cocos2d
를 Objective-C 언어로 다시 작성한다.
• Cocos2d-x 엔진의 전신이 되는 Cocos2d For iPhone v0.1
을 공개하게 된다.
Cocos2d-x 의 역사
17. • Cocos2d의 아버지 (아르헨
티나 출신)
• 2011년 징가로 이직하며 미
국으로 이주
• 2013년 Cocos2d-iPhone 을
떠나 Cocos2d-x 팀에 합류
Ricardo Quesada
19. ● ShinyCocos, in Ruby
● Cocos2d-Android, in Java for Android only
● Cocos2d-windows, in C++ for Windows XP/7 only
● CocosNet, in C# base on Mono
● Cocos2d-javascript, in Javascript for browsers
Cocos2d는 여러 언어로 포팅되었다
27. • March 16th 2014, Cocos2d-x team successfully held the first Cocos2d-x Engine Hackathon in
Beijing, China.
• The event lasted for 12 hours, during which more than 20 groups of developers coded to make
Cocos2d-x an even better engine and to demonstrate the spirit and advantage of open source.
• Ricardo Quesada, the father of Cocos2d and the Chief Architect of Chukong,
• Justin Graham, the co-founder of Zynga
• Zhe Wang, Chief Architect of CocoStudio and the author of Cocos2d-x,
• Xiaolong Zhang, the author of CocoStudio,
• Shun Lin, the author of Cocos2d-html5
Cocos2d-x Engine Hackathon
33. ● Flow control: Manage the flow control between different scenes in an easy way
● Sprites: Fast and easy sprites
● Actions: Just tell sprites what you want them to do. Composable actions like move, rotate,
scale, etc
● Effects: Effects like waves, twirl, lens and much more
● Particle Systems: Explosions, fireworks, meteors, smoke and more
● Tiled maps: Support for rectangular and hexagonal tiled maps
● Collision: Basic pure python support for collisions
● Transitions: Move from scene to scene with style
● Menus: Built in classes to create menus
● Text rendering
original Cocos2d (python) 기능
34. OpenGL 기반의 그래픽 엔진
OpenGL 2.1
데스크탑 버전
OpenGL ES 2.0
모바일 버전
35. ● Cocos2d-x의 스프라이트는 단순한 시각적인 이미지 이상의 역할을 한다.
● Cocos2d-x 에서 스프라이트는 하나의 객체로서 시각적으로 보여지는 화면의 가장 기본 구성 요
소가 된다.
● Cocos2d-x 에서 스프라이트를 여러가지 방법으로 움직이고 돌리고 변형할 수 있다.
● 그래픽적인 측면에서 보면 Cocos2d-x 는 스프라이트 그래픽 엔진이라고 할 수 있다.
스프라이트 엔진
39. • UI editor for UI graphic artists
• Animation editor for graphic artists
• Number cruncher for game data designers
• Scene editor for game designers
CocoStudio
47. 아파치 ANT를 이용하여 NDK 컴파일과 안드로이드 SDK 컴파일이 일괄적으
로 한번에 이루어 진다.
안드로이드 빌드 개선
48. • Cocos2d-x 클래스들의 접두어 CC 제거
예) CCSprite ----> Sprite
예) CCScene -----> Scene
• auto 키워드 : c++11 의 자동 형 지정자의 적극적인 사용
Sprite *spr = Sprite::create(“sprimag.png”);
auto spr = Sprite::create("sprimage.png");
• Singleton : Director::getInstance() instead of CCDirector::shareDirector()
달라진 점
49. • Container class v2.0 : CCArray, CCDictionary
• Objective-C : NSArray, NSDictionary 에서 유래
• cocos2d::Vector<T> , cocos2d::Map<K,V>
• CCString ----> cocos2d::Value
• CCARRRAY_FOREACH 를 c++ 11 의 range based for 문으로 대체
달라진 점 : Container class 교체
50. • 콜백 지정매크로 함수 바뀜
menu_selector(callback) --> CC_CALLBACK_0(callback, this)
callfunc_selector(callback) --> CC_CALLBACK_0(callback, this)
• 객체 기반 클래스 CCObject ------> Ref 바뀜
달라진 점
51. 물리 엔진 Cocos2d-x 에 통합
Box2d의 가벼운 버전 Chipmunk
void HelloWorld::addNewSpriteAtPosition(Point p)
{
auto sprite = Sprite::create("circle.png");
sprite->setTag(1);
auto body = PhysicsBody::createCircle(sprite->getContentSize().width / 2);
sprite->setPhysicsBody(body);
sprite->setPosition(p);
this->addChild(sprite);
}
달라진 점 : 물리 엔진 통합
52. ● 스프라이트 내부 처리 개선: Renderer와 Scene
Graph 분리
● Auto Batching : 스프라이트 렌더링 속도 향상을
위해 굳이 SpriteBatchNode를 사용할 필요 없음
● Auto Culling : 화면 경계 벗어난 스프라이트 자
동 컬링
스프라이트 렌더링 성능 개선
53. • 3.0 에서 안되는 기능
썬더 더 레트로는 2.1 버전에서 RenderTexture 에 타일을 하나씩 그려서 배경을 조립한 다음 화면에
뛰우는 방법 사용
3.0 에서는 한번 그린 타일은 다시 반복해서 그려지지 않기 때문에 이 방법이 먹히지 않는다.
타일을 모두 독립적인 스프라이트 객체로 생성해야 한다.
• 2.1 부터 안되는 기능
스프라이트 텍스츄어 속성 변경이 동일한 텍스츄어 이미지 소스를 사용하는 스프라이트라도 개별적
으로 적용되던 게 안됨
스프라이트 성능 개선의 부작용
56. • 3D 엔진으로의 확장
• Cocos3d는 objective-C 로 구현된 Cocos2d-
iPhone을 3D로 확장한 것이다.
• https://github.com/cocos3d/cocos3d
• Cocos3d-x는 Cocos2d-x를 기반
• https://github.com/cocos2d/cocos3d-x
Cocos3d-x
57.
58. • 이미 v3.0에서 Box2d엔진 내부로 통합
• 리카르도 퀘사다가 유체 물리 엔진 LiquidFun과
의 통합 작업중
• 차기 버전에 LiquidFun 지원 추가 가능성 높음
유체 물리 엔진 도입 LiquidFun