로그인

회원가입 | ID/PW 찾기

취재

[NDC 16] 모두의 마블은 어떻게 태국의 국민게임이 됐을까?

권용필(스라블) 2016-04-27 22:10:48
한국에서도 최고의 인기 게임 중 하나인 <모두의 마블>은 태국에서도 국민 게임이다. 태국 최대 게임쇼인 'TGS & 빅페스티벌'에서 2년 연속 모바일 베스트 게임상을 수상했으며, 오랜 기간 태국 스토어 매출 순위 최상위권을 차지하고 있다.

분명히 다른 나라에서 게임을 서비스하는 것게 쉬운일은 아니다. 더욱이 그 게임이 해당 국가에서 ‘대박’을 치기 위해서는 어려운 난관이 기다리고 있을 게 뻔하다. <모두의 마블>은 태국에서 어떤 고난과 역경을 마주쳤으며, 그것을 어떻게 극복했을까? 

LINE의 황선필 글로벌 기술 책임자의 <모두의 마블> 태국 서비스 이야기를 들어보자./디스이즈게임 권용필 기자




■ 글로벌 원빌드 서비스 vs 지역별 서비스

아마도 어떤 게임을 글로벌 서비스하기로 했다면, 가장 먼저 해야할 고민은 ‘글로벌 원빌드 서비스를 할 것이냐’, ‘지역별 서비스를 할 것이냐’일 것이다. 과연 어떤 서비스가 더 좋은 걸까?



‘글로벌 원빌드 서비스’는 특정 한 국가가 주체가 되어 전체 서비스를 총괄하는 서비스를 말한다. 장점은 개발, QA 등 모든 측면에서 운영 리소스가 적게 드는 점, 빌드의 퀄리티가 비교적 높다는 점, DB 리소스 등의 스케일 아웃에 유리하다는 점이다.

단점은 서버가 특정 국가에 있으므로, 지역에 따라 네트워크 레이턴시(입력 후 결과가 적용되는 데 걸리는 지연시간)가 심각한 문제로 불거지기 쉽다. 또한 전 세계에 존재하는 디바이스 종류에 대응해야 하므로, 문제가 발생했을 때 원인 파악과 해결이 매우 어렵다.



‘지역별 서비스’는 국가별로 범위를 나누어 서비스하는 것을 말한다. 장점은 서버가 각 지역별로 있어 네트워크 레이턴시 등의 문제 대처에 유연하다는 점, 지역의 차이로 발생하는 문화적 문제나 종교적 문제도 즉각 대처할 수 있다는 점이다.

단점은 서비스 지역별로 최소한의 리소스가 필요하므로 총 리소스의 합이 커진다는 점이다. 동시접속이나 DAU 등을 따로 체크해야 하며 당연히 운영을 위한 비용도 늘어나게 된다.



LINE은 <모두의 마블>을 서비스하기 시작한 2012년에는 글로벌 원빌드의 장점을 높게 보고 글로벌 원빌드 서비스를 시작했다. 하지만 지역별로 원하는 니즈가 너무 다른데도 그에 맞춰 서비스할 수 없다는 문제에 봉착한다. 그래서 지역별 서비스로 바꿨지만, 이번에는 지역별로 리소스를 감당하기 힘들어 퀄리티를 유지할 수 없었다.

글로벌 원빌드 서비스와 지역별 서비스를 모두 겪어본 LINE은, 결국 두 가지 서비스를 적절히 섞은 ‘통합 모델’을 목표로 했다. 




■ 예상치 못한 복병, 디바이스 스펙의 역주행

‘마이크로칩의 밀도가 18개월마다 2배로 늘어난다’는 무어의 법칙이 있다. 이 법칙은 현대 기술 발전의 속도가 얼마나 빠른지 잘 말해주는데, 실제로 아이폰을 포함한 국내 디바이스는 2~3년마다 CPU 파워가 2배 정도씩 높아지고 있다.

하지만 태국에서는 무어의 법칙이 적용되지 않았다.

최근 인기를 끌고 있는 다른 게임들에 비해 <모두의 마블>은 낮은 사양의 디바이스에서도 문제없이 실행되는 게임이었고, 실제로 태국에서 큰 문제 없이 서비스 중이었다. 하지만 2015년 여름, 갑자기 태국 <모두의 마블> 클라이언트의 크래시율이 높아지고 유저 안정화율이 낮아지는 사건이 발생했다.



깜짝 놀라 원인을 찾아보니 태국의 회사 True에서 만든 초저가형 스마트폰 ‘True 3.5’가 범인이었다. True에서 갤럭시S2보다 낮은 사양의 스마트폰을 약 16,000원의 가격으로 내놓아, 스마트폰 시장 점유율을 뒤집었다. 아무리 <모두의 마블>이라 하더라도 초저사양의 스마트폰에서는 구동이 힘들 수밖에 없었다.

LINE에서는 문제를 해결하긴 했지만, 태국과 한국 사이의 디바이스 스펙 차이는 갈수록 심해지고 있다. 2011년에는 1년 전에 한국에 출시된 게임을 들여와도 문제가 없었지만, 2015년에는 3년 전에 한국에 출시된 게임을 들여와야 문제가 없을 정도가 됐다.



이런 디바이스 스펙의 역주행은, 결국 과금 모델에까지 영향을 미친다. 예를 들어 한국에 99.99달러짜리 상품이 있다고 해서, 그대로 태국에 적용하면 안 된다. 16,000원짜리 스마트폰으로 게임을 하는 유저가 99.99달러짜리 상품을 구입할 가능성은 거의 없기 때문이다.

최종적으로 이 디바이스 스펙 역주행의 사례에서 알 수 있는 사실은, 글로벌 원빌드 서비스는 위험부담이 매우 큰 서비스라는 것이다. 비슷한 문제가 발생했을 때, 글로벌 원빌드 서비스에서는 일부 지역만 구동환경을 조절하거나 과금 모델을 수정할 수 없기 때문이다.




■ 가능한 모든 방법을 동원하자! 디버깅 정보 수집 

한국은 메이저 디바이스 뿐만 아니라 평균적으로 스펙이 높은 편이기 때문에, 디바이스 스펙 문제를 심각하게 고민할 필요가 상대적으로 적은 편이다. 하지만 태국을 포함한 동남아시아 지역은 평균적인 사양도 낮을 뿐만 아니라 파편화가 매우 심하다. 자체적으로 개발하는 API가 많아 전부 대응하는 게 불가능한데, 심지어 구글에서 제공하는 공식 API까지 제조사에서 변경할 정도다.

이러한 파편화 문제는 디버깅 정보 수집의 어려움으로 연결된다. 기존 QA 방식으로 해결하려면 모든 디바이스를 테스트해봐야 한다는 이야기인데, 당연히 현실적으로 불가능하다. 또한 언어 차이, 문화 차이 등의 원인 때문에, 한국에서 자주 사용하는 게시판 위주의 정보 수집으로는 문제와 원인을 파악하기 힘들다.

결국, 디버깅 정보를 수집하기 위해 남은 방법은 가능한 모든 수단을 동원하는 것뿐이다.



가장 효율적인 방법은 클라이언트 덤프 수집 시스템을 활용하는 것이다. 그나마 분석하기 편한 데이터를 확보할 수 있기 때문이다.

편한 방법은 구글과 애플에서 제공하는 기본 덤프 수집 시스템을 사용하는 것인데, 가능하면 추천하지 않는다. 왜냐하면 기본 덤프 수집 시스템이 데이터를 모으려면 유저의 동의를 받는 과정이 필요한데, 대부분의 유저가 동의를 하지 않아 참고할만한 데이터가 모이지 않기 때문이다.

그래서 어쩔 수 없이 자체적으로 덤프 수집 시스템을 만드는 방법밖에 없다. 실제로 LINE에서도 시스템을 직접 만들어 분석하고 있다. 중소업체의 경우 따로 시스템을 만드는 데 부담을 느끼겠지만, LINE의 경험상 동남아시아에 진출하려면 자체 덤프 수집 시스템은 필수라고 생각한다. 앞서 언급했던 True 3.5 문제를 파악하고 해결할 수 있던 것도, 자체 덤프 수집 시스템 덕분이었다.

정말 현실적으로 자체 덤프 수집 시스템을 만들 여력이 안 된다면, 특정 서버의 패킷 덤프 등을 이용한 샘플링 방식으로 일부 대응하거나 기본 덤프 수집 시스템이라도 사용하기 바란다.



다음으로 효율적인 방법은 스토어 리뷰에 대한 형태소 분석 시스템이다. 이 시스템은 애플과 구글 스토어의 코멘트를 수집하여 형태소 단위로 분리, 통계로 표시해준다.

형태소 분석 시스템은 덤프 수집 시스템을 만들 여유가 없는 중소업체에게 아주 유용하다. 제작 자체가 쉬우므로 부담이 적고, 적은 인원으로도 신규 버전 업데이트 시 유저 반응을 가장 빠르게 수집할 수 있기 때문이다.



앞서 언급한 자체 클라이언트 덤프 시스템과 형태소 분석 시스템 외에도 디버깅 정보를 모을 수 있는 수단은 더 있다. 하지만 중요도와 효율을 모두 따져봤을 때 두 가지 수단보다 나은 것은 없다. 동남아시아 지역에 게임을 서비스할 생각이 있는 업체라면 둘 중에 적어도 한 가지 수단은 반드시 준비하는 것을 추천한다.




■ 심카드의 정보는 무용지물! 듀얼 심 디바이스 

한국은 스마트폰의 심 카드가 개인 정보로서 다양하게 활용될 수 있다. 스마트폰을 통한 본인 인증을 당연하게 생각할 정도기 때문에, 심 카드를 기반으로 한 유저의 정보는 신뢰성이 높다.

하지만 동남아시아는 심 카드를 개인 정보로써 활용할 수 없다. 디바이스 가격도 초저가인 데다가 통신사가 고객 유치가 적극적이기 때문에, 동남아시아 사람들은 디바이스와 심 카드를 자주 교체한다. 결국 심 카드를 데이터용과 통화용으로 구분해서 쓰는 ‘듀얼 심 디바이스’가 흔한데, 당연히 심 카드가 개인 정보를 대변하기 힘든 상황이다.



이 때문에 한국에서 심 카드를 기반으로 한 시스템을 그대로 동남아시아에 가져오게 되면 문제가 생긴다. 가장 흔히 발생하는 문제는 이벤트 쪽이다.

심 카드로 개인을 특정해 보상을 제공하는 심 카드 기반 이벤트는, 동남아시아 유저들이 보상을 중복해서 받을 가능성이 존재한다. 기술적으로 듀얼 심 디바이스를 완전히 컨트롤 하는 방법은 없으며, 관련 API 자체도 구글의 공식 API가 아니기 때문이다.

따라서 심 카드를 기반으로 한 시스템의 경우, 동남아시아에 들여올 때 반드시 수정하는 것이 좋다.




■ <모두의 마블> 태국 유저들의 30%는 미국인? 디바이스 기본 세팅 언어 

앱의 인터페이스를 만들 때 보통 동남아시아 언어 구조를 미리 생각하지는 않는데, 여기에 인터페이스 텍스트를 번역해 넣게 되면 문제가 발생한다. 언어 구조상 특정 단어의 길이가 매우 길어지기도 하는데, 이런 경우 인터페이스가 무너져 버리는 것이다.



그래서 자국어 지원이 잘 안 되는 게임들을 자주 접하는 태국 유저들은, 아예 디바이스 기본 설정을 대부분의 앱이 지원하는 영어로 세팅해놓는다. 자국어보다 불편하긴 하지만, 어쨌든 게임은 더 편하게 즐길 수 있으므로 코어 유저 중 약 30%나 영어 세팅을 해놓을 정도다. 문제는 여기서 발생했다.

한국 게임들은 보통 특정 유저의 국가를 특정할 때, 먼저 심 카드의 정보를 참고한다. 만약 국가 정보를 읽지 못하면 디바이스 언어 세팅을 기반으로 결정하게 된다. 태국 유저들은 국가 정보를 읽을 수 없는 듀얼 심을 사용하기 때문에, 결국 디바이스에 세팅된 언어가 국가가 되는 것이다.



앞서 본 것처럼 코어 유저의 약 30%가 디바이스를 영어로 세팅하고 있으니, 당연히 <모두의 마블> 태국 유저들 중 30%가 미국인으로 집계됐다. 이 때문에 미국 지사에서는 정식 출시도 하지 않았는데 미국 유저가 어디서 나왔냐고 물어보는 웃지 못할 일까지 벌어졌다.

따라서 심 카드의 정보를 읽어 국가를 결정하는 ‘ISO3166 코드’를 사용하지 말고, 현재 사용 중인 네트워크망의 코드로 국가를 결정하는 ‘MCC/MNC 코드’를 사용하는 것이 좋다.




■ LTE가 없다고?! 느린 네트워크 환경

크게 다섯 가지로 나뉘는 네크워크 종류 중, 가장 빠르며 한국에 잘 알려진 것은 LTE다. 네트워크가 빠를수록 볼륨이 큰 게임도 부담 없이 유저가 즐길 수 있으므로, 당연히 게임업체 입장에서는 LTE를 가장 선호한다.

하지만 동남아시아에는 LTE 서비스가 존재하지 않는다. 그보다 느린 네트워크만 존재하기 때문에, 이를 고려해 어떻게 게임을 서비스할 지 고민이 필요하다.



느린 네트워크 환경은 커넥션 타임아웃에도 영향을 미친다.

네트워크 상황이 좋은 지역이라면 반응성을 위해 타임아웃을 짧게 설정하기 때문에, 한국 게임은 보통 타임아웃을 짧게 설정한다. 하지만 짧은 타임아웃을 수정 없이 그대로 동남아시아에 적용하게 되면 느린 네트워크와 맞지 않아 문제가 생긴다.

LINE의 경우 태국의 <모두의 마블>은 앱 실행 시 짧은 타임아웃으로 시작해, 이후에는 상황에 맞춰 유동적인 커넥션 타임아웃을 적용하고 있다.




■ 이것도 알아두면 좋다! 기타 사항

로컬 프록시 서버는 한국을 제외한 대부분의 국가에서 문제가 되기 때문에, 로컬 케리어 캐쉬 서버를 회피하는 것이 중요하다. 일반적으로는 문제가 없지만, 동일한 파일(예:Version.txt)이 계속 업데이트되는 경우에 문제가 발생한다.

따라서 CDN(Contents Delivery Network)에 동일한 경로, 파일명으로 업데이트되는 파일을 올리지 않는 것이 핵심이다. 업데이트 버전에 따라 폴더로 경로를 나눠도 되고, 업데이트되는 파일의 정보를 게임 서버로 옮겨도 된다.



또한 큰 회사도 쉽게 그냥 지나치는 부분인 ‘화폐 단위’를 고려해야 한다. 같은 가치라 하더라도 국가에 따라 표현되는 단위가 어마어마하게 차이 나는 경우가 있기 때문이다. 예를 들어 99.99$를 베트남 화폐로 환산하면 2,192,307VND가 되는데, 현지화를 위해 적용하면 인터페이스가 무너지게 된다.

단위가 큰 베트남에 맞춰 변수와 파라메터를 정하게 되면 모든 국가의 금액에 대처할 수 있게 되므로, 처음부터 고려하여 나중에 곤란한 상황을 피하도록 하자.