프로그래밍/언리얼엔진

[언리얼 엔진4] Meta Quest2 Build (4.25 이상) - 3

LeePorter 2023. 12. 26. 16:42

이전 포스팅을 통해서 SDK와 NDK 등 필요한 Tool들을 설치 완료하였을 겁니다. 이번 포스팅은 언리얼 엔진에서의 프로젝트 설정에 관하여 설명하도록 하겠습니다. 만약 전 과정을 거치지 않았다면 아래 이전 포스팅을 통해서 진행하신 뒤 해당 포스팅을 읽어주세요. 

 

[이전 포스팅]

[언리얼 엔진4] Meta Quest2 Build (4.25 이상) - 1

[언리얼 엔진4] Meta Quest2 Build (4.25 이상) - 2


언리얼 엔진 4.25 이상(4.27까지) 버전이라면 크게 다르지 않으므로 해당되는 버전으로 작업하신다면 아래 설명을 따라해주시면 됩니다. 

※ 해당 설정은 Meta Quest2의 Mobile 세팅입니다. Link를 통해서 PC용(Rift S, CV1 등) 버전을 개발하시는 경우, 해당 내용을 적용하실 필요없습니다.

 

※ 추가로 APK를 Meta Store에 업로드할 생각이라면 C++ 프로젝트로 작업해야합니다. 이유는 다음 포스팅을 통해 자세히 설명하겠지만, AndroidManifest.xml 파일 수정을 하기 위해 UPL 파일을 덮어씌우는 작업이 필요합니다. 이 작업은 Build.cs파일을 수정해야하므로 C++ 프로젝트로 수행해야합니다.

 

언리얼 에디터를 실행하여 현재 작업중인 프로젝트나 새 프로젝트로 열어주세요.

에디터가 열리면 [편집] - [프로젝트 설정]으로 이동합니다.

 

언리얼 4.27에서 생성한 VR 템플릿 예제(대부분 필요한 설정이 미리 적용되어 있어 그대로 사용해도 됩니다)

 

가장 먼저 프로젝트 설정에서 확인할 부분은 [프로젝트] - [타깃 하드웨어]모바일 및 스케일 가능 3D 또는 2D로 설정되어 있는지, 그리고 [엔진] - [입력]에서 기본 터치 인터페이스가 없음으로 설정되어 있는지 확인합니다.

 

(추가 수정) 혹시나 플러그인에서 'Oculus VR' 플러그인이 체크(✔)되어 있고, 'Oculus OpenXR' 플러그인이 체크 해제(❌)되어 있는지 확인해주세요. 두 플러그인을 동시에 쓰시면 안 됩니다. (아래 이미지 참고)

 

렌더링 관련한 설정은 아래와 같습니다. 아주 기본적인 설정이므로 본인이 개발하는 환경에 따라 조정하시면 됩니다.

  • 렌더할 CSM 케스케이드 최대 수 : 2
  • 모바일 MSAA : 4xMSAA
  • 포워드 셰이딩 : ✔(체크하면 재시작 후 별도의 셰이더 컴파일 과정을 거칩니다. - 다소 시간이 걸림)
  • 인스턴스 스테레오 :
  • 모바일 HDR : ❌
  • 모바일 멀티 뷰 :
  • Default Settings
    • 블룸 :
    • 자동 노출 :
    • 모션 블러 :
    • 안티 에일리어싱 메소드 : MSAA

다음은 Android 환경설정입니다. [플랫폼] - [Android]로 이동합니다. 그러면 아래 이미지와 같이 빨간색 경고가 보이는데 우측에 '지금 환경설정'을 클릭합니다. 그러면 배경이 녹색으로 변하고 Android Build가 가능한 플랫폼으로 바뀝니다. 만약 패키징할 때 아래와 같은 상황이라면 패키징 실패가 뜹니다. (프로젝트 폴더 안에 Build 폴더가 생기고 이를 지우면 다시 빨간색으로 바뀜)

 

아래 이미지와 같이 Quest에 필요한 설정을 해줍니다. 이전 포스팅에서 설명했듯이 Quest2는 Android 10 OS이므로 타겟 SDK를 29로 설정합니다. (※ 참고로 Quest1까지 빌드타겟을 설정할 경우 최소 SDK 28이 되어야합니다)

  • .apk 안에 게임 데이터 패키징? :
  • UE4Game 파일에 Use ExternalFilesDir 사용? :
  • 오리엔테이션 : Landscape
  • KitKat 및 상위 디바이스에서 몰입형 전체화면 활성화 :
  • arm64[aka arm64-v8a] 지원 / armv7  
    ※ 반드시 하나 이상 체크되어야하므로 arm64 체크하고 armv7을 체크해제함
  • Vulkan 지원 / OpenGL ES3.1 지원  
    ※ 이것도 위의 arm64와 마찬가지로 하나 이상 체크되어야하므로 Vulkan 체크 후 OpenGL ES3.1 체크해제함
  • <application> 노드의 추가 태그 + : android:allowBackup="false" 작성 (추후 오큘러스 마켓 등록 시 필요)
  • Oculus Mobile 디바이스용 패키지 + : Oculus Quest / Oculus Quest2

마지막으로 [플랫폼] - [Android SDK]의 수동 타겟팅 관련하여 설정은 여러 엔진을 작업중이 아니라면 따로 할 필요는 없습니다.(그대로 비워두면 됩니다)

 

※ 4.25이상 버전 여러 개 설치 시(4.25 / 4.26 / 4.27) NDK 버전(r21b)이 동일하므로 굳이 수동 타겟팅을 하지 않아도 됩니다. SDK는 Quest만 빌드할 것이므로 Android 10 os 그대로 사용할 것이고, JDK도 Android Studio를 설치하면서 자동설치된 JDK를 그대로 사용하므로 따로 설정할 필요없이 비워두면 됩니다.

여기까지 언리얼 엔진에서의 기본적인 Meta Quest2 Build 세팅이었습니다. 해당 설정 그대로 패키징을 수행하면 패키징이 성공합니다. 

4.27 버전의 VR 템플릿 예제 Android ASTC 패키징 성공 예시

 

혹시 위 과정을 그대로 수행했는데 아래와 같은 패키징 실패 문구가 뜬다면 Android SDK Tools가 30.0.3 버전보다 높은 버전이 설치되어 있거나 해당 버전이 없고 낮은 버전이 설치되어 있는 경우 발생합니다. 즉, 정해진 버전 이외의 버전이 설치되어 있어 호환이 안 되어 실패가 뜨는 것이니 Android Studio의 SDK Manager를 다시 확인해보시길 바랍니다.

 

※ 반드시 정해진 버전만 꼭 설치하시길 바랍니다. (포스팅 1편 참고)

PackagingResults: Error: cmd.exe failed with args /c “프로젝트 경로\Intermediate\Android\armv7\gradle\rungradle.bat” :app:assembleDebug

 

참고로 Visual Studio 2019 버전이상 설치할 때 워크로드에서 'C++를 사용한 게임 개발' 이 부분은 반드시 체크하여 설치하셔야 하고, 언리얼 엔진 설치할 때도 설치 옵션의 플랫폼에 Android가 체크되어 있어야합니다.(기본은 체크되어 있음)


다음 포스팅에서는 Meta Quest2를 연결하여 개발자 모드로 설정 후 APK를 설치하는 방법과 Meta Quest Developer Hub(MQDH, 과거에는 Oculus Developer Hub, ODH라 불림)를 통해 APK 관리 및 연결, 마켓에 APK 등록시키는 등의 전반적인 게임 출시에 대해서 기본적인 부분들에 대해서 포스팅하도록 하겠습니다.

감사합니다.