[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담Sumin Byeon
이 발표는 넥슨의 신규 개발 게임인 듀랑고의 생태계에 대한 간략한 소개와 OpenCL 을 이용한 병렬 처리에 관한 전반적인 기술적 내용을 다룹니다. 게임 속의 세계에서 지형과 기후, 지질 조건에 맞게 여러 종류의 식물과 광물들을 알맞은 곳에 배치시키는 것이 생태계 시뮬레이터의 역할인데, 이 시뮬레이터는 방대한 양의 계산을 수행합니다. 초기에 만들어진 프로토타입은 이러한 계산을 수행하는데 30분이 넘게 걸렸지만, 병렬처리, 알고리즘 시간복잡도 개선 등의 여러가지 방법들을 통해 그 시간을 11초까지 단축시켰습니다. 구체적으로 어떤 방법들을 시도했었고, 어떤 방법들이 효과가 있었는지 여러분과 그 경험담을 공유하고자 합니다.
이 자료는 지난 2013년 Unite Korea의 지국환씨의 Flappy bird 만들기 튜토리얼을 바탕으로 만든 2014년 창원시 스마트 모바일 앱 지원센터의 "게임 및 웹 앱 개발과정"에서 진행한 세미나 자료입니다.
유니티 버전 4.3에서 작성되었습니다.
이 자료의 튜토리얼을 바탕으로 하나하나 제작해가며 Flappy Bird를 만드는 기쁨을 누리시기 바랍니다.
관련 이미지와 소스는 아래 블로그에 있습니다.
http://ivis.cwnu.ac.kr/tc/dongupak/245
25. 25
Cocos2d-x12
Cocos2d-x 메모리 관리
Sprite
Node
Ref
1
Object-C의 메모리 관리
objc의 메모리 관리는 기본적으로 레퍼런스 카운팅 방식이다.
모든 objc의 클래스는 NSObject를 상속받는다. retain,
release를 적절히 써서 레퍼런스 카운팅 쌍을 맞춰주면 적절
히 메모리가 관리된다. autorelease를 사용하면
NSAutoreleasePool에 생성된 객체가 등록된다. 이후
NSAutoreleasePool이 해제되면 풀에 등록된 모든 객체에
대해서 release를 수행한다.
2
C++의 메모리 관리
C++에는 기본적으로는 저런기능이 존재하지 않는다. new로
객체를 생성하고 delete로 객체를 해제한다. (물론 이제는 표
준이된 std::shared_ptr, 일부컴파일러에서는
std::tr1::shared_ptr라는 이름으로 레퍼런스 카운팅이 되긴
한다.) 하지만 cocos2dx는 cocos2d를 거의 비슷하게 베끼
려보니까 cocos2dx를 보면 CCObject라는 클래스로 objc에
있는 메모리 모델을 비슷하게 만들어놧다.
27. 27
Cocos2d-x12
Cocos2d-x 메모리 관리
auto playmenuItem = MenuItemSprite::create(play_normal,
play_select, CC_CALLBACK_1(MenuScene::menuCallback, this));
28. 28
Cocos2d-x12
Cocos2d-x 메모리 관리
auto playmenuItem = MenuItemSprite::create(play_normal,
play_select, CC_CALLBACK_1(MenuScene::menuCallback, this));
33. 33
Cocos2d-x12
Cocos2d-x Assertion Failed
1.프로그램을 실행하시구요 어썰션 페일이 나면
2.다시 시도를 누르세요.
그러면 디버거는 에러가 난곳에 커서를 가져다 주는데요. 어썰션 처리가 되어
있는곳은 프로그래머가 코딩해주지 않은 부분이 많으므로 콜스택으로 거슬
러 올라 가면서 의심되는 부분을 찾습니다.
콜스택의 단축키는 alt+7 입니다.
3. 어썰션 처리가 되어 있는 부분에서 alt+7 을 누르고
4.최근항목부터 오래된 항목으로 거슬러 올라가는데
5.프로그래머가 코딩해준 부분을 더블클릭해줍니다.(콜스택을 보고 있으면
많이 본 부분이 자신이 코딩해준 부분입니다.)
6.화살표가 가리키고 있는 윗줄 또는 그 윗줄에서 얼마 가지 않아 의심되는
부분이 나올겁니다.
7.포인터나 메모리 연산등을 잘 살펴 보세요.
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardI
D=50&MAEULNo=20&no=501484&ref=501475