어두운 배경이 싫으시다면 페이지 우측 하단에 보이는 초승달 모양의 아이콘을 클릭하면 화이트모드로 변경됩니다. 초승달 모양 버튼 : `화이트/다크 모드` 전환 |
이번 포스팅에서는 Meta Quest를 위해 언리얼 프로젝트를 만들고, Meta VR 플러그인 사용 및 프로젝트 세팅 작업을 하고 패키징하여 Meta Quest VR에 APK를 설치하고 구동하는 것까지 진행해 보겠습니다.
만약 이전 포스팅을 진행하지 않으셨다면 아래 링크를 통해 Meta Quest VR Mobile 버전을 작업하기 위한 준비를 해주셔야 합니다.
🔸Meta App 준비하기
1. 프로젝트 생성
기존에 작업하던 프로젝트여도 상관없고, 새로 만드셔도 상관없습니다. VR 작업을 하기 위한 프로젝트를 준비합니다. 새로 만드시는 경우 가급적 '가상현실' 템플릿으로 프로젝트를 만드시는 것을 권장합니다. 대부분 기본적인 프로젝트 세팅이 되어 있는 상태여서 비교적 세팅 과정이 단축됩니다.
2. Meta VR 플러그인 적용
이전 포스팅을 보셨다면 플러그인이 설치되어 있을 겁니다. 프로젝트를 생성하여 에디터가 나타나면 상단의 [편집] - [플러그인]을 눌러 플러그인 브라우저를 띄웁니다. 아래 이미지처럼 'Meta XR'을 체크하고, 아래 '에디터 재시작' 버튼을 눌러 에디터를 재시작합니다.
에디터가 다시 로드되면 상단 툴바에 'Meta XR' 관련 메뉴가 추가된 것을 볼 수 있습니다. 여기서 'Meta XR Tools'를 클릭하여 아래 나타나는 메뉴들 중 'Meta XR Project Setup Tool'을 선택하면 가이드 창이 나타나는데 Next를 눌러서 읽어보시거나 Skip 합니다.
그러면 아래와 같이 Meta Quest를 패키징 하기 위한 세팅을 한 번에 설정할 수 있는 창이 나타납니다. 확실히 이 메뉴가 생기고서는 일일이 프로젝트 세팅을 뒤져가며 찾아서 수정할 필요가 없어서 편해졌습니다.
상단에 보이는 각각의 VR 장비(Quest3, 2, Pro 등)에 대한 설정을 따로 할 수 있고, 공통으로 'All Quest'에서 설정할 수 있습니다. 본인이 개발하고자 하는 장비 타겟에 맞춰서 아래 이미지처럼 'Apply'를 눌러 패키징 타겟 장비를 허용합니다.
물론 위의 과정만 한다고 바로 패키징이 가능하지는 않습니다. 위의 셋업은 말 그대로 Meta Quest에서 구동이 가능하게만 해주는 기본 설정일 뿐이고 이제 프로젝트 App에 대한 설정들을 구체적으로 설정하는 방법에 대해서 설명하겠습니다.
3. 프로젝트 세팅
🟦 Android 설정
이제 세부적인 프로젝트 세팅을 하기 위해 [편집] - [프로젝트 세팅]으로 이동합니다. 그리고 좌측 메뉴 아래로 내려 [플랫폼] - [Android] 메뉴를 선택합니다. 그러면 아래 이미지처럼 보이게 됩니다. 여기서 상단에 빨간색 영역 우측에 보면 '지금 환경설정' 버튼을 클릭합니다.
그러면 아래 이미지처럼 녹색으로 변경됩니다. 이 상태가 되어야만 Android 패키징이 가능합니다. 프로젝트 폴더에 보면 'Build' 폴더가 생성된 것을 볼 수 있습니다. 이 폴더를 지울 경우, 다시 빨간색으로 변하고, '지금 환경설정' 버튼을 누르면 다시 나타납니다.
이제 아래의 내용을 확인하며 수정할 텐데, 지금은 Meta Quest 모바일 VR을 타겟으로 하는 간단한 프로젝트 패키징을 진행할 거라 많은 내용을 설명하지는 않겠습니다. 그때그때 상황 또는 검색을 통해 각 기능을 추가적으로 알아보시는 것을 추천합니다.
🔹Minimum SDK Version
= 말 그대로 최소 SDK 버전입니다. Meta Quest의 경우 API 32 Level을 타겟으로 하지만 Quest 1 장비까지 타겟으로 할 경우 최소 SDK 버전은 29입니다. 즉, Quest 1을 지원하지 않을 경우에는 32를 입력하시면 됩니다.
🔹Target SDK Version
= 위에서 설명한 것처럼 API 32 Level을 타겟으로 하므로 32를 입력합니다.
※ 왼쪽에 표시된 각 숫자들(26=8.0.0 등)은 API Level과 안드로이드 버전명을 나타냅니다. 근데 '31=12'라고 적혀있어서 헷갈릴 수 있는데, 안드로이드 버전명이 12인 것이 2개입니다. 그중 상위 버전인 Android 12L(API 32)를 사용합니다.
🔹Package game data inside .apk?
= 지금은 잘 모르겠는데 과거에는 Quest에 apk를 설치하고 실행하면 검은 화면에서 무한 로딩하는 문제가 있었는데, 이것을 체크해야만 해당 문제가 해결되었습니다. 해당 옵션은 APK 안에 게임 데이터를 패키징 할 것인지 설정하는 옵션입니다.
= 저도 모바일 개발자가 아니다 보니 자세한 것은 모르겠지만 이걸 체크하지 않을 경우 OBB 파일로 분할되어 APK가 만들어집니다. 이 상태에서 그냥 APK만 설치하면 무한 로딩에 빠지는 것으로 보입니다.(데이터가 분할되어서)
🔹Use ExternalFilesDir for UnrealGame files?
= 외부 데이터를 읽고 쓰기 위해서는 해당 옵션을 체크해야 합니다. 특히 SaveGame을 사용한다면 체크해주셔야 합니다.
🔹Orientation
= 처음에는 'Sensor Landscape'로 설정되어 있을 텐데, 'Landscape'로 변경합니다. 이것도 지금은 수정이 되었는지 모르겠는데 예전에는 모바일 하드웨어를 직접 사용하거나 부품을 사용하여 VR 기기를 만들다 보니 센서가 오작동해서 문제가 발생하기도 했는데, 그래서 강제적으로 VR은 Landscape로 설정해야 했었습니다. 아마 요즘은 그냥 해도 되지 않을까 싶습니다. 테스트는 해보지 않았습니다 ㅎㅎ;
🟦 Android SDK 설정
위의 설정을 완료하였으면 이제 왼쪽 메뉴들 중 'Android SDK'를 선택합니다. 그러면 아래 이미지와 같은 항목이 나타나는데 각각 SDK/NDK/JDK의 경로와 디바이스에서 출시하기 위한 타깃 SDK 버전을 입력하는 항목들입니다.
예전에 언리얼 4 버전에서는 워낙 VR과 엔진 버전이 업데이트될 때마다 SDK, NDK, JDK 등을 따로 설치해 주고 관리했어야 하는데, 언리얼 5에서는 다행히 그렇게 급격하게 버전이 달라지지 않고, 어느 정도 도구들의 버전을 유지하고 있어서 따로 경로설정을 할 필요성이 적어졌습니다.
그래도 간단하게 설명하자면 일단 경로는 아래와 같이 각각의 폴더 경로를 찾아서 지정해 주면 됩니다. (설치 경로를 변경하지 않았다면 아래와 같습니다)
🔸SDK : `C:/Users/사용자명/AppData/Local/Android/Sdk`
🔸NDK : `C:/Users/사용자명/AppData/Local/Android/Sdk/ndk/25.1.8937393`
🔸JDK : `C:/Program Files/Java/jdk-17`
주로 저 경로를 넣는 경우는 엔진 최신 버전을 설치하고 Android 개발 환경 구축해 놓은 상태에서 해당 PC에서 하위 엔진 버전의 프로젝트를 작업할 때 두 버전의 SDK, NDK, JDK가 다를 경우, 하위 버전 프로젝트 작업 시 저렇게 경로를 타겟팅해주어야 합니다.
하위 버전에서 저렇게 비워놓고 패키징하면 하위 엔진 버전 프로젝트가 상위 엔진 버전의 Android 개발환경(최신버전)으로 패키징을 하기 때문에 패키징이 실패합니다.
아래에 있는 'SDK API Level'과 'NDK API Level'은 각각 SDK 컴파일 버전과 출시를 위한 최소 타겟 SDK 버전을 지정하는 데 사용합니다.
🔸'SDK API Level' : 현재 작업 중인 언리얼 엔진에서 요구하는 Build-Tools의 버전에 맞춰서 입력해 주거나 엔진 최신 버전에서 작업하는 경우 `latest`라고 입력해도 됩니다. (초기값은 `latest`)
🔸'NDK API Level' : APK의 최소 타깃을 기준으로 작성하시면 됩니다. 정확한 범위는 테스트하지 않았지만 Build-Tools의 버전이 최댓값이고, Android 5.0 이상이 타겟이면 `android-21`이 최솟값이 됩니다.
즉, 현재 Meta Quest VR APK를 패키징 할 때 최소 SDK를 29로 하였다면, 'NDK API Level'은 `android-29`로 해야 합니다. 만약 최소 SDK보다 높으면 강제로 APK의 최소 SDK를 설정한 버전으로 높입니다.
ex) 최소 SDK가 29이고 NDK API Level을 `android-32`로 입력 시 → 최소 SDK 32로 변경
※ 반대로 Build-Tools보다 높은(android-35) 이런 식으로 입력하면 패키징 오류가 발생합니다.
아래는 최소와 타겟 SDK를 각각 API 32로 설정하고, 'SDK API Level'은 Build-Tools 설치 버전이 33.0.1이므로 `android-33`, 'NDK API Level'은 `android-32`로 설정하여 패키징 한 뒤 APK를 분석하는 별도의 프로그램으로 AndroidManifest.xml 파일 내용의 일부분입니다. 보시면 각각 설정한 값이 들어간 것을 볼 수 있습니다.
정리하면 'SDK API Level'은 Build-Tools의 버전에 맞춰서, 'NDK API Level'은 최소 SDK 버전에 맞춰서 입력하시면 됩니다.
🔸2024년 10월 추가 내용 : 언리얼 엔진을 5.4.4를 처음부터 설치하여 사용하는 경우 변경사항
언리얼 엔진 5.4.4 업데이트를 통해 안드로이드 개발환경의 내용 중 SDK 요구사항을 API 33에서 34로 올렸다는 내용입니다. 그래서 언리얼 엔진을 기존 5.4.x 버전에서 업데이트한 경우가 아닌 아예 처음부터 5.4.4를 설치하신 분들은 'SetupAndroid.bat' 파일로 Android 개발 환경에 필요한 Tool들을 받은 경우 Build-Tools가 33.0.1이 아닌 34.0.0이 설치되었을 겁니다.
그러면 위에서 작성한 'SDK API Level'에 `android-33`이 아닌 `android-34`로 입력하셔야 합니다. 아래는 해당 내용을 프로젝트 세팅에 적용한 모습이며, 패키징 할 때 최소 SDK를 29로 했을 때를 보여주는 예시입니다.
기존 5.4.3 이하 버전을 사용하시던 분들은 그대로 Build-Tools를 33.0.1을 사용하고 SDK API Level을 android-33으로 작성하여 사용해도 됩니다. 우리가 작업한 결과물은 구글 플레이 스토어가 아닌 Meta 스토어를 타깃으로 작업하는 것이기 때문에 별개입니다.
여기까지 프로젝트 설정에 관한 내용이었습니다. 이제 Meta Quest 장치를 이용하여 직접 테스트하는 방법에 대해서 설명하겠습니다.
4. Meta Quest VR 테스트
과거에는 Meta Quest를 모바일로 에디터에서 보기 위해서는 에디터 실행 전에 미리 Quest를 PC와 연결하고 USB 연결 허용을 해놓은 상태에서 에디터를 실행해야만 플레이 버튼이 활성화되었는데, 이제는 에디터 실행 중에 연결해도 활성화되도록 수정되었습니다.
에디터 실행 여부 상관없이 Quest 장치를 PC에 USB연결을 수행합니다. 그러면 Quest 화면에 'USB 디버깅 허용' 메시지 창이 나타납니다. 그러면 아래 버튼들 중 맨 아래에 보면 '이 컴퓨터에서 항상 허용' 이런 식으로 된 문장을 클릭합니다. 아래 참고 이미지와 같은 모양으로 나타날 겁니다. (스크린샷을 찍을 수 없어서 구글에서 찾아서 가져왔네요 ㅎㅎ;)
이미지 출처 : https://www.briandorey.com/post/quest-3-beat-saber-mod-questpatcher
만약 해당 메시지가 안 뜬다면 전원 버튼을 눌러서 화면을 잠시 껐다가 켜보거나, 아니면 기기를 재부팅해보시길 바랍니다. 어쨌든 저 메시지 창이 나타나서 항상 허용을 하였다면 다음에 USB로 연결해도 창은 나타나지 않습니다. 새로 업데이트를 받거나 할 때 나타났던 거 같은데 일반적으로 항상 허용을 선택하면 USB 연결 시 자동으로 디버깅 가능 상태가 됩니다.
디버깅 상태를 확인하려면 장치와 PC가 USB 연결된 상태에서 CMD 창에 `adb devices`를 입력하면 연결된 장치의 디바이스 고유번호가 나타납니다.
에디터에서도 처음에 바로 연결해도 나타나지 않습니다. 잠시(10초 정도?) 기다렸다가 플레이 버튼 우측에 있는 ⋮ 버튼을 누르거나 옆에 보이는 '플랫폼' 버튼을 눌러보면 잠시 몇 초 뒤에 아래와 같이 Quest 장비가 나타납니다.
연결된 Quest 장치명을 클릭하면 우측 하단에 '에셋 디플로이' 과정을 거쳐 '실행 중' 상태로 변환되었을 때 VR 장치에 플레이 화면이 나타납니다.
※ PC VR로 플레이하려면 플레이 버튼 우측 ⋮ 버튼을 눌러 하단에 'VR 프리뷰'로 실행하시면 됩니다.
종료할 때에는 VR 화면에서 앱 종료를 하시거나 에디터에서 우측 하단에 '실행 중'에 보이는 취소 버튼을 누르면 됩니다.
5. 패키징 및 설치
이제 마지막 단계인 패키징을 해보도록 하겠습니다. 만약 위에서 플레이까지 정상적으로 되었다면 패키징 하는데 문제는 없습니다. 패키징 과정은 간단합니다. 상단의 '플랫폼' 메뉴를 선택하고 'Android > Android (ASTC)'를 누르면 패키징을 시작합니다.
패키징이 완료되면 아래와 같이 로그 출력이 되고 프로젝트 폴더에 보면 'Android_ASTC'라는 폴더 안에 APK와 설치 및 제거할 수 있는 배치파일이 있습니다. VR 장치가 연결된 상태에서 Install 배치 파일을 실행하면 장치에 APK를 설치합니다.
만약 개발환경이 구축되지 않은 PC에서 배치파일을 실행할 경우 설치가 되지 않을 겁니다. 이럴 때에는 MQDH(Meta Quest Developer Hub)라는 애플리케이션을 통해 장치에 직접 APK를 설치시킬 수 있습니다. 이 부분은 나중에 스토어에 업로드하는 것까지 포함하므로 추후 포스팅하도록 하겠습니다.
구독 및 좋아요는 컨텐츠를 생산하는데 많은 도움이 됩니다. 😊
감사합니다.