UDN
Search public documentation:

UnrealOnMobileKR
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 홈 > 모바일 홈 > 언리얼 엔진 3: 모바일 개요

언리얼 엔진 3: 모바일 개요


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

개요


언리얼 엔진 3를 사용하여 모바일 디바이스용 게임을 개발할 때는, 모바일 폼 팩터에 따른 지침, 이점, 한계점 내에 맞도록 게임 디자인과 저작물의 일정 부분을 재단해 줄 필요가 있습니다. 여기서는 모바일 플랫폼에서 개발할 때 고려해야 하는 사항과 기능 일부에 대한 것을 일반적인 관점에서 다뤄보도록 하겠습니다.

모바일 플랫폼


애플 iOS

모든 모바일 플랫폼이 비슷한 폼 팩터를 공유하기에 이점과 한계점도 역시 일정 범위 내에 있습니다만, 애플 iOS 플랫폼용 게임 개발에는 고유의 복잡성 및 특성이 있습니다. 또한 iOS 게임 개발이나 앱 스토어에 iOS 게임을 발표할 때의 특수 하드웨어 및 소프트웨어 요구사항도 있습니다.

애플 iOS 플랫폼용 게임 제작에 관련된 정보는 Unreal On iOS KR? 페이지를 참고해 보시기 바랍니다.

안드로이드

Tegra(테그라) 디바이스용 게임 제작에 관련된 정보는 Unreal On Tegra KR (언리얼 엔진 3: 안드로이드 개요) 페이지를 참고해 보시기 바랍니다.

  • 풀 UE3 소스 라이선시께는 안드로이드가 지원됩니다. UDK 타이틀 개발중에 다른 플랫폼으로 대상을 넓히기 위해 UDK 에서 UE3 로 옮기는 것을 검토중이시라면, 에픽의 세일즈 팀과 라이선싱 조건에 대해 상담해 보시기 바랍니다.

시작하기


하드웨어와 소프트웨어 요구사항을 포함하여 모바일 디바이스용 컴파일을 위한 개발 환경 구성에 관련된 정보는 물론, 모바일 플랫폼에서 실행되는 언리얼 프로젝트의 배치 및 디버깅에 관련된 일반적인 작업방식에 대한 정보는 Getting Started Mobile KR 페이지를 참고해 보시기 바랍니다.

모바일에서의 스트리밍


모바일 디바이스에서도 비동기 레벨 스트리밍이 지원됩니다. 텍스처 스트리밍의 현재 상태에 대해서는 Mobile Texture Reference KR 페이지를 참고해 주시기 바랍니다.

새로운 인풋 서브시스템


멀티-터치 및 틸트 지원을 위한 완전히 새로운 인풋 시스템 관련 정보는 Mobile Input System KR 페이지를 참고하시기 바랍니다.

모바일용 시스템 세팅


모바일 디바이스는 다른 것들보다 플랫폼이 훨씬 다양합니다. Xbox 360은 딱 하나만 있습니다. UE3-탑재 어플리케이션이 실행되는 iOS 디바이스는 다섯(이며 현재 느는 중에) 있습니다. 그렇기에 .ini 주도 SystemSettings (시스템 세팅) 개념을 도입해야 헀습니다. 여전히 .ini 주도형이지만, Engine.ini 파일은 여러 부문으로 나뉘어 있으며, 사용되는 디바이스에 맞는 부문이 사용되게 됩니다. 부가적으로 모바일 프리뷰어에 특정 디바이스의 세팅을 사용하도록 지시할 수 있기에 변경한 결과를 매우 빠르게 확인해 볼 수 있습니다.

BaseEngine.ini에는 귀하의 모든 게임에 대한 iOS 디바이스용 디폴트가 담겨 있습니다. 귀하의 게임 DefaultEngine.ini 에서 이를 평소처럼 덮어쓸 수 있습니다. BaseEngine.ini 에서 예로 [SystemSettingsIPhone3GS] 부문을 보면, 시스템 세팅에 "BasedOn" 태그가 있는 것을 볼 수 있습니다. 이는 게임에 대한 변경사항을 모든 디바이스에 쉽게 적용한 다음, 각 플랫폼에 대해서는 특정 세팅만 덮어쓸 수 있도록 세팅의 계층구조를 만들어 냅니다.

현재 (메모리가 두 배인) iPhone 4를 제외한 전 플랫폼은, [SystemSettingsMobileTextureBias] 부문을 사용하여 감소된 텍스처 크기를 사용합니다.

모바일-전용 시스템 세팅은 많이 있습니다. 모바일 시스템 세팅에 대한 안내는 Mobile System Settings KR 페이지를 참고해 보시기 바랍니다.

프레임율


에픽 시타델의 경우, 일반적으로 30 fps를 목표로 삼았습니다. 물론 콘텐츠 품질을 조금 낮춰 60 fps로 할 수도 있습니다. 최대 프레임율을 제어하는 Engine.ini 값이 있습니다:

  [Engine.Engine]
  MaxSmoothedFrameRate=35
  bSmoothFrameRate=TRUE
  

60 fps의 경우, MaxSmoothedFrameRate 를 62로 바꾸십시오. bSmoothFrameRate 를 꺼서 가능한 한 빠르게 할 수도 있습니다만, 프레임율이 (20, 40, 20, 40 식으로) 들쭉날쭉한 경향을 보여 일반적으로 매우 안좋아 보이니 추천할 만하지는 않습니다.

모바일에서의 데이터 저장하기


모바일 디바이스에서 데이터/게임 상태를 저장하는 방법은 현재 세 가지가 있습니다:

BasicSaveObject()

Engine 클래스에 오브젝트(와 당연히 그 속성까지도)를 저장하는 데 사용할 수 있는 정적인 스크립트-접근가능 네이티브 함수가 있습니다. 일반적으로는 세팅 전부를 저장하기 위해 이들 중 하나의 오브젝트를 만든 다음, 이와 같은 식으로 오브젝트를 저장하게 될 것입니다:

     MyObject = new SomeClass;
     MyObject.Value = 5;
     class'Engine'.static.BasicSaveObject(MyObject, "SaveGame.bin", true, 1);
  

MyObject 는 저장할 오브젝트 변수입니다. "SaveGame.bin" 이 저장할 파일의 이름입니다. true 는 FILEWRITE_SaveGame 가 CreateFileWriter 에 전달될 것임을 나타냅니다. (iOS가 나중에 파일을 로드할 수 있으려면 이 값은 참이어야 합니다.) 1 은 게임-지정 버전 번호로, 오래된 버전 파일이 로딩되지 않도록 하는 데 쓸 수 있습니다.

나중에 (저장 게임 등을 로드하는 등) 오브젝트를 로드하려면, 저장의 경우와 매우 비슷한 것을 해 줘야 합니다:

     MyObject = new SomeClass;
     class'Engine'.static.BasicLoadObject(MyObject, "SaveGame.bin", true, 1);
  

이후 MyObject.Value 는 이제 5가 될 것입니다.

기본 (int, float, string, name 등의) 속성과 기본 속성의 배열/구조체만 저장되니 주의하십시오. 오브젝트 포인터를 저장할 수는 있지만, 로딩시 오브젝트가 이미 메모리에 있어야 합니다. (오브젝트 속성은 문자열로 저장되기에, 오브젝트의 경로명 상의 StaticFindObject 를 사용합니다.)

콘솔 명령

[현재 이 메서드는 iOS에서만 작동합니다.]

키즈멧이나 스크립트 코드에서 콘솔 명령을 통해 단일 값을 수동으로 저장(하고 로드)할 수도 있습니다:

     mobile SaveSetting <SettingName> <Value>
     mobile LoadSetting <SettingName> <DefaultValue>
  

이 메서드로는 모든 세팅이 문자열로 저장되고 로딩됩니다. 필요한 문자열 로/에서의 변환 작업은, 콘솔 명령을 실행하는 코드에 달렸습니다. 로딩시, 그 세팅이 설정되지 않았을 때 반환될 디폴트 값을 지정합니다:

    local int SavedValue, LoadedValue;
    SavedValue = 10;
    ConsoleCommmand("mobile SaveSetting TestSetting " $ SavedValue);
    LoadedValue = int(ConsoleCommand("mobile LoadSetting TestSetting 1"));
  

키즈멧 액션

Save/Load Values 키즈멧 액션에 대한 정보는 Mobile Kismet Reference KR 페이지를 참고해 주시기 바랍니다.

모바일 오디오


Mobile Audio System KR 페이지에 모바일 플랫폼에서의 사운드 효과와 음악에 대한 정보가 담겨 있습니다.

모바일 텍스처


Mobile Texture Reference KR 페이지에 모바일 플랫폼에서 텍스처를 다루고 처리하는데 관련된 정보가 담겨 있습니다.

모바일 머티리얼


Mobile Material Reference KR 페이지에 모바일 플랫폼용 머티리얼을 제작하고 변경하는 법에 대한 정보가 담겨 있습니다.

시동시 머티리얼 컴파일하기

레벨의 머티리얼 사용량은 게임 시동 시간에 상당한 영향을 끼칠 수 있습니다. 셰이더는 오프라인에서 컴파일되지 않기에, 게임 내에서 컴파일해야 합니다. 시간이 조금 걸리는 일이(라 게임플레이 도중 버벅일 테)니, 엔진은 (쿠커에 의해 결정된 대로) 시동 도중에 가급적 많은 셰이더를 컴파일합니다. 레벨에서 사용되는 다양한 머티리얼 모바일 세팅 조합에 따라, 시동시 컴파일할 셰이더의 수가 많아(져 컴파일하기에 느려)질 수 있습니다.

쿠커가 미리 결정할 수 있는 셰이더는 (보통 95% 이상으로) 빠른 컴파일을 위해 최적의 포맷으로 전처리됩니다. 쿠커가 검출해내지 못한 셰이더를 렌더링해야 하는 경우, 처음 사용될 때 컴파일하(여 아마 약간 버벅이)게 됩니다.

텍스처만 다른 동질성 머티리얼 둘의 경우, 세팅이 같기에 둘이 아닌 하나의 셰이더만 컴파일되니 참고하시기 바랍니다.

포그


포그는 레벨/맵 단위로 제어됩니다. 포그 볼륨은 사용되지 않습니다. 포그 구성법에 대한 정보는 모바일용 디자인하기 페이지를 참고해 주시기 바랍니다.

네트워크 파일 로더


모바일 프레임워크에는 모바일 디바이스용 교차-플랫폼 네트워킹된 파일 로딩 시스템을 도입했습니다.

콘텐츠 반복처리(는 물론 명령줄 변경) 속도를 크게 향상시켜 줍니다. 활성화한 후, 모든 사용자는 게임을 종료하고 다시 실행하기만 해도 새로운 파일이 디바이스에 복사됩니다.

사용법

작동하게 하려면 UnrealFrontend를 사용해야 합니다:

  • Unreal Frontend 실행합니다.
  • Game 탭으로 이동합니다.
  • "Use Networked File Loader" 가 참으로 설정되었는지 확인합니다.
  • Sync 한 번 실행합니다.
    • UFE를 실행중인 기계의 IP 주소가 담긴 앱에 파일을 넣습니다.
  • 디바이스에서 게임을 부팅합니다.
  • 네트워크를 건너 폰으로 파일을 복사합니다.
  • 네트워크로 복사하는 것이 엄청 빠르지는 않지만, Sync/설치 시간은 훨씬 빠릅니다.
  • 콘텐츠를 변경한 경우:
    • 평소처럼 쿠킹
    • 게임 종료
    • 아이폰 게임 실행 (아이튠즈는 건드릴 필요 없음)
    • 새로이 업데이트된 파일이 복사됩니다.
  • 게임의 명령줄만 바꾼 경우:
    • Game 탭으로 이동
    • "Make Commandline" 버튼 클릭
    • 게임 종료
    • 게임 실행
    • 새로운 명령줄이 적용됩니다.

중요 알림

코드 리컴파일

코드를 리컴파일하는 경우, 실행파일을 패키징하기 위해 여전히 Sync 버튼을 클릭해 줘야 합니다.

이 작업을 위해서는 UnrealFrontend 를 실행시켜 둬야 합니다. UFE가 파일 서빙 호스트 어플리케이션입니다.

나중에 서비스같은 것으로 바꿀 계획이지만, 현재로서는 UFE가 필수입니다.

일반 파일 업로딩으로 다시 전환

네트워크 로더 사용을 중지하려는 경우, "Use Networked File Loader" 체크박스를 끄고 나서 예전처럼 Sync하면 됩니다.

그래도 예전 실행시 생성된 캐시 파일을 깨끗이 지우려면 폰에서 어플리케이션을 수동으로 완전히 지워줘야 합니다!

  • 나중에 코드를 통해 (파일 로더를 사용중이지 않으면, 앱이 캐시된 파일을 지울 수 있도록) 수정하겠습니다.

기본 작업방식


컴파일

디버깅

모바일 프리뷰어에서, 문제를 시험하고 고립시키기 위해 Numpad 1 및 3 키를 사용하여 특정 씬의 드로 콜을 단계별로 들어가(step through) 봅니다. 그리고서 Numpad 0으로 이 디버그 모드를 리셋시키고, 씬을 정상으로 되돌립니다.

미리보기

모바일 프리뷰어가 쿠킹 및 디바이스로의 sync도 필요없이 게임을 빠르게 미리볼 수 있는 최선의 방법입니다.

모바일 포그, 모바일 스페큘러, 모바일 스위치를 사용하여 만든 머티리얼 등과 같은 셰이딩 효과 다수는 에디터에서 표시되지 않으니 주의하십시오. 에디터는 Direct3D를 사용하고, 모바일 디바이스는 OpenGL ES2를 사용하기에 효과를 표현해 내는 데 다른 셰이더가 필요하기 때문입니다.