UDN
Search public documentation:

FullScreenMovieApple_iOSKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 모바일 홈 > iOS의 풀스크린 무비

iOS의 풀스크린 무비


문서 변경내역: Josh Adams 작성. 홍성진 번역.

개요


풀스크린 무비 재생 기능은 iOS에 내장되어 있습니다. (보통 로딩을 감추는 데 사용되는) 풀스크린 무비를 처리하는 데는 이 API를 활용합니다. UE3의 풀스크린 무비에 관련된 특정 플랫폼 전용 정보는 Full Screen Movie KR 페이지를 참고해 보시기 바랍니다. (무비 포맷 등) 필요한 iOS 전용 정보는 아래에서 찾아볼 수 있습니다.

물론 로딩시 무비(나 그 조합) 대신 고정된 이미지를 사용할 수도 있습니다.

콘텐츠 제작


여기서는 무비와 이미지의 제작은 물론, 이름지을 때의 고려사항도 다뤄 보겠습니다.

무비

iOS는 여러가지 무비 포맷을 지원합니다만, 여기서는 모든 무비가 M4V 무비이며, 확장자도 .m4v 라 가정하겠습니다.

무비의 크기는 어떤 것도 가능합니다. (재생시 무비의 상 비율은 유지하면서 나머지 부분은 검정으로 채워 화면에 맞춰 줌시킵니다.) 크기는 보통 (가로보기에는) 480x320 또는 (세로보기에는) 320x480 이 표준인데, 가장 작은 포맷의 화면 크기이기 때문입니다. 아이패드에서의 확대도 일반적으로는 괜찮아 보입니다.

이미지

(무비가 없다든지, OS 버전이 3.1.3 이하라든지 해서) 코드가 무비를 재생하지 못하면, 지정된 무비와 똑같은 이름의 .png 파일을 찾아봅니다.

무비처럼 이미지의 크기도 제한은 없으나, 대상으로 삼는 화면 해상도에 일치시키는 것이 좋습니다. 실제로 똑같은 이름을 기반으로 하여 각기 다른 이미지를 셋 두고서, 게임이 실행되고 있는 디바이스에 따라 선택되게 할 수도 있습니다. 무비 이름이 Loading 이라 가정한다면, 지정할 수 있는 파일 셋은 이렇습니다:

  • IPadLoading.png - 앱이 아이패드에서 실행중일 때 선택되는 것입니다. 보통 1024x768 (세로에는 768x1024) 입니다.
  • Loading@2x.png - 레티나 디스플레이 디바이스(아이폰4, 아이팟 터치 4세대)에서 실행중일 때 선택되는 것입니다. 보통 960x640 (세로에는 640x960) 입니다.
  • Loading.png - 그 외의 경우(나 위의 파일이 존재하지 않을 경우)에 사용되는 것입니다. 보통 480x320 (세로에는 320x480) 입니다.

부가적으로 게임이 뭔가 (로딩을) 하고 있음을 나타내는 작고 하얀 스피너(UIActivityIndicatorView)가 좌하단에 표시됩니다.

지정


재생할 무비를 지정하는 방법은 두 가지 있습니다:: 엔진 .ini 파일의 [FullScreenMovie] 부분에 있는 StartupMovies 및 LoadingMovies 줄을 통해서, 또는 코드 내 다양한 MoviePlayer 함수 호출을 통해서입니다. (함수와 .ini / 환경설정 세팅에 대한 정보는 Full Screen Movie KR 페이지를 참고하시기 바랍니다.) iOS 무비 재생기능은 항상 플래시 메모리로부터 스트리밍되므로, AlwaysLoadedMovies 세팅은 무시되며, 무비를 재생할 곳을 지정하는 MM_* 플랙도 마찬가지입니다. 유일하게 지원되는 플랙은 무비가 반복되느냐 여부입니다.

StartupMovies 세트의 최종 무비가 반복되는 무비인 것처럼, 최종 "무비"에 대한 이미지를 표시하는 경우 그 이미지도 게임이 부팅될 때까지 표시됩니다. 끝에서 두 번째 무비가 끝나기 전에 게임이 부팅되는 경우, 최종 무비/이미지는 표시되지 않으니 참고하십시오.

파일 대소문자 관련 중요 정보

무비/이미지 로딩용 iOS API는 대소문자를 구별하므로, (.ini 또는 코드에) 지정된 무비 이름이 디스크에 있는 파일의 대소문자와 정확히 일치하는지 확인하시기 바랍니다. 추가로 확장자도 .m4v 또는 .png 여야 합니다. (예를 들어 .PNG 는 안됩니다.)

특수 "Startup" 무비

OS는 앱이 로드되기도 전에 Default.png를 표시하기 때문에, 그리고 엔진이 .ini 파일을 읽어들일 때까지도 약간의 시간이 걸리기 때문에, iOS 무비 플레이어는 항상 엔진이 시동되자마자 Startup 이라 불리는 이미지/무비의 재생을 시도합니다. Startup 이라는 무비가 없을 경우, 정상적인 시동 시퀸스가 시작되기 전에 잠깐 검정화면으로 일시정지됩니다.

명령줄에 -nomovie 또는 .ini 파일에 bForceNoMovies 를 지정해도, 그 전에 무비가 재생되므로 iOS에서는 효과가 없습니다.

이미지 표시 기간 지정하기

이미지에는 시간 정보가 포함되어 있지 않기에, 이미지가 표시되는 기간을 제어하기 위한 .ini 세팅이 있습니다. 각 이미지마다의 표시 기간을 조절하거나, 모든 이미지에 대한 전체적인 시간을 설정할 수도 있으며, 비워 두면 디폴트로 4초간 표시됩니다.

시간은 다음과 같은 순서로 정해집니다 (높은 쪽 우선):

  • 엔진 .ini 파일의 [FullScreenMovie] 부분에서 SplashTime_XXX 라는 키를 찾아봅니다. XXX 는 (확장자를 뺀) 이미지 이름입니다.
  • [FullScreenMovie] 부분에서 "DefaultSplashTime" 라는 키를 찾아봅니다.
  • 4 초

입력


엔진이 로드되고 무비가 SkippableMovies (생략가능 무비) 목록에 있으면, 무비 아무데나 클릭해도 재생이 중지됩니다. 시동 시퀸스 도중이고, (최종 반복 무비를 빼고서) 재생할 수 있는 무비가 더 있는 경우, 다음 무비가 시작됩니다.

기술적인 정보


Bink 무비 플레이어와는 달리 iOS 무비 플레이어는 렌더링 스레드가 (아니고 게임 스레드도) 아닌 메인 OS 스레드에서 실행됩니다. 메인 OS 스레드는 모든 UIKit 함수성(경고 표시, 게임 센터 UI 불러오기 등)이 실행되는 곳입니다. 일반적으로 메인 스레드는 빈둥거리는(idle) 상태이기에 무비는 매우 빨리 시작됩니다.

텍스트 겹쳐놓기(overlay)는 iOS에서 작동(스크립트 코드의 AddTextOverlay)하나, 게임의 경우 (Bink 플레이어로 된) 무비 위에 렌더링할 수 없습니다. (UE3 UFont 오브젝트는 캔버스를 사용하여 무비 위에 렌더링됩니다.) iOS 플레이어는 지정된 UFont에다 물어 최대 글자 높이를 알아내고, 거기에다 지정된 YScale 값을 곱해준 다음, 그 결과를 iOS 시스템 폰트를 만들기 위한 점 크기로 사용합니다. (에픽 시타델 레벨인 CastleMap에 사용된 것처럼) CastleGame 에는 사용자가 클릭하면 무비 나머지를 건너뛰고 게임을 시작시킬 수 있는 "Start" 겹쳐놓기 문구를 무비에 추가시켰는데, 여기에는 새로이 추가된 OnEngineLoaded 스크립트 이벤트가 사용되었습니다.