최근 게임 플랫폼은 경계가 허물어지며 나날이 발전하고 있습니다. 모바일, PC, 콘솔 등 각각의 기기에서만 게임이 구동되었던 것에서 나아가, 이제는 PC와 모바일을 넘나들며 게임을 플레이할 수 있는 수준에 이르게 되었습니다. 이런 ‘멀티 플랫폼’ 덕분에 플레이어들은 어느 기기에서나 동일한 게임 경험을 누릴 수 있게 되었습니다.
개발자의 입장에서 보면 할 일은 더 많아졌습니다. 하나의 기술을 사용해서 모바일, PC, 콘솔에서 모두 동작하는 게임을 만들어 낼 수 있다면 좋겠지만, 보통은 기기마다 설치되는 OS가 다르고 특성도 다르기 때문에 개발에 따른 시간이나 비용이 증가하게 되었습니다.
대부분의 게임에는 결제, 로그인 등 필수적으로 들어가는 기능들이 있습니다. 이런 기능들을 한 번에 애플리케이션에 적용하기 위해 SDK를 제공합니다. 엔씨의 플랫폼 센터는 간단한 코딩만으로 모바일, PC, 콘솔에서 게임이 동작할 수 있도록 엔씨의 ‘멀티플랫폼 SDK를 개발했습니다. 본 포스팅에서는 엔씨의 ‘멀티플랫폼 SDK’의 개발 과정을 공개하고 어떤 구조와 특징을 가지고 있는지 알아보고자 합니다.
SDK: 개발자를 위한 소프트웨어 개발 키트
SDK는 ‘Software Development Kit’의 약자로, 소프트웨어를 개발할 때 사용하는 도구 모음을 뜻합니다. 자세하게는 애플리케이션 개발자가 활용할 수 있도록 API, GUI, 문서, 라이브러리, 코드 샘플을 모은 패키지입니다.
엔씨 플랫폼센터에서는 인증, 결제, 거래소와 같은 다양한 플랫폼 기능들을 게임 개발자가 쉽고 빠르게 사용할 수 있도록 클라이언트 기반의 라이브러리 형태로 제공하고 있습니다.
예를 들어 게임 개발자가 자체적으로 인증 시스템을 개발하거나 애플, 구글의 결제 기능을 구현한다면 시스템을 만드는 데에 많은 시간과 노력이 소요될 것입니다. 하지만 플랫폼 SDK를 사용한다면 SDK가 이러한 역할을 대신해 주기 때문에 게임 개발자가 직접적으로 기능을 구현하지 않고 SDK를 연동하는 것만으로도 다양한 기능을 완성할 수 있게 됩니다.
모바일 게임 중심으로 패러다임의 변화
PC에서 그래픽 좋고, 스토리 좋은 게임들을 즐기던 시절, 엔씨는 PC용 MMORPG 온라인 게임을 주력으로 선보였습니다. 그리고 많은 게임을 출시하기보다는 완성도에 집중하며 오랜 시간을 준비해서 게임을 출시하곤 했습니다.
하지만 시간이 흐르고, 모바일 플랫폼이 대세인 시대가 되면서 상황은 달라졌습니다. 우리는 손에 든 작은 기기로 많은 것을 할 수 있게 되었고, 게임 업계도 이에 맞춰 많은 모바일 게임들을 빠르게 출시하기 시작했습니다. 엔씨 역시도 그 흐름을 따라 모바일 기반의 새로운 서비스를 준비하기 시작했습니다.
모바일 게임을 개발하는 과정에서 인증, 결제와 같은 기능을 구현하는 것은 필수적입니다. 하지만 모바일 플랫폼 고유의 기능들을 연구 개발하거나, 각 게임마다 인증 체계를 설계하여 개발하는 것은 결코 쉬운 일이 아닙니다. 개발 비용이 많이 들기도 하고요.
그래서 플랫폼센터에서는 이와 같은 기능을 클라이언트에서 단 몇 줄의 코딩으로 개발할 수 있도록 2014년부터 SDK를 준비해 왔습니다. 게임을 Android, iOS 모바일 플랫폼에서 서비스할 예정이었기 때문에 Android는 리소스와 manifest 파일을 포함시킨 AAR (Android Archive) 파일로 제작했으며 iOS는 Framework 파일로 제작해서 배포했습니다.
2016년도부터는 Unity, Unreal 게임 엔진을 기반으로 제작된 모바일 게임이 본격적으로 출시되었는데요. 게임 개발자들이 가장 익숙한 개발 환경에서 쉽게 플랫폼을 연동할 수 있도록 Unity, Unreal 게임 엔진용 플랫폼SDK를 제작하여 멀티 플랫폼의 기반을 마련하였습니다.
모바일과 PC를 넘나드는 시대, 게임 플랫폼에도 '멀티'가 필요하다
2019년도에는 리니지2M이 모바일과 Windows용으로 동시에 출시되었습니다. 모바일에서 플레이하던 게임을 Windows에서도 그대로 이어서 플레이할 수 있고, 반대로 Windows에서 즐기던 내용 그대로 모바일에서 이어서 즐길 수 있는 크로스플레이의 시대가 본격적으로 시작된 것입니다. 이 때부터 Unity, Unreal, Cocos2d-x 게임 엔진을 위한 멀티플랫폼 SDK를 본격적으로 준비했습니다.
Windows로의 확장을 시작으로 2020년도에는 게임 콘솔이라는 새로운
플랫폼으로의 확장을 시도하여 인증, 전자 결제 시스템, 마케팅 등 주요 플랫폼 기능을 PlayStation 게임에서도 사용할 수 있도록 준비했습니다. 이 외에도 Xbox, Switch 등 다른 게임 콘솔 플랫폼 개발도 착수 예정입니다.
엔씨의 '멀티플랫폼 SDK'
엔씨 멀티플랫폼 SDK의 특징
엔씨 멀티 플랫폼 SDK는 하나의 키트(KIT)로 제공이 되며, 다음과 같은 특징을 지니고 있습니다.
1. 다양한 플랫폼 지원
Mobile/PC/Console 플레이 환경에 모두 대응할 수 있도록 클라이언트 기반의 SDK를 제공합니다. 플랫폼에 관계없이 동일한 사용자 경험을 추구합니다.
2. 다양한 퍼블리싱 환경 지원
다양한 마켓스토어 (Google Play Store, Apple App Store, ONE Store, Galaxy Store)와 게임 엔진 (Unity, Unreal, Cocos2d-x)을 지원합니다.
3. 개발 비용 절감
간단한 코드 입력만으로도 상용서비스에 필요한 핵심 플랫폼 기능을 쉽게 구현할 수 있습니다. 초기에는 GUI없는 로그인 API 위주로 제공했으나, 개발 편의성을 향상시키고 엔씨의 플랫폼이 일관된 UX를 제공할 수 있도록 GUI를 포함하는 기능을 늘려가고 있습니다.
4. 개발 편의 기능 제공
개발가이드 및 API Reference 문서를 제공합니다. 개발가이드는 markdown 에디터를 이용해서 작성합니다.
그리고 API Reference는 Inline Documentation을 적극 활용하는데, Jenkins Pipeline을 통해서 자동으로 생성되고 배포됩니다.
그리고 이 외에도 개발의 편의를 위해 SDK 호출 로그를 즉시 확인할 수 있는 툴을 제공합니다.
엔씨 멀티플랫폼 SDK의 구성
엔씨 멀티 플랫폼 SDK는 총 5가지 제품으로 제공되며, 모바일 전용과 게임 엔진용으로 구분됩니다.
[그림 7] 엔씨 제공 멀티플랫폼 SDK 종류
1. 모바일 전용 SDK
Android, iOS Native SDK는 Android, iOS 앱에 연동하기 편리한 형태로 개발되었으며, Android는 AAR(Android Archive), iOS는 Framework와 Bundle 파일로 제공하고 있습니다.
2. 게임 엔진용 SDK
Unity, Unreal, Cocos2d-x와 같은 게임 엔진들은 멀티플랫폼을 지원합니다. 그 덕분에 하나의 소스코드로 Android, iOS, Windows를 비롯해 PlayStation, Xbox, Switch 등 다양한 플랫폼의 빌드를 만들어 낼 수 있습니다.
로그인, 결제, 푸시 알람과 같이 플랫폼 특성을 띄는 기능들은 단일 소스코드로 해결할 수는 없는 경우가 많습니다. 그래서 모바일 게임 개발 시에는 모바일 전용 Android, iOS Native SDK와 더불어 Bridge 클래스를 이용하는 구조를 활용해 단일 소스코드로 해결할 수 없는 문제들을 해결했습니다.
그리고 SDK 내의 API는 다음과 같이 구성되어 있습니다.
1. Public API
게임 클라이언트가 직접 호출하는 Public API 클래스
2. Platform API
Android, iOS, Multi-Platform을 동일한 인터페이스로 맞추기 위한 클래스.
3. Android, iOS Bridge API
Android, iOS SDK에서 제공하는 API를 랩핑해서 Unreal SDK의 C++ 코드에서 호출하기 편리한 형태로 가공한 Bridge 클래스이며, Bridge 클래스 내부는 Android, iOS native SDK의 API 호출 코드가 포함되고 이종 간의 API 통신을 위해 JNI, NDK와 같은 도구가 활용됨
[그림 10] Android, iOS Bridge API
4. Android, iOS Native API
애플, 구글, 원스토어, 갤럭시 스토어 로그인, 인앱결제와 같이 모바일 플랫폼에 특화된 기능이 구현되어 있는 클래스
5. Multi-Platform API
모바일 플랫폼 이외 다양한 플랫폼(Windows, PlayStation, Xbox 등)을 지원하기 위한 특화된 기능이 통합 구현되어 있는 클래스이며, 게임엔진에 포함된 멀티플랫폼 대응을 위한 추상화된 기능들을 적극 활용함
[그림 11] Multi-Platform API
마치며
엔씨의 게임은 모바일에서 PC, 게임 콘솔로 플랫폼을 넓혀가고 있으며 사용자가 다양한 플랫폼에서 콘텐츠를 즐길 수 있도록 멀티플랫폼으로 서비스를 확장하고 있습니다. 이 과정에서 엔씨의 멀티플랫폼 SDK는 사용자 뿐만 아니라 개발자 모두에게 반드시 있어야하는 조력자 역할을 하고 있습니다.
엔씨 플랫폼센터는 여기서 만족하지 않고 사용자에게 새로운 경험과 즐거움을 제공하고, 더 나아가 엔씨의 게임이 어디든 연결될 수 있는 ‘Connect NC to Universe’를 실현하기 위한 여정을 이어가고 있습니다.
우장미
Platform Center, 플랫폼 SDK실, 모바일서비스개발팀 팀원
개발엔 끝이 없다!
설계할 때 즐거움을 느끼며, 오늘도 빠르고 꼼꼼하게 개발하고 있습니다.
Platform Center, 플랫폼 SDK실, 모바일서비스개발팀 팀원
개발엔 끝이 없다!
설계할 때 즐거움을 느끼며, 오늘도 빠르고 꼼꼼하게 개발하고 있습니다.
정희성
Platform Center, 플랫폼SDK실, 크로스플랫폼개발팀 팀장
모바일, PC, 게임 콘솔, TV 플랫폼을 개발하는 모든 개발자에게 안락함을!
모든 플랫폼 사용자에게 동일한 경험을 제공하기 위해 오늘도 불철주야 연구하고 있습니다.
Platform Center, 플랫폼SDK실, 크로스플랫폼개발팀 팀장
모바일, PC, 게임 콘솔, TV 플랫폼을 개발하는 모든 개발자에게 안락함을!
모든 플랫폼 사용자에게 동일한 경험을 제공하기 위해 오늘도 불철주야 연구하고 있습니다.
공희원
Platform Center, 플랫폼 SDK실 실장
사용자가 편리하게 사용할 수 있는 플랫폼,
개발자도 즐겁게 개발할 수 있는 플랫폼을 만들기 위해 노력하고 있습니다.
Platform Center, 플랫폼 SDK실 실장
사용자가 편리하게 사용할 수 있는 플랫폼,
개발자도 즐겁게 개발할 수 있는 플랫폼을 만들기 위해 노력하고 있습니다.