28
1 UNREAL SUMMIT 2015 모바일 개발 설정과 패키징 신광섭 Developer Relations Manager/Programmer Epic Games Korea UNREAL SUMMIT 2015 목차 모바일 개발 환경 설정 실행버튼 살펴보기 프로젝트 런쳐 패키징 프로젝트 배포버전제작

모바일개발설정과패키징 - Unreal Summit 2017 : 언리얼 서밋 2017replay.unrealsummit.co.kr/data/summit2015/2015_02.pdf · 2017-08-14 · 3 UNREAL SUMMIT 2015 ... Unreal

Embed Size (px)

Citation preview

1

UNREAL SUMMIT 2015

모바일개발설정과패키징

신광섭

Developer Relations Manager/Programmer

Epic Games Korea

UNREAL SUMMIT 2015

목차

• 모바일개발환경설정

• “실행” 버튼살펴보기

• 프로젝트런쳐

• 패키징프로젝트 –배포버전제작

2

UNREAL SUMMIT 2015

모바일개발환경설정

UNREAL SUMMIT 2015

안드로이드개발준비

• 안드로이드개발을위한 SDK 설치– 엔비디아의 Tegra Andorid Development Pack(TADP)를추천

• Unreal Engine\4.7\Engine\Extras\Android 에서찾으실수있음

– TADP 개발자프로그램가입을통해서 tadp-3.0r4-windows 버전설치를추천

• https://developer.nvidia.com/tegra-android-development-pack

– 최신버전의 4.x 버전이있지만호환성에보장되지않음

– 혹시라도 TADP 설치를원하지않으시면수동설정가능

• 프로젝트세팅-> 안드로이드 SDK

3

UNREAL SUMMIT 2015

안드로이드개발준비

• 기타디바이스관련설정– 안드로이드디바이스 “개발자옵션” 및 “USB 디버깅활성화”

– PC에안드로이드디바이스의 ADB 드라이버설치

– 디바이스첫연결시 “USB 디버깅을허용할까요?” 에서꼭허용

• “실행”버튼에서타겟디바이스로보이면설정완료!

UNREAL SUMMIT 2015

안드로이드개발준비

• 네이티브코드수정시에안드로이드빌드– TADP 설치나안드로이드 SDK가제대로설정된후에는 VS에서빌드가능

– 만약 .sln파일이 TADP 설치나 SDK 설정전에만들어졌다면다시만들어줘야Solution Platforms에 Android 가보임

• GitHub 버전은 GenerateProjectFiles.bat실행이나 .uproject선택후에

• 제대로설정되면 Android 선택가능

4

UNREAL SUMMIT 2015

안드로이드개발준비

• 참고로특정프로젝트의 Unreal Engine Version을변경해서다른엔진버전을사용하게하고싶다면,

• Switch Unreal Engine Version…을선택해서가능– 런쳐가설치되어있어야메뉴가보임

• 단, GitHub 버전의풀소스코드사용시에혹시나그버전이안보이는경우가있을수있음이경우에그엔진의Engine\Binaries\Win64\UnrealVersionSelector-Win64-Shipping.exe실행하면등록가능

UNREAL SUMMIT 2015

안드로이드개발준비

• VS 빌드시에 APK까지만들어져서네이티브코드를포함한Java까지모두빌드됨

• “실행”을눌러서디바이스에설치시에코드빌드가필요한경우빌드가자동으로수행되어서새로운 APK가생성되고그버전이설치됨

5

UNREAL SUMMIT 2015

iOS개발준비

• iTunes 설치필수

• iOS Developer Program 가입필수!

• 첫 iOS 개발이라면 Key와 Certificate가필요– Mac이있는경우 Keychain Access 이용

– Mac이없는경우 PC에서는 UE4의 iPhone Packager 이용Unreal Engine\4.7\Engine\Binaries\DotNET\IOS\iPhonePackager.exe

UNREAL SUMMIT 2015

iOS 개발준비

• iPhonePackager나 Mac에서 Keychain Access로만든 CSR를통해Mobileprovision과 Certificate 그리고 Key 파일준비

• 개발설정에필요한파일들임포트– 프로젝트 세팅 -> iOS

• 여기까지하면 “블루프린트” 기반의게임은바로iOS 디바이스에설치가능 (물론 PC 에서도 Mac이없이가능)

6

UNREAL SUMMIT 2015

iOS 개발준비

• 그런데만약네이티브코드를수정했다면?

• PC만이용한개발은불가능. Mac이한대는꼭필요

• 단, Mac 한대를이용해여러명의프로그래머가 PC에서작업가능

• UnrealRemoteTool(디폴트) 또는 SSH/Rsync (4.7에서옵션)을이용한원격빌드를통해서 VS에서 iOS 빌드가능!

• SSH/Rsync는 4.7에서는기본으로꺼져있고, Engine 폴더가있는곳과같은곳에프로젝트폴더가있지않으면빌드가안됨– 4.8에서는 이문제가해결될 예정

– 현재있는이슈들이 해결이 잘되면 UnrealRemoteTool을이시스템이 대체할예정

– 현재로서는 UnrealRemoteTool 추천

UNREAL SUMMIT 2015

iOS 개발준비

• UnrealRemoteTool 설정방법– Mac 설정

• 터미널에서루트폴더가서

sudo mkdir /UE4

sudo chmod 777 /UE4

를실행해서 UE4 폴더를만들어둠

• Engine/Build/IOS/에 있는 UnrealRemoteTool파일을 Mac에가져옴

• 터미널에서 chmod a+x UnrealRemoteTool실행해서실행가능하게함

• 터미널이나 ./UnrealRemoteTool이나 Finder에서더블클릭으로실행

7

UNREAL SUMMIT 2015

iOS 개발준비

– PC 설정

• 프로젝트설정에 iOS에 Remote Server Name에Mac이름또는 Mac IP주소설정

UNREAL SUMMIT 2015

iOS 개발준비

• 설정이완료되면 VS 에서 Solution Platforms 에서 iOS 선택해서빌드가능!– 참고로 iOS의경우소스코드빌드를위해서는 GitHub 버전의풀소스코드가필수!

• Mac에서개발을할때알아두면좋을사항들– GitHub버전을받았을경우 Xcode프로젝트를만드는것은

GenerateProjectFiles.command

– 런쳐버전의네이티브코드프로젝트라면 uproject선택후에서비스에 Generate Xcode Project 이용

– 프로젝트의엔진버전을다른엔진으로변경하고싶다면Switch Unreal Engine Version이용

8

UNREAL SUMMIT 2015

iOS개발 -디버깅

• Xcode를통한완벽한네이티브코드디버깅가능!

• 단, Xcode에서빌드를했다고컨텐츠가쿠킹되어디바이스에준비되어있는것음아님

• 그렇기때문에디버깅전에우선에디터에 “실행”이나프로젝트런처등을통해서디바이스컨텐츠설치를하는것이필요

• 그러나우리에게는 on the fly(?)가있기때문에꼭그런것은아님!!ㅎㅎ– 이건뒤에 on the fly 항목설명에서

UNREAL SUMMIT 2015

iOS개발 -디버깅

• 디바이스에컨텐츠가전부복사된상태에서 Xcode에서 scheme 중에

“게임프로젝트 – IOS”를선택하고,연결된디바이스선택

• 클릭으로벌레잡기시작!

9

UNREAL SUMMIT 2015

iOS개발

• Windows PC에서 iOS로그가져오기– 참고로크래쉬시에디바이스에로그가전부출력이안되는이슈가있고, 4.8에서수정됨

– iFunBox나기타 iOS디바이스파일접근가능한프로그램을통해서앱에들어가면Documents폴더아래에게임프로젝트에 Saved폴더아래 Log폴더에서로그가있고그걸가져올수있음

– 그게아니면 iPhonePackager를사용해서가능

– Advanced Tools에 Other Development Tools…선택

UNREAL SUMMIT 2015

iOS개발

– Backup Documents…선택하고설치한 .ipa파일선택

– 그러면해당 .ipa에내용들을게임프로젝트폴더\IOS_Backups\iOS디바이스이름폴더아래에내용들이백업이됨

– 게임프로젝트\Saved\Logs 가면로그확인가능!

• Mac에서로그확인– 일단에디터에 “실행”으로실행하면출력로그에로그가출력됨

– iFunBox나기타툴로도Windows와같은방식으로로그파일가져올수있음

– 실시간로그은 iOS Console이라는프로그램을다운받아서이용하는것을추천

10

UNREAL SUMMIT 2015

모바일개발환경설정

• 이렇게안드로이드/iOS 개발설정이완료되면 “실행”을통해서맥/PC에서디바이스로설치가능!

UNREAL SUMMIT 2015

“실행” 버튼살펴보기

11

UNREAL SUMMIT 2015

“실행” 버튼살펴보기

• “실행” 버튼을클릭하면타겟플랫폼과설정된값을가지고Unreal Engine 4 AutomationTool(UAT)을실행하게됨– PC: RunUAT.bat, Mac: RunUAT.command의배치파일을실행하고,결국은 Binaries\DotNET\AutomationTool.exe 을실행

• 그래서 AutomationTool이 쿠킹/빌드/설치/실행의 모든과정을설정된값으로알아서진행

• “실행” 실행시에 “출력로그표시” 를선택해서출력로그를표시하게하는것을추천 – 실패시에문제점바로파악을위해

UNREAL SUMMIT 2015

“실행” 버튼살펴보기

• “실행” 실패시에출력로그를놓쳤다면창 -> 개발자툴 -> 출력로그선택을통해서확인가능

12

UNREAL SUMMIT 2015

“실행” 버튼살펴보기

• “실행” 버튼을통해쿠킹된 uasset들이디바이스로폴더구조대로복사됨– 예) SoulDungeon 이라는프로젝트라면 안드로이드 디바이스에

SoulDungeon이라는 폴더가 생기고그아래에 Engine, SoulDungeon등 쿠킹된 파일들이복사되고, 그걸읽어서 실행됨

• “실행” 버튼으로실행시에열려있는현재레벨과프로젝트세팅에맵 & 모드에설정된 Game Default Map과 Server Default Map만쿠킹되어서디바이스복사됨

• 즉, 혹시나게임내에서그이외의맵을로딩하는경우로딩이안되고, 찾지못해서맵로딩이실패할경우자동으로 Game Default Map을열게됨

UNREAL SUMMIT 2015

“실행” 버튼살펴보기

• 그럼쿠킹되어복사된현재맵, Game Default Map, Server Default Map 중에기본적으로에디터에열어둔현재맵이디바이스에서실행되는이유는바로 UE4CommandLine.txt때문

• 즉, 어셋들이복사된디바이스에게임프로젝트폴더에가보면 UE4CommandLine.txt 파일이있고, 열어보면

../../../SoulDungeon/SoulDungeon.uproject /Game/Maps/Example_Map

이런방식으로실행되는기본맵이설정되어있음

• 즉, 이맵이름만이미쿠킹되어복사된다른맵으로바꿔서저장하면따로다시설치없이도기본실행되는맵을변경가능

13

UNREAL SUMMIT 2015

“실행” 버튼살펴보기

• 기본적으로에디터는 Development Editor 빌드이기에디바이스에실행되는게임바이너리도 Development 사용– GitHub버전등을받아서 Debug Editor로빌드한경우는 Debug 바이너리가사용됨

• 그래서 “실행”버튼은쿠킹/빌드/설치/실행

등의모든일을한번에알아서알아서하는유용한기능

• 여기서중요하고,사실시간이많이걸리는것인바로쿠킹!

UNREAL SUMMIT 2015

쿠킹(Cooking)

• “실행”시에자동으로수행되는쿠킹과쿠킹된어셋이란?

• 쿠킹– 기본적은 uasset들은실제배포 게임에서는 필요없는 원본리소스와 기타다른정보를포함하고 있음

– 이런 uasset을실제실행시에만 필요한데이터만 가지고 있도록요리(?)하는작업

– 타겟플랫폼에 따라서 쿠킹된 uasset들은게임프로젝트\Saved\Cooked\타겟플랫폼폴더에 생성됨

• 참고로 “실행”으로 안드로이드 디바이스 선택시에 해당디바이스가 지원하는 가장좋은텍스쳐 포맷이선택되어서 타겟플랫폼이 됨

– 예) 퀄컴 AP의경우 ATC텍스쳐 포맷이선택되어 타겟플랫폼음 Android_ATC

14

UNREAL SUMMIT 2015

쿠킹(Cooking)

• 쿠킹에서중요한요소는바로 Derived Data Cache(DDC)

• 기본적으로 DDC는게임프로젝트\DerivedDataCache폴더에생성

• 쿠킹에서중요한이유가바로모바일디바이스타겟으로쿠킹시에시간을많이쓰는텍스쳐포맷변환이나기타원본리소스가아닌타겟플랫폼을위해변환된데이터는이 DDC에저장됨

• 즉, 이 DDC를팀원들사이에공유해서쓰면쿠킹시간이나기타작업시간을줄일수있음

UNREAL SUMMIT 2015

쿠킹(Cooking)

• DDC 공유하기– 모든팀원들이접근가능한공유폴더를만들고, 그위치를 DDC 저장공간으로사용하면됨

– DefaultEngine.ini에[DerivedDataBackendGraph]Shared=(Type=FileSystem, ReadOnly=false, Clean=false, Flush=false, DeleteUnused=true, UnusedFileAge=19, FoldersToClean=-1, Path=\\mystudio.net\DDC, EnvPathOverride=UE-SharedDataCachePath)

– 또는환경변수설정UE-SharedDataCachePath=\\mystudio.net\DDC

– 자세한내용은https://docs.unrealengine.com/latest/KOR/Engine/Basics/DerivedDataCache/index.html

15

UNREAL SUMMIT 2015

프로젝트런쳐

UNREAL SUMMIT 2015

프로젝트런쳐

• “실행”으로하는방법은현재레벨과몇가지기본레벨만쿠킹및복사되기에테스트에부적합한경우가있음

• 원하는레벨들을전부쿠킹해서디바이스에설치하거나좀더추가적인세부설정을원할경우편리하게쓸수있는것이프로젝트런쳐

16

UNREAL SUMMIT 2015

프로젝트런쳐

• 실행 -> 프로젝트런쳐혹은창 -> 프로젝트런쳐로실행가능

UNREAL SUMMIT 2015

프로젝트런쳐

17

UNREAL SUMMIT 2015

프로젝트런쳐

• 상단에는기본적으로지원하는플랫폼들에대한바로실행가능한기본옵션들이표시됨– 오른쪽 상단에 “고급” 선택시에 몇가지설정은변경 가능

• 하지만이기본설정으로실행시에는모든맵들을쿠킹하게되어서원하는맵만쿠킹하는것은아니기때문에테스트에시간이많이소요

UNREAL SUMMIT 2015

프로젝트런쳐

• 우리가원하는것을하기위해서는바로하단에“커스텀실행프로파일” 을사용하면가능

• 오른쪽상단에 + 표시를클릭하면새로운커스텀한프로파일추가가능

18

UNREAL SUMMIT 2015

프로젝트런쳐

• 프로젝트카테고리에서사용할프로젝트선택

• 빌드여부선택– 빌드는 미리했고, 컨텐츠 위주의 테스트라면 선택하지 않는 것이좋음

– 코드수정및테스트라면 선택

• 코드빌드여부에 상관없이 APK는다시만들어질수있음

UNREAL SUMMIT 2015

프로젝트런쳐

• 일단쿠킹옵션에서 By the book을선택

• 선택시추가선택창이나오고, 쿠킹된플랫폼에서현재디바이스에적합한플랫폼선택– Android 선택은절대비추! 모든안드로이드용텍스쳐쿠킹및복사됨

• 쿠킹된컬쳐는기본을그대로사용하고추가로컬라이제이션테스트시에는원하는언어들도추가로선택

19

UNREAL SUMMIT 2015

프로젝트런쳐

• 이부분은바로우리가필요한부분, 쿠킹하기원하는맵들만선택

UNREAL SUMMIT 2015

프로젝트런쳐

• 추가적인기본설정의경우기본설정으로하면되고, “변경된콘텐츠만쿠킹” 만꼭체크하시면됨

20

UNREAL SUMMIT 2015

프로젝트런쳐

• 패키지는패키징않음

• 디플로이는 “디바이스에복사” 옵션을선택하고, 설치해서실행할연결된디바이스를선택

• 실행은 “기본룰사용”

UNREAL SUMMIT 2015

프로젝트런쳐

• 이제오른쪽상단에 “뒤로”를선택해서세팅을완료– 추가적으로상단에 New Profile 0 으로된이름을선택해서이름을변경해도좋음

• 이렇게만든프로파일을실행하면선택됨맵만쿠킹되어서디바이스에복사되어서테스트가능

• 단, 기본실행되는맵은 “실행”처럼 선택되는것은아니므로프로젝트세팅에 “맵 & 모드” 에서 Game Default Map을기본실행되기원하는맵을선택해서실행

21

UNREAL SUMMIT 2015

프로젝트런쳐

• 아까쿠킹에서그냥넘어간 On the fly 는무엇?

• 쿠킹된컨텐츠를디바이스에복사하지않고, PC에서스트리밍해서로딩하는기능!

• 여러가지변수에따라서 By the book이더좋을수있지만게임실행시에필요한컨텐츠를미리쿠킹할필요가없기때문에유용한기능

• 스트리밍으로로딩하는것이기때문에현재사용하는 PC와디바이스가같은네트워크환경안에있어서함

UNREAL SUMMIT 2015

프로젝트런쳐

• 디바이스에서실행한앱에서요청한컨텐츠를스트리밍으로로딩하는방식이기에쿠킹에서 On the fly 선택시에따로쿠킹맵선택등은존재하지않음

• On the fly 선택시디플로이옵션은파일서버로선택하고, 실행할디바이스선택

22

UNREAL SUMMIT 2015

프로젝트런쳐

• 이렇게설정하고, 실행하면파일스트리밍서버가자동실행되고,디바이스에복사된 UE4CommandLine.txt에 PC의 IP가자동으로등록되어서디바이스에서앱이실행되어파일서버를찾음

UNREAL SUMMIT 2015

프로젝트런쳐

• 그렇다면컨텐츠만수정된경우 “실행”이나프로젝트런쳐이용으로 APK 재설치하는시간을아껴서바뀐컨텐츠만스트리밍해서테스트하면좋지않을까?

• 명령어실행으로파일서버만실행가능!– Engine\Binaries\Win64에 UE4Editor.exe 또는 UE4Editor-cmd.exe 로

– 예를들면UE4Editor-cmd.exe “D:\Dev\TestProject\TestProject.uproject” -run=Cook -targetplatform=Android_ATC -cookonthefly

– 이렇게UE4Editor-cmd.exe .uproject전체경로 -run-Cook -targetplatform=타겟플랫폼 -cookonthefly조건으로실행

• 이렇게하면컨텐츠수정시에파일서버실행후디바이스에서바로앱을다시실행하면새로운컨텐츠적용테스트바로가능!

23

UNREAL SUMMIT 2015

프로젝트런쳐

• On the fly 파일서버를이용한 iOS디버깅– 파일서버실행

open UE4Editor.app --args “프로젝트파일전체경로” -run=cook -targetplatform=ios -cookonthefly

– Xcode 에서 scheme 중에 “게임프로젝트 – IOS”를선택하고, 연결된 디바이스 선택

– Alt+ 클릭으로 scheme 관리창을열고, Arguments 항목선택 +로Arguments 추가하고

-filehostip=맥IP주소추가

UNREAL SUMMIT 2015

프로젝트런쳐

• 에디터안에있는프로젝트런쳐는독립실행가능 UnrealFrontend– Engine\Binaries\Win64\UnrealFrontend.exe

24

UNREAL SUMMIT 2015

패키징프로젝트 -배포버전제작

UNREAL SUMMIT 2015

패키지프로젝트

• 디바이스에설치가능하고, 배포가능한버전을만드는다른방법으로패키징옵션이존재 –패키지프로젝트

25

UNREAL SUMMIT 2015

패키지프로젝트

• 패키지프로젝트는모든맵들을쿠킹해서포함하는것이기본옵션– 4.8에서는 쿠킹하는맵들관련선택옵션이프로젝트세팅에추가될예정

• 원하는맵들만패키징하기를원하시면프로젝트런쳐를통해서가능

• 패키지를 “로컬에패키지 & 저장”을선택하고, 디플로이를 “디폴로이않음”으로선택하고실행하면패키징됨– 안드로이드의경우프로젝트\Binaries\Android 폴더안에생성됨

UNREAL SUMMIT 2015

패키지프로젝트

• 프로젝트세팅에패키징옵션의내용이바로이패키징시에사용되는옵션들– 참고로 4.7에서는패키징을한번한후에는생성된 Pak이나 OBB 파일이지워지지않아서 “실행”등으로설치시에문제가생김그래서수동으로 Pak 파일과 OBB 파일을지원주셔야함예)게임프로젝트\Saved\StagedBuilds\Android_ATC\게임프로젝트\Content\Paks게임프로젝트\ Saved\StagedBuilds에있는 OBB 파일

26

UNREAL SUMMIT 2015

패키지프로젝트

• iOS배표용 ipa만들기– 애플개발자페이지에서 Distribution용 MobileProvision과 Certificate 파일을만들어서다운로드

– 프로젝트세팅 -> iOS에서 Distribution용 MobileProvision과 Certificate파일들임포트

– 이때중요한것은번들식별자(Bundle Identifier)가 distribution용과잘매치되어있는지

UNREAL SUMMIT 2015

패키지프로젝트

• 배포용안드로이드 APK 만들기– Release모드로 Signing 되어야함

– Keystore만들기

• http://developer.android.com/tools/publishing/app-signing.html에 Signing Your App Manually 항목을참고

• keytool을이용해서 keystore파일작성

– 만들어진 Keystore파일을프로젝트\Build\Android

폴더에복사

27

UNREAL SUMMIT 2015

패키지프로젝트

• Release모드로 Signing 된앱만들기– 프로젝트세팅에안드로이드 -> Distribution Signing 부분채우기

UNREAL SUMMIT 2015

패키지프로젝트

• Release모드로 Signing 된 APK/Distribution용 ipa만들기– 프로젝트세팅에패키징에 For Distribution 체크

– 참고로기본적으로는 Full Rebuild가켜져있어서패키징시에무조건바이너리빌드를다시하니체크를해제하는것도좋은방법

– 이조건으로패키징을하면구글/애플 제출용실행파일완성!

28

UNREAL SUMMIT 2015

감사합니다!

Q/A