모바일과 PC간의 연동이 이루어지는 멀티플랫폼 개발에 관한 노하우를 공유하는 자리가 마련됐다.

지난 25일부터 3일간 서울 코엑스에서 개최되는 'KGC2013'에서 엔도어즈의 최부호 팀장은 'PC개발자가 모바일 개발하기-삼국지를 품다 모바일플랫폼 개발 포스트 모텀'이란 주제로 강연을 진행했다. 최부호 팀장은 PC온라인으로 개발되었던 '삼국지를품다'를 모바일 플랫폼과 연동하는 작업을 하며 직면한 문제들과 해결법을 알려주었다.

이번 강연은 모바일에서 많이 사용되는 유니티 3D엔진을 사용한 '삼국지를 품다'의 케이스를 들어 모바일에서 유니티 엔진을 사용하여 게임을 개발하는 동안 꼭 잊지 말아야할 사항을 6가지로 정리하여 발표했다.




"유니티엔진은 만능 엔진이라고 할 만큼 좋은 엔진입니다."며 유니티엔진에 관해 말문을 연 최부호 팀장은, "그러나 유니티엔진의 업데이트는 그 주기가 빨라 난감한 문제점이 많습니다."며 유니티엔진의 빠른 업데이트에 대해 설명했다.

유니티엔진 3.x버전은 4.x버전과는 달리 지난 버전에서 사용하던 에셋이 최신버전에는 로드되지 않는 경우가 많다. 그래서 새로 에셋을 설정해야 하는 것이 필수. 새로운 에셋을 설정하다보면 게임을 대규모로 업데이트하는 상황도 심심치않게 발생한다. 최부호 팀장은 개발중인 게임이라면 가급적 유니티엔진 4.x버전을 사용하기를 권했다.

유니티는 분명 많은 모바일의 API를 지원하지만, 100% 지원하는것은 아니다. 지원이 되더라도 미세한 컨트롤은 프로그래머의 역량에 달린 문제다. 별도의 플러그인은 제작하여 사용해야 하는 만큼, 유니티 엔진을 다루는 것 외에도 기술 개발이 필요하다.

▲ 어려움이 많아도 최신버전을 유지하는 것이 좋다고.

▲ 유니티엔진 뿐 아니라 다른 기술개발에도 힘써야 한다.


모바일환경의 배터리의 문제도 언급했다. 모바일 환경에서 배터리를 소모하는 동작은 3가지다. 첫번째는 게임화면을 출력하는 디스플레이고 두번째는 3G/LTE 등 데이터 통신 모듈, 마지막은 AP(Application Process)연산이 주로 배터리를 소모하는 원인이다.

하지만 게임이라는 애플리케이션의 특성상 데이터통신모듈과 디스플레이를 건드리기는 난해하다. 그래서 '삼국지를품다'가 선택한 것이 바로 게임의 프레임을 줄여 AP연산을 감소시키는 방법. 최부호 팀장은 이 방법으로 큰 효과를 볼 수 있었지만 잃은 것도 많다며, 게임의 장르에 따라서 프레임이 중요한 경우도 있으니 개발자가 잘 판단해야 한다고 당부하기도 했다.


그가 세번째로 제시한 사항은 모바일 플랫폼의 제한된 메모리다. 유니티엔진은 기본 메모리 블럭을 할당받는데 한번 늘어난 메모리는 줄어들지 않는다. 그래서 메모리가 쌓이다보면 앱이 다운 될 수밖에 없는 구조로 되어있다. 그가 이 문제를 해결하기 위해 사용한 메모리최적화 방법은 메모리 최대치를 초과하지 않도록 메모리 Pool을 사용하는 것.

▲ 유니티엔진의 메모리 사용은 계단식 구조를 보인다.

'메모리 Pool'은 적당한 컨테이너를 생성하여 자주 사용되는 리소스를 로드 컨테이너에 담아 다음 요청과 연산에 다시 사용하는 방식으로, 모바일환경에서 안정적으로 메모리를 확보할 수 있다. 모바일 환경은 PC와 달리 메모리의 사용이 제한적이고 확장이 어렵다. 그는 개발초기부터 재사용될 것을 잘 분류하여 메모리 Pool을 활용하면 보다 효율적인 개발을 할 수 있다고 말했다.


다음으로 간과하지 말아야 할 것은 바로 불안정한 모바일의 Wi-fi환경이다. '삼국지를 품다'의 모바일 서비스 초기, 업데이트를 진행했는데 다수의 유저들이 접속하지 못하는 문제가 발생했다. 최부호팀장은 "이 문제를 들었을땐 솔직히 저도 뭐가 원인인지 몰랐어요."라며 솔직하게 심정을 털어놨다.

도저히 알 수 없는 문제에 직면한 그는 해당 문제가 발생한 유저를 직접 찾아가서 오류데이터를 수집하는 방법을 택했다. 유저가 받은 패치파일을 수집해서 정상파일과 비교해보니 문제가 있었다. 확인해보니 정상적인 패치내용이 아닌 이상한 웹 오류 메시지가 적용되어 있었다고.

알고보니 그 메시지는 인터넷은 되는 상황이지만 권한이 없어 발생하는 오류의 메시지었다. 이는 Wi-Fi를 사용하는 상태로 유저도 모르는 사이에 공개되어 있는 이통사 AP에 접근하면 심심치 않게 발견되는 메시지다. 이처럼 모바일은 상당히 불안정한 패킷현상이 발생하기 때문에 최부호 팀장은 패치시간을 좀 더 사용하더라도 패치 후 CRC체크를 통한 안정성을 확보하기를 추천했다.

▲ 간혹 이통사 AP에 자동으로 접속하는 Wi-Fi.


까다로운 모바일의 심의 과정도 소개됐다. 게임등급물위원회가 심의를 담당하는 PC게임과는 다르게 모바일은 앱스토어 등 유통사나 마켓에서 직접 심의를 한다. 그 중에는 iOS가 가장 까다로우며, 멀티플랫폼 서비스시 가장 큰 걸림돌은 앱스토어의 심의다.

서비스를 진행하는 iOS심의에는 항상 반려(Reject)될 수 있음을 염두에 두라고 당부했다. 또, PC와 안드로이드에 비해 다소 복잡한 심의 과정이 있는 iOS는 심의기간 및 결과에 따라 서비스의 방향을 결정하는것을 추천했다.최부호 팀장은 이 밖에도 그래픽환경에서 텍스쳐나 폴리곤을 줄이는 방법에 대해서 짤막하게 언급하며 강연을 마쳤다.