Cocos2d x v3.0 무엇이 달라졌나? (20140426)

61
Cocos2d-x v3.0 무무무 무무무무 ? 2014. 4. 27 김 김 김김김 김김김김김김김김 김김김 ! 김김김김김김김 김김
  • Upload

    -
  • Category

    Software

  • view

    7.825
  • download

    7

description

Cocos2d-x 3.0 엔진에 대한 소개

Transcript of Cocos2d x v3.0 무엇이 달라졌나? (20140426)

Page 1: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

Cocos2d-x v3.0 무엇이 달라졌나 ?

2014. 4. 27 김 성 완

젬스푼부산게임아카데미

인디라 ! 인디게임개발자 모임

Page 2: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

Cocos2d-x 란 ?Cocos2d-x 의 역사Cocos2d-x 는 어떤 엔진인가 ?Cocos2d-x 는 누구를 위한 것인가 ?Cocos2d-x v3.0 Cocos2d-x 의 미래

목차

Page 3: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

Cocos2d-x 란 ?

Page 4: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

• 오픈소스 Cocos2d 엔진의 브랜치 중 하나• 다중 플랫폼을 지원하는 2D 게임 엔진• Cocos2d-x 엔진의 전신은 Cocos2d-iPhone

• Objectve-C 로 작성된 Cocos2d-iPhone 을 C++ 언어로 포팅

• 엔진의 이름 끝에 붙은 x 는 다중 플랫폼을 지원한다는 의미

Cocos2d-x 는

Page 5: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

• 애플사의 iOS 운영체체 환경의 기본 프로그래밍 언어인 Objective-C 로 작성

• 기본적으로는 애플의 iOS 환경에서만 사용 가능• Cocos2d 엔진을 널리 알린 가장 인기있던 브랜치• Cocos2d-x 는 이를 범용성 높은 C++ 언어로 포팅해서

여러 플랫폼을 쉽게 지원할 수 있도록 한 것이다 .

Cocos2d-iPhone

Page 7: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

• Xcode 4.6 (for iOS, Mac)

• gcc 4.7 for Linux or Android(ndk-r9+)

• Visual Studio 2012 (for Windows)

Compiler 요구 사항

Page 8: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

2010 년 중국의 개발자 왕저 (Wang Zhe) 에 의해 C++ 로 포팅되었다 .

Cocos2d-x 의 개발자

Page 9: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

왕저 ( 王哲 )

현재 추콩 테크놀로지의 부사장이자 Cocos2d-x 개발을 이끌고 있다 .

( 추콩에 인수된 Xiamen Coco Software 의 대표였다 .)

2013 년 11 월 말에는 한국에도 방문하였다 .

Page 10: Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Page 11: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

● 北京触控科技有限公司● www.chukong-inc.com● 触控 ( 촉공 ) Chukong : Touch & Drag● 현재 Cocos2d-x 의 개발을 지원하고 있다 .● 추콩의 전신은 CocoaChina.com 으로서 애플의 코코아 프레임웍의

기술 정보를 공유할 목적으로 만들어진 개발자 커뮤니티 사이트였다 . ● 현재 해당 사이트는 중국에서 가장 큰 규모의 iOS 개발자 커뮤니티로

성장했고 , 현재 26 만명의 개발자가 회원으로 가입되어 있다 .

추콩 테크놀로지 ?

Page 12: Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Page 13: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

Cocos2d-x 의 역사

Page 14: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

● 2008 년 아르헨티나의 게임 개발자인 리카르도 퀘사다(Ricardo Quesada) 와 그의 동료 개발자들에 의해서 Python 언어로 처음 만들어진 것이다 .

● Cocos2d 가 탄생한 곳은 아르헨티나 코르도바 근처의 Los Cocos 라는 마을이다 .

● 처음에는 엔진의 이름을 마을 이름을 따서 Los Cocos 라고 했다가 나중에 0.1 버전을 출시하면서 이름을 Cocos2d 로 바꾸었다 .

Cocos2d 의 역사

Page 15: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

Cocos2d 의 아버지 Ricardo Quesada

Page 16: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

• python 으로 만들어진 Cocos2d 가 출시된 직후 애플의 앱스토어가 열리고 iPhone SDK 가 공개된다 .

• 앱스토어의 미래 가능성을 보고 바로 같은 해에 Cocos2d 를 Objective-C 언어로 다시 작성한다 .

• Cocos2d-x 엔진의 전신이 되는 Cocos2d For iPhone v0.1 을 공개하게 된다 .

Cocos2d-x 의 역사

Page 17: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

• Cocos2d 의 아버지 (아르헨티나 출신 )

• 2011 년 징가로 이직하며 미국으로 이주

• 2013 년 Cocos2d-iPhone 을 떠나 Cocos2d-x 팀에 합류

Ricardo Quesada

Page 18: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

Rolando Abarca (funkaster), Ricardo Quesada (Riq), Zhe Wang (Walzer)GDC 2012

Page 19: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

● 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 는 여러 언어로 포팅되었다

Page 20: Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Page 21: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

Cocos2d-x 는 어떤 엔진인가 ?

Page 22: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

Cocos2d-x 로 만들어진 국내 게임들

Page 23: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

젬스푼에서 만든 게임들

Page 24: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

Cocos2d-x 엔진의 위상● Cocos2d-x 게임들 매출 순위 최상위 등극● 전세계 점유율 26% ( 추콩 )● 중국내 점유율 70% ● 중국내 Cocos2d-x 프로그래머 몸값 2 배 (?)● Chukong, Google, Microsoft, ARM, Intel and BlackBerry● Zynga, Wooga, Glu, IGG, Big Fish Games, Fingersoft,

Gamevil, GREE, DeNA, Konami, CJ E&M, NHN, LINE, Square Enix and Disney Mobile

Page 25: Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Page 26: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

중국 북경대의 Cocos2d-x 강좌 개설

Page 27: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

• 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

Page 28: Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Page 29: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

Cocos2d 가족들

Page 30: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

http://cocos2d.org/Python최신 버전 0.6.0 (2014. 3 월 현재 )

Cocos2d (Python)

Page 31: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

http://www.cocos2d-iphone.org/Objective-C최신 버전 3.0 RC5 (2014 년 4 월 현재 )

Cocos2d-iPhone

Page 32: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

http://www.cocos2d-x.org/C++11최신 버전 v3.0

Cocos2d-x

Page 33: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

● 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) 기능

Page 34: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

OpenGL 기반의 그래픽 엔진OpenGL 2.1 데스크탑 버전OpenGL ES 2.0 모바일 버전

Page 35: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

● Cocos2d-x 의 스프라이트는 단순한 시각적인 이미지 이상의 역할을 한다 . ● Cocos2d-x 에서 스프라이트는 하나의 객체로서 시각적으로 보여지는 화면의 가장 기본 구성 요소가

된다 . ● Cocos2d-x 에서 스프라이트를 여러가지 방법으로 움직이고 돌리고 변형할 수 있다 . ● 그래픽적인 측면에서 보면 Cocos2d-x 는 스프라이트 그래픽 엔진이라고 할 수 있다 .

스프라이트 엔진

Page 36: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

Scene & Layers (Scene Graph)

Page 37: Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Page 38: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

● CocoStudio( 공식 ), CocosBuilder● Level Helper & Sprite Helper ● Spine, Dragon Bones● Glyph Desinger● Zwoptex, Texture Packer● Particle Designer● Tiled Map Editor

지원 툴들

Page 39: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

• UI editor for UI graphic artists

• Animation editor for graphic artists

• Number cruncher for game data designers

• Scene editor for game designers

CocoStudio

Page 40: Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Page 41: Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Page 42: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

● Cocos2d-JS v3.0alpha2● Cocos2d-html5 + Cocos2d-x javascript

binding

Cocos2d-x 의 사촌

Page 43: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

Cocos2d-x 는 누구를 위한 엔진인가 ?

Page 44: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

• 모바일용 2D 게임에 최적적은 메모리 용량 , 빠른 처리 속도

• C++ 에 익숙한 기존 프로그래머에게 유리• 풍부한 2D 기능 , OpenGL 기능 직사용 가능

Cocos2d-x 가 적합한 조건

Page 45: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

• 유니티에 비하면 개발이나 빌드가 불편하다 .

• C++ 언어에 능숙해야 한다 .

• 공식 문서나 메뉴얼이 부실하다 .

Cocos2d-x 의 단점

Page 46: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

Cocos2d-x v3.0

Page 47: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

아파치 ANT 를 이용하여 NDK 컴파일과 안드로이드 SDK 컴파일이 일괄적으로 한번에 이루어 진다 .

안드로이드 빌드 개선

Page 48: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

• 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()

달라진 점

Page 49: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

• 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 교체

Page 50: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

•콜백 지정매크로 함수 바뀜 menu_selector(callback) --> CC_CALLBACK_0(callback, this) callfunc_selector(callback) --> CC_CALLBACK_0(callback, this)

• 객체 기반 클래스 CCObject ------> Ref 바뀜

달라진 점

Page 51: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

물리 엔진 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);

}

달라진 점 : 물리 엔진 통합

Page 52: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

● 스프라이트 내부 처리 개선 : Renderer 와 Scene Graph 분리

● Auto Batching : 스프라이트 렌더링 속도 향상을 위해 굳이 SpriteBatchNode 를 사용할 필요 없음

● Auto Culling : 화면 경계 벗어난 스프라이트 자동 컬링

스프라이트 렌더링 성능 개선

Page 53: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

• 3.0 에서 안되는 기능 썬더 더 레트로는 2.1 버전에서 RenderTexture 에 타일을 하나씩 그려서 배경을 조립한 다음 화면에

뛰우는 방법 사용

3.0 에서는 한번 그린 타일은 다시 반복해서 그려지지 않기 때문에 이 방법이 먹히지 않는다 .

타일을 모두 독립적인 스프라이트 객체로 생성해야 한다 .

• 2.1 부터 안되는 기능스프라이트 텍스츄어 속성 변경이 동일한 텍스츄어 이미지 소스를 사용하는 스프라이트라도 개별적으로

적용되던 게 안됨

스프라이트 성능 개선의 부작용

Page 54: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

상세한 내용은…

https://github.com/cocos2d/cocos2d-x/blob/develop/docs/RELEASE_NOTES.md

cocos2d-x v3.0 Release Notes

Page 55: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

Cocos2d-x 의 미래

Page 56: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

• 3D 엔진으로의 확장• Cocos3d 는 objective-C 로 구현된 Cocos2d-

iPhone 을 3D 로 확장한 것이다 .• https://github.com/cocos3d/cocos3d

• Cocos3d-x 는 Cocos2d-x 를 기반• https://github.com/cocos2d/cocos3d-x

Cocos3d-x

Page 57: Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Page 58: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

• 이미 v3.0 에서 Box2d 엔진 내부로 통합• 리카르도 퀘사다가 유체 물리 엔진 LiquidFun 과의 통합 작업중

•차기 버전에 LiquidFun 지원 추가 가능성 높음

유체 물리 엔진 도입 LiquidFun

Page 59: Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Page 60: Cocos2d x v3.0 무엇이 달라졌나? (20140426)

Q and A

Page 61: Cocos2d x v3.0 무엇이 달라졌나? (20140426)