Cocos2dx와 c++11를 이용한 게임 개발
-
Upload
- -
Category
Technology
-
view
790 -
download
0
Transcript of Cocos2dx와 c++11를 이용한 게임 개발
Cocos2d HistoryIPhone (object-c)
Android (Only Java) Window (Only C++) Web (Only Javascript)
Window, Android, IPhone ( C++, Javascript)
Version 0.1
Cocos Family
Cocos2d OpenSource 결정Cocos2dx 1.0
HTML5 (Only Javascript)
Window, Android, Iphone,Windows Phone ( C++, Javascript)
Cocos2dx 1.1
Cocos2dx 3.3 Window, Android, Iphone,Windows Phone, Tizen ( C++, Javascript)
Cocos2d Cross-Platform
Branch Target Platform API Language
Cocos2d Windows, OS X, Linux Python 2.6, 2.7 or 3.3+,Objective-C
Cocos2d-xiOS, Android, Tizen, Win-dows 8, Windows Phone 8, Linux, Mac OS X
C++11,C++,Lua, JavaScript
Cocos2d-SpriteBuilder iOS, Mac OS X, Android Objective-C, SwiftCocos2d-html5 HTML5-ready browsers JavaScript
Cocos2d-xna Windows Phone 7 & 8, Windows 7 & 8, Xbox 360 C#
Cocos2d• https://github.com/cocos2d/cocos2d-x• Editor Tool
Cocos2dx 개발환경 구축• http://www.cocos2d-x.org/download• Cocos2d-x 최신버전 다운로드 후 압축 해제
Apache ant• http://ant.apache.org/bindownload.cgi
ANT 를 압축을 푼 폴더 위치를 PATH 환경변수에 등록합니다 .
Pool ManagerPool Manager
Memorny1 Memorny2 Memorny3 Memorny4
Ref
(Static Function) Create
Managed Object ArrayRelease Stack
WHY?• Decoration Patton• Can Delete all
SuperClass
BaseClass
Extend 1 Class Extend 1 Class Extend 1 Class
Managed or Unmanaged• Managed Memory• 정의된 동작에 의해 삭제가 되어야 함• 직접 삭제를 하면 의존성 문제로 NULL 을 접근할 수 가 있음• 메모리 Leak 이 발생하지 않음
• Unmanaged Memory• 직접 모두 제거를 해줘야 함• 메모리관리가 매우 유용함 .• 메모리 Leak 이 발생할 수 있음
AppDelegateDirector
Scene
Node
Sprite
Animation
Button
behind code( 보이지 않는 영역 )
AppDelegate
Application
C++• 장점• 가장 강력하면서 모든 것을 구연할 수 있는 강력한 언어 !• 실행 속도가 빠름
• 단점• 현재 언어의 패러다임이
10 년전에도 늦음• 크로스 플렛폼 개발이 난해함• 생산성이 극도로 작음
Boost 란• OpenSource C++ Lib• 많이 사용하는 함수들을 라이브러리화 함• 대표적인 예제 • Foreach
• Boost 에서는 Define 정의 법으로 구현되어 있음 .• Lamda
• 익명 메소드 사용
2007 ~ 2011• 수많은 검증과 테스트를 통과한 검증된 라이브러리 !• 하지만 방대한 라이브러리 80 개의 서브 라이브러리가 존재하며 그안에 들어있는 함수들은 나열할 수 없을 만큼 방대함
C++11• C++98• 잘 알려지지 않음
• C++0x • Boost 라이브러리의 정규 라이브러리로 편입화 시도• 새로운 함수형 언어 시도
• C++11• 공식적으로 boost 라이브러리 일정 부분을 STL 로 인정함• 함수형 언어 디자인을 개발 가능하게 추가함
Boostforeach#include <string>#include <iostream>#include <boost/foreach.hpp>
int main(){ std::string hello( "Hello, world!" );
BOOST_FOREACH( char ch, hello ) { std::cout << ch; }
return 0;}
C++11 for each#include <iostream>int main(){ std::string hello( "Hello, world!" ); //for (char ch : hello) 이것도 된다 . for each (char ch in hello) { std::cout << ch; } return 0;}
Lambda• C#• 익명 메소드 + 델리게이트 와 같다 .
• 사용법• myButton->addTouchEventListener([=](Ref *pSender,
TouchEventType type){
myAnimationFinish->play(CCCallFunc::create([=]() { myButton->setvisible(false); }));});
Function 변수화• Std::function<void>(int count) PrintNumber;
PrintNumber = [=](int count){ printf(“%d”,count);};
PrintNumber(10); //10
PrintNumber = [=](int count){ printf(“%d”,count + 1);};
PrintNumber(10); // 11
C++ 으로 충분한데 왜 ?
Button
Login Button Next Button
Buy Button Pause Button
Cancel Button
Button
Click Event Function
Login Function
Next Function
Buy Function
Pause Function
결론1. C++11 활용하면 중복코드 없이 쉽게 개발이가능2. Cocos2dx 는 오픈소스 ! 버그가 있다면 직접 수정가능3. Andorid, IOS 에서도 호환가능한 프로젝트가 제작됨4. Managed Code, UnManaged Code 구분해서 개발 해야함 .