You are here: Home - Studies∞ - GDC2013 Day5-Class2

Rapid Development of High Performance Games for Mobile and Web
Room 2004, West Hall
Speaker: Ricardo Quesada at Jynga

-이번 GDC에서 가장 좋은 수확이 무엇이었냐고 평가한다면 바로 이 강연을 들은 것이 아니었나 생각합니다. 강연의 내용이 좋았던 것은 아니지만 미국에서 미들웨어 비즈니스를 준비하고 있고 특히 올해가 그 분수령이 될 시점인데 이런 절묘한 타이밍에 이 강연의 연사인 Cocos2D의 설계자의 이야기를 들을 수 있었다는 점이 매우 가치 있었습니다. 현재 이 분은 Zynga애 팔려가(?) 소프트웨어 설계사로 일하고 있습니다. Cocos는 다음에 어떤 형태로 비즈니스를 준비하고 있고 또 멀티플랫폼 문제를 어떤 형태로 다루고 있는지 알게 되는(엔진레이어의 설계도를 볼 수 있는) 매우 좋은 기회였습니다. 강연의 내용은 Code-side에서 하는 이야기가 많았지만 그보다 전체적인 레이아웃이 더 중요하고 또 비주얼샤워에서는 어떤식으로 대응하는 미들웨어를 준비중인지 전달해 드리는데 초점을 맞추겠습니다. 강연의 정리를 시작합니다.

Cocos2D는 처음에 Phython으로 만들어진 게임엔진이었습니다. 스마트폰에서 게임을 개발하려고보니 마땅한 미들웨어가 없었고 결국 CTO인 Cocos가 이런 미들웨어를 만들자고 제안했습니다. 그래서 미들웨어 이름도 코코스가 되었습니다. 어떻게 하면 좀 더 빠르게 게임을 만들수 있을까를 고민한 것이 바로 개발의 시작이었습니다. 저는 그 파트에서 iPhone 플랫폼의 미들웨어 설계와 개발을 맡았습니다. -이 대목에서 세 가지를 알 수 있었습니다. 1명의 개발자, 통일된 구조, 하지만 플랫폼 별로 다른 개발자로 인한 파편화. 이러한 이유에서 비주얼샤워는 전체 플랫폼에서 엔진 아키텍트는 한명으로 Implementer는 여러 명으로 구성된 개발 구조를 취하고 있습니다. 또 오르카의 허영중 대표님을 통해서 알게 된 사실인데 Cocos2D의 안드로이드 버전인 Cocos2D-X의 경우 미국 Zynga가 아닌 추콩이라는 중국 회사에 M&A되었다더군요. 한 엔진이 플랫폼별로 이산가족이 되는 안타까운 현실입니다.-

현재 모바일에서 만들어진 앱의 17.7%가 바로 코코스를 이용해 만들어지고 있습니다. 이는 매우 의미있고 놀라운 수치입니다. -저는 이 대목에서 왜 이렇게 높은 점유율을 가진 미들웨어를 제대로 BM을 만들지 못하고 이렇게 힘 없이 사장시키는지 이해할 수 없었습니다. 물론 비주얼샤워는 확실한 BM을 가지고 있습니다. 거기에 목표는 소박하게 17.7%에서 7%만 뻇는 것입니다. :-) -

Cocos2D(이하 코코스)는 Chipmunk라는 물리엔진을 사용하도록 설계되어 있습니다. 이 물리엔진은 MIT에서 개발한 오픈소스 엔진입니다. Cocos2D 역시 오픈소스 형태로 공개되었기 때문에 Cocos2D-X, Cocos2D-js등의 서브 버전들이 시장에 있습니다. 특히 Cocos2D-js는 제가 개발하고 있는 버전과 비슷한 것으로 html5 기반으로 개발되고 있기 때문에 이를 활용하면 웹이나 모바일을 하나의 API로 대응 할 수 있는 장점이 있습니다. -모바일 디바이스들이 퍼포먼스가 좋아지고 있다고는 하지만 그 만큼 해상도도 높아지고 있기 때문에 아직까지는 2D게임을 하드웨어 디코더를 사용하지 않고 FullHD의 전 화면에 60FPS로 갱신할 수 없습니다. 분명 이 정도가 가능해지게 되더라도 또 다른 기기의 추가 기능이 게임에 사용되어 결국 컴퓨팅 파워는 늘 모자라게 될 것입니다. 즉, 비주얼샤워에서는 js와 같이 VM기반으로 동작하는 미들웨어는 모바일디바이스의 한정된 자원(배터리, 발열, 컴퓨팅파워) 떄문에 적합한 해결책이 아니라고 생각하고 있고, 자사에서 개발한 미들웨어는 각 플랫폼을 Native로 대응합니다.-

코코스는 빠르고 견고한 동작을 보증합니다. 특히 Cocos2D-X는 코코스의 C++버전으로 모바일에 적합하게 설계되었고 OpenGL ES 2.0 베이스로 동작합니다. Cocos2D-Html5는 Javascript 버전으로 Cocos2D-X의 기능을 그대로 담고 있습니다. 저는 이 버전을 Cocos2D-X 위에서 자바스크립트 가상 머신을 얹어서 자바 스크립트로 동작할 수 있도록 만들었습니다. 이렇게 하게 되면 iOS, Android, Web에서 모두 동작하게 됩니다. -결국 게임을 자바스크립트로 만들라는 이야기인데요? ㅎㅎㅎ-

또 코코스의 장점은 다양한 오쏘링툴을 제공한다는 것입니다. -사실 오픈소스이기 떄문에 세계의 여러 사람들이 같이 만든것이지요.- 오소링툴을 사용하면 버그를 줄일수 있을 뿐 아니라 결과물의 품질도 매우 높아집니다. 주요한 오쏘링 툴은 코코스빌더, UI에디터, 키프레임 애니메이션 에디터 등이 있습니다. -현재 비주얼샤워애서 하고 있는 미들웨어 작업이 바로 이 오쏘링툴을 구축하는 부분입니다. 예전 2006년도에 만들었던 오쏘링툴은 고해상도, 고성능의 스마트폰 기기에 맞지 않아서 대대적인 버전업을 하고 있습니다.-
또 리소스에디터도 있습니다. 이것은 PNG타입으로 스프라이트 시트를 만드는 툴입니다.-이렇기 때문에 코코스로 만든 게임들은 패키지파일을 풀면 내부에 게임의 그래픽 리소스들의 훤히 보입니다. 개발사 입장에서는 매우 불편한 내용이죠.-

또 코코스플레이어를 소개합니다. 이 툴은 다양한 플랫폼에서 여러분의 앱이 어떤식으로 동작하는지 미리 보여줍니다.-비주얼샤워는 윈도우 비주얼스튜디오 상에서 별도의 버추얼머신 없이 바로 디버깅 모드로 여러분의 앱이 동작하게끔 설계되어 있습니다. 피쳐폰 떄부터의 자랑입니다.- 거기에 앞서 말씀드린 물리엔진 Chipmunk도 자바스크립트 레이어를 얹어두었습니다.-고생했겠는데요.- 렌더링 머신은 WebGL을 활용해 연결하였습니다.

-결국 Cocos2D-Html5의 경우

OS – Web browser(Native) – html VM – WebGL – JavaScript VM – Application
iOS – Cocos2D-X – Javascript VM – Application

의 구성으로 동작한다는 말입니다.

비주얼샤워의 미들웨어는

iOS – VS Middleware + Application

의 형태로 런타임 이전, 컴파일 타임에 미들웨어와 애플리케이션이 병합되는 구조로 OS상에서 바로 구동되게 됩니다.

-이후 자바스크립트로 만든 데모가 바로 웹과 모바일에서 동작하는 것을 보여주었는데, 플레이어를 띄우고 구성된 스크립트를 온라인으로 연동하고 하는 매우 불편한 데모였습니다. F5키 한번으로 동작하는 비주얼스튜디오의 작업과는 매우 구별되는 내용이었습니다. 이 강연을 보고 있자니 자사에서 개발중인 미들웨어에 대한 강력한 확신과 함께 어서 빨리 미국에 진출하고 싶은 피가 끓었습니다. 더 빨리 달려야곘습니다.

by Kay Park

Back to top