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
日本語訳
中国翻译
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
언리얼 엔진 3: 모바일 개요
문서 변경내역: Mike Fricker, Josh Adams 작성. 홍성진 번역.
개요
모바일 플랫폼
애플 iOS
모든 모바일 플랫폼이 비슷한 폼 팩터를 공유하기에 이점과 한계점도 역시 일정 범위 내에 있습니다만, 애플 iOS 플랫폼용 게임 개발에는 고유의 복잡성 및 특성이 있습니다. 또한 iOS 게임 개발이나 앱 스토어에 iOS 게임을 발표할 때의 특수 하드웨어 및 소프트웨어 요구사항도 있습니다. 애플 iOS 플랫폼용 게임 제작에 관련된 정보는 Unreal On iOS KR? 페이지를 참고해 보시기 바랍니다.안드로이드
Tegra(테그라) 디바이스용 게임 제작에 관련된 정보는 Unreal On Tegra KR (언리얼 엔진 3: 안드로이드 개요) 페이지를 참고해 보시기 바랍니다.- 풀 UE3 소스 라이선시께는 안드로이드가 지원됩니다. UDK 타이틀 개발중에 다른 플랫폼으로 대상을 넓히기 위해 UDK 에서 UE3 로 옮기는 것을 검토중이시라면, 에픽의 세일즈 팀과 라이선싱 조건에 대해 상담해 보시기 바랍니다.
시작하기
모바일에서의 스트리밍
새로운 인풋 서브시스템
모바일용 시스템 세팅
프레임율
[Engine.Engine] MaxSmoothedFrameRate=35 bSmoothFrameRate=TRUE60 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 페이지를 참고해 주시기 바랍니다.모바일 오디오
모바일 텍스처
모바일 머티리얼
시동시 머티리얼 컴파일하기
레벨의 머티리얼 사용량은 게임 시동 시간에 상당한 영향을 끼칠 수 있습니다. 셰이더는 오프라인에서 컴파일되지 않기에, 게임 내에서 컴파일해야 합니다. 시간이 조금 걸리는 일이(라 게임플레이 도중 버벅일 테)니, 엔진은 (쿠커에 의해 결정된 대로) 시동 도중에 가급적 많은 셰이더를 컴파일합니다. 레벨에서 사용되는 다양한 머티리얼 모바일 세팅 조합에 따라, 시동시 컴파일할 셰이더의 수가 많아(져 컴파일하기에 느려)질 수 있습니다. 쿠커가 미리 결정할 수 있는 셰이더는 (보통 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하면 됩니다. 그래도 예전 실행시 생성된 캐시 파일을 깨끗이 지우려면 폰에서 어플리케이션을 수동으로 완전히 지워줘야 합니다!- 나중에 코드를 통해 (파일 로더를 사용중이지 않으면, 앱이 캐시된 파일을 지울 수 있도록) 수정하겠습니다.