저자: 이현우
불과 1~2년 전까지만 해도 모바일 관련 서비스 시장은 년간 최소 30% 이상을 성장하는 매우 매력적인 시장이었다. 그 중에서도 모바일 게임 분야는 특히나 많은 관심을 받아왔는데 저렴하면서도 쉽게 과금을 할 수 있어서 게임 제작사들의 안정적인 수입원이 될 수 있었기 때문이다. 반면에 낮은 진입 장벽과 치열한 경쟁으로 인해서 갈 수로 게임의 수익성은 떨어지고 있는 것이 현재의 상황이다. 한마디로 기존의 2D 게임은 시장이 충분히 성숙했다고 할 수 있는 것이다.
기존의 모바일 게임 시장이 성숙기에 접어든 반면 새롭게 시장을 개척하는 분야가 있는데 바로 모바일 3D이다. 현재 국내에서는 SKT의 GXG, KTF의 GPANG과 같은 서비스를 통해서 3D 게임을 선보이고 있는데 하드웨어 가속칩을 장착한 게임 전용폰에서 동작하므로 과거와는 달리 대단히 빠르며 기존의 모바일 2D 게임과는 비교할 수 없는 퀄리티를 보여준다.
[그림] GPANG의 Ys6 실행 화면
이러한 모바일 3D 게임은 하드웨어 가속이 되는 게임 전용폰과 함께 OpenGL-ES, Moble 3D Graphics API for J2ME(이하 M3G)와 같은 모바일 전용 3D API가 있기 때문에 가능해졌다. GPANG이나 GXG 지원 핸드폰들은 일반적인 핸드폰이 아닌 내부적으로 3D 가속칩을 내장하며 게임을 위한 방향키와 같은 인터페이스를 추가로 가지고 있는데 PC나 게임기와 같은 곳에서는 이미 일반화 된 것들이다.
이들 3D 가속칩을 이용해서 게임이 동작하는 3D 세계를 구성하고 화면에 보여주는 역할을 하는 것은 3D API의 역할이다. 현재 주로 사용되는 3D API는 크게 OpenGL-ES 기반의 것과 M3G 기반의 것으로 나눌 수 있는데 3D 게임에 있어서만은 자바보다는 C/C++과 OpenGL-ES가 좀 더 많이 쓰인다. 자바 기반인 M3G의 경우는 하드코어가 아닌 가벼운 게임을 만들 때 사용될 것으로 예상되고 있다.
다음은 국내 이통사에서 사용되고 있는 3D 엔진의 종류들이다. OpenGL-ES의 경우 함수들이 게임을 만들기에는 부족하기 때문에 이를 이용해서 게임 전용의 API로 만든 것이 대부분이다. 하지만 대부분의 엔진은 OpenGL-ES를 기반으로 하고 있는데 이는 대부분의 모바일 3D 가속칩이 OpenGL-ES를 지원하기 때문이다.
OpenGL-ES
OpenGL-ES는 오픈 포맷이자 업계의 실제적인 3D 표준 API라고 할 수 있는 OpenGL의 모바일 버전이다. 즉, OpenGL이 워크스테이션이나 고성능 PC와 같은 환경에서 3D 이미지를 랜더링하는 것을 목표로 하는 것과 달리 OpenGL-ES는 수백 KByte의 메모리와 낮은 속도의 CPU를 갖춘 임베디드 환경에 최적화 되었다.
[그림] OpenGL 과 OpenGL-ES
모바일 환경에서의 3D Engine또는 API는 현재 몇 가지 종류가 있지만 대부분 OpenGL-ES를 기반으로 하고 있다. 그것은 대부분의 하드웨어 업체들이 OpenGL-ES를 가속하도록 기능을 구성하기 때문으로 OpenGL-ES를 이용하지 않는다면 하드웨어 가속을 얻기 어렵기 때문이다. 보통 3D API의 경우 하드웨어의 가속이 없다면 매우 느리기 마련이므로 기존의 OpenGL-ES를 이용하지 않던 엔진들도 현재는 대부분 OpenGL-ES위에서 동작하도록 수정되어 있다.
OpenGL-ES 프로그래밍과 임베디드 3D 개발의 이해
OpenGL-ES의 함수는 절차적이면서도 하드웨어나 OS에 의존적이지 않은 API의 모음으로 게임 제작에는 그다지 적합하다고 할 수는 없지만 OpenGL-ES에 기반한 3D 엔진은 다양한 부가 기능으로 그러한 단점을 보완한다. 기존의 모바일 자바 프로그래머라면 M3G(Mobile 3D Graphics API for J2ME)를 고려해볼 만 한데 객체 지향적이면서도 사용하기 쉽다는 장점이 있다. 하지만 자바의 느린 속도 문제로 하드코어 3D 게임보다는 캐주얼한 3D 게임에 적합하다고 할 수 있다.
[그림] OpenGL-ES, M3G의 계층도
OpenGL-ES의 특징은 우선 거의 실제적으로 업계 표준의 모바일 3D API라고 할 수 있으며 따라서 대부분의 모바일 3D 하드웨어 업체의 지원을 받고 있다. OpenGL-ES 자체로는 로열티를 지불할 필요가 없는 공개 표준으로 OpenGL과 호환성을 최대한 유지하는 API로 구성되어 있다.
• 실제적인 업계 표준의 모바일 2D/3D API
• 하드웨어 업계의 지원을 받고 있슴
• 임베디드 시스템을 위해 최적화
• 시스템, OS에 비종속적
• OpenGL과 유사한 형태의 API와 사용법
• 임베디드 환경을 위한 특별 기능 포함
• Fixed-point 소수점 연산, EGL
결론적으로 OpenGL-ES는 OpenGL에 익숙한 3D 개발자들이 쉽게 모바일 환경에서도 작업할 수 있는 환경을 제공한다. 또한 OpenGL-ES는 플랫폼이나 OS에 의존적이지 않기 때문에 한 번 작성된 애플리케이션을 다양한 환경에 쉽게 포팅할 수도 있다. 현재 국내에서는 SKT의 GXG, KTF의 GPang을 통해서 3D 게임들을 서비스 하고 있는데 대부분의 게임들은 OpenGL-ES에 기반한 3D 게임 엔진을 사용한 것들이다. 현재 이 게임들은 3D 가속칩이 장착된 게임 전용 핸드폰에서만 원활하게 동작하지만 앞으로 모바일 환경이 발전하면 보다 일반화될 것으로 기대한다.