You are here: Home - Studies∞ - GDC Day-4 Class 1

GDC Day-4 Class 1

GDC DAY-4 Class 1

Cocos2D-X : Open Source Project Bringing Your Native Games to iOS, Android and More Platforms
Room 2000, West Hall, 2nd Fl
Zhe Wang(Cocos2D-X)

오늘은 비주얼샤워의 Pretsel 엔진 외에 또 크로스플랫폼 개발을 지원한다는 cocos2D-X의 리드 프로그래머가 직접 멀티플랫폼 빌드를 시연하는 강연을 들었습니다. cocos2d-x는 cocos2d 프로젝트의 하나로 c++로 작성된 어플리케이션을 Windows, OS X, Ubuntu, iOS, Android 에서 동작하도록 하는 cross platform 지원 프로젝트입니다.

빌드 시연이 위주이다 보니 기술적으로 특별한 설명은 없었습니다. 첫 시작은 cocos2d로 개발된 어플리케이션들이 현재 얼마나 되는지 통계 자료 정도를 보여줬습니다. 이후엔 cocos2d 진영의 각 프로젝트들이 지원하는 플랫폼이 어떻게 되는지, coos2dx가 OS와 어플리케이션 사이에서 어떤 레이어 관계를 가지는지 정도의 설명이 있었습니다.

그 이후에는 빌드 시연에 들어갔습니다. tweetjump라는 튜토리얼 프로젝트를 이용했는데, 이 부분은 제대로 듣지 못했지만 마말레이드로 포팅한 게임을 누군가 오픈소스로 올린 것을 튜토리얼 용으로 쓰는 것이라고 한 것 같았습니다.
돌아와서 이야기하자면, 이후 빌드 과정의 소개는 평이했습니다. 먼저 iOS 빌드 만드는 과정을 보여주었습니다. 기존의 tweetjump 프로젝트의 소스코드와 리소스를 copy & paste하고, xcode에서 프로젝트를 열고 소스코드와 리소스를 추가, 빌드 후에 시뮬레이터로 실행하기까지, 저희 회사에서 매일 이루어지는 빌드 과정과 다를 바가 없었습니다. 특히나 xcode는 gui 인터페이스가 잘 만들어져 있어서 몇 번 하다보면 빌드만 하는 것은 쉽습니다. 그래서 저희 회사에서는 SNS 관리자 분이 xcode 빌드까지 담당하고 있지요. 덕분에 요즘에는 제가 iOS 빌드를 직접 할 일이 없어졌습니다.
다음으로는 안드로이드 빌드였는데요. 이 부분도 예상했던 바와 같았습니다. 소스코드는 ndk를 이용해서 native 라이브러리 빌드를 하고, 리소스는 assets 폴더에 넣고나서 이클립스를 이용해 프로젝트 실행. 이후에 실행을 보여주는 것은 안드로이드 시뮬레이터가 말도 안 되게 느리다고 디바이스를 직접 물려서 보여주더군요. 여담으로 안드로이드 빌드 시연 중에 개발자가 안드로이드 플랫폼 좀 구글에서 뭐든 개선을 해줘야 한다는 식으로 얘기했는데 정말 공감됐습니다. 덕분에 안드로이드 빌드는 아직도 프로그래머가 담당 중입니다.
스피커가 이런 큰 행사에서의 프레젠테이션은 처음인지 상당히 미숙한 면이 많이 보이는 발표였습니다. 빌드 시연을 직접 보여주는 장면에서도 실수가 많았구요. 물론 그 자리에 있는 프로그래머들은 그게 어떤 것인지 잘 아니까 별로 신경쓰지 않았지만요. 어쨌든 발표자의 빌드 시연이 끝나고 나서는 솔직히 좀 놀랐습니다. 강연자의 설명과 빌드 과정만 보면 우리 회사의 Pretsel 엔진과 상당히 비슷해 보인다는 생각이 들었기 때문입니다. c++ native로 작성된 소스코드와 리소스만 복사하면 끝이라니 Pretsel처럼 cocos2dx도 앱 코드 작성에 플랫폼 종속적인 부분을 없애고 말 그대로 네이티브로 돌아가는 것으로 보였기 때문입니다. 직접 cocos2dx를 배워서 써봐야 회사 엔진과의 차이점을 알 수 밖에 없게 되었습니다. 사실 빌드 과정은 크게 중요한 건 아니니까요.

하지만 예상 외로 중요한 점들은 Q&A 시간에 나왔습니다. Q&A에서 제가 적어놓은 내용들입니다.

Q) 3D가 지원되느냐
A) 2D에 초점이 맞춰저 있다. 3D는 unity 3D가 이미 잘 되어 있으니까 그걸 쓰면 되기 때문에 안 한다. cocos3d를 하는 프로젝트 그룹이 이미 있긴 하다.
-> 이 대답은 상당히 재밌습니다. 이 발표를 듣기 전부터 엑스포에서 사람들이 저희에게도 많이 한 질문입니다. 그리고 저희도 똑같이 대답했던 내용이구요. 보통 프로그래머들을 보면 과도한 욕심이 넘칠 때가 많이 있는데, 과감하게 선을 그어야 할 떄가 있습니다.

Q) 게임 개발 할 때는 어떤 language를 쓰고 있냐
A) C++를 쓰고 있다. 미래에는 jsp를 써보려고 한다.

Q) cocos2D 입문은 어떻게 하는 게 좋겠는지 추천해줘라.
A) 내가 한 것처럼 iPhone 테스트 앱 만들어보고, copy&paste 하면서 다른 플랫폼에서 돌려봐라.
-> 왜 iPhone 프로젝트를 먼저 하길 추천했을까요? cocos2d-iphone 프로젝트에서 파생되었기 때문에 iOS 종속적인 부분들이 꽤 남아있는 것 때문에 아닐까 추측합니다. 기본 바탕이 iOS, xcode 상 구현이기 때문으로 보입니다.

Q) 수익은 어디서 얻는가?
A) cocos2d만 하는 게 아니라 게임도 만들고 있다. 만든 게임들이 하루에 7000 달러씩 매출이 난다. 그리고 마이크로소프트와 구글에서 펀딩을 해주고 있고, cocoa china가 스폰서로서 도와주고 있다. 그리고 니가 내 게임 Fishing Joy를 해주면 돈을 벌 수 있다.
-> 이 질문도 저희가 엑스포 중에 많이 받은 질문입니다. 무료로 공개할 거라고 하면 대부분 ‘개발비 쏟아부은 건 없는겁니까? 도저히 이해가 안 갑니다. 굶어 죽는 거 아닌가요?’ 와 같은 식으로 다시 물어 오더군요. 그리고 어떤 외국인 개발자들은 무료로 공개할 거라는 말을 듣자마자 ‘You liar’ 하는 눈빛을 보내며 금방 자리를 뜨기도 했습니다. 저희가 어떤 전략을 가지고 엔진을 무료 배포하는지는 공개할 수 없지만 – 사실 저는 알지 못합니다 – cocos2d 보다 더 오랜 시간동안 개발하여 지원하는 거의 모든 플랫폼에서 안정적으로 돌아가는 Pretsel이 아무리 안 되도 cocos2d 만큼은 되지 않을까요?

Q) 애니메이션 클래스가 있는데 이 클래스가 돌아가게 하는데 이용되는 클래스들이 어떤 것들이 있나?
A) Sprite들이 조합되어서 애니메이션이 돌아가는데 이 Sprite 들은 plist 파일의 xml 구조에서 리소스들을 구별해 가져온다.
Q) array를 혹시 NSArray를 가져다 쓰느냐? (이전 질문자가 다시 물은 것)
A) CCArray라는 직접 만든 클래스를 사용한다.
-> 이 마지막 질의응답이 핵심이 되었습니다. 리소스를 plist의 xml 데이터 안에서 가져온다라는 부분입니다. plist는 iOS 개발을 할 때만 사용되는 파일 확장자명이지요. 아마도 리소스를 가져오는 기반 방식이 iOS의 리소스 관리 방식을 그대로 이용하는 것으로 보입니다. 어플리케이션마다 사용하는 리소스들과 리소스 이름들은 다 다르게 마련입니다. 리소스를 추가하거나 제거하거나 실행 중에 액세스 하는 부분이 플랫폼 종속적이라면 어플리케이션마다 리소스 관리하는 부분의 코드가 플랫폼마다 달라지는 것이 발생하게 된다는 것입니다. 제대로 된 cross-platform 지원이 아니라는 말이 되지요. 이에 비해 현재 회사 내에서 사용중인 Pretsel 엔진은 자체적으로 리소스 Management를 합니다. 리소스 export 툴도 따로 있어서 export된 리소스 파일을 엔진 초기화 시에 리소스 매니저에서 읽어오기만 하면 됩니다. 이 파일을 읽어오는 부분이 플랫폼마다 달라지면 어떡하느냐? 그 부분은 이미 다 layered 되어 있습니다. 여기에 사운드, 네트워크 등등까지 자체적으로 management 모듈이 있어 따로 플랫폼에 종속적인 부분을 배워서 플랫폼마다 따로 코드를 써줘야 하는 일이 없습니다. 어플리케이션은 말 그대로 어플리케이션 단에서만 생각하면 되는 것이지요.

cocos2dx 강연을 들어본 총평은 ‘아직 cross-platform을 제대로 지원하는 모바일 미들웨어가 세상에 나오지는 않았지만, 서둘러야 할 때가 왔다’ 입니다. cocos2dx도 잘 만들어진 오픈소스 미들웨어 이지만, 아직은 부족한 부분들이 있어 보입니다. 물론 한국에 돌아가면 직접 사용해보고 차이점을 좀 더 알아봐야겠지만요. 그리고 또 한 가지, cocos2dx 정도의 프로젝트면 GDC에서 강연을 할 수 있고, MS, Google로부터 펀딩을 받을 수 있다는 점이 키 포인트입니다. Pretsel 오픈의 날이 기대됩니다.

by Jake Noah

Leave a Reply

Back to top