Unity3D Google APK Expansion Files 연동 1. 준비작업

 유니티3D 에셋번들을 활용해서 버전 관리까지하는 패치 시스템을 만들어 사용중에 있습니다. 그런데 태국에서 자체 패치 말고 구글의 APK Expansion Files(이하 OBB)을 사용해 달라는 요구사항이 있어서 이번 포스팅에서는 OBB를 사용하기 위한 준비 작업을 정리하겠습니다.

 에셋 번들을 이용한 패치 시스템은 APK만 받고 나머지는 그때그때 업데이트시마다 받으면 되는데 반해 OBB는 APK 업데이트하면 관련 OBB도 업데이트하는등 더 비효율적으로 보이는데 왜 이걸로 하는지 모르겠네요. 물론 개발사측에서는 추가 패치 서버를 준비 안해도 되는 이점은 있습니다.


1. Google Play OBB Downloader 플러그인 설치

 먼저 간단한 유니티3D 프로젝트를 만들고 구글 플레이 OBB 다운로더를 다운로드 해줍니다. 유니티3D가 아니고 일반 안드로이드 작업이었다면 안드로이드 SDK 메니저에서 Google Play APK Expansion Library와 Google Play Licensing Library를 추가로 설치하는 등의 작업이 필요하지만 다행스럽게도 유니티사에서 만든 플러그인이 있네요.

 제 경우 플러그인 설치는 처음이라 위 그림과 같은 외부 프로토콜 요청 창이 뜨는데 외부에서 유니티3D를 실행하기 위한 단계로 체크박스를 체크 후 애플리케이션 시작을 클릭합니다.

 유니티3D가 실행이 되고 에셋 스토어가 실행이 됩니다. 조금 전에 웹에서 보던 것과 비슷한 모습인데요, Download를 클릭해 Google Play OBB Downloader를 다운로드 합니다.

 이제 프로젝트에 모두 임포트합니다.

 임포트하면 Plugins/Android에 관련 파일들이 생깁니다. 나중에 GooglePlayDownloader.cs 파일에 앱의 공개키를 설정합니다.

 또한 Assets 루트 폴더에는 샘플 소스인 DownloadObbExample.cs라는 파일이 생깁니다.


2. APK 빌드하기

 OBB파일을 생성하기 위해 Android Player Settings -> Other Settings의 Bundle Version Code에 값을 기입합니다. 이 Bundle Version Code를 참고해서 OBB 파일 버전이 관리되고 다운로드 됩니다. 또 한가지 중요한 값인 Bundle Identifier는 com.wwforever.obbtest 로 했습니다.

 다음으로 Publishing Settings 부분입니다. 구글 플레이에 APK를 등록해야 테스트가 가능하므로 안드로이드 Keystore가 없으신 분들은 유니티3D에서 간편하게 생성 후 적용합니다. 그리고 유니티 4.x부터 지원하는 OBB용 Split Application Binary 옵션에 대한 내용입니다. 이 부분이 에매한데 나중에 다른 포스팅에서 정리하기로하고 일단 그림과 같이 옵션을 체크 해제 합니다.

 마지막으로 APK 빌드 전에 필요한 Scene만 체크하고 나머지 OBB를 통해 따로 다운로드 되어 로딩할 씬은 체크 해제 후 Build를 해줍니다. 이 부분도 역시 Split Application Binary과 관련이 있는데 Split Application Binary를 체크를 했다면 씬도 다 체크 해줘야 합니다. 그러면 알아서 OBB로 나눠지더군요.

 Split Application Binary는 체크 해제하고 빌드 했으니 APK만 일단 빌드 되었습니다.

 참고로 Split Application Binary를 체크하고 빌드하면 APK는 위와 비슷한 용량이고 OBB는 약 2.8메가로 생성되었습니다.

 OBB를 안하고 노멀한 APK를 빌드했을땐 10메가 가량 되었구요.


3. OBB 생성하기

 위에서도 잠시 나왔지만 사실 Split Application Binary를 체크해주면 OBB 자체를 생성하는 것은 쉽습니다. 하지만 Split Application Binary 옵션으로 만든 OBB는 적용 방법을 몰라 패스하고 에셋 번들을 만들어 OBB로 적용하는 것을 정리해봅니다.

 기존에 BuildPipeline.BuildAssetBundle로는 씬을 에셋 번들로 만들 수 없습니다. 씬을 에셋 번들로 만들려면 BuildPipeline.BuildStreamedSceneAssetBundle로 해야하더군요.

 class01_shield_000과 class01_sword_000.unity3d는 일반 리소스를 에셋 번들로 만든 것이고 scene.unity3d는 위에서 game.unity와 setting.unity 2개의 씬을 하나의 에셋 번들로 만든 것입니다. 3개의 에셋 번들을 단순히 Product Name과 같은 OBBTest.zip으로 압축해줍니다. Split Application Binary 옵션으로 만든 obb 파일보다 용량도 더 적네요.

 이것으로 준비 끝입니다. OBBTest.zip을 이제 구글 플레이에 올려줘야 합니다. 다음 포스팅에서 정리해보겠습니다.

댓글

이 블로그의 인기 게시물

CMake Windows에 설치하기

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

크로스 스레드 작업이 잘못되었습니다. xxx 컨트롤이 자신이 만들어진 스레드가 아닌 스레드에서 액세스되었습니다