Version: 2017.1
Apple TV
WebGL

Apple TV용 게임 제작(Building games for Apple TV)

Apple TV 플랫폼은 iOS 플랫폼을 기반으로 하며 동시에 게임 개발자를 위한 새로운 패러다임과 도전과제를 제시합니다. 이미 기존에 존재하는 모바일 게임을 tvOS로 배포하는 작업은 단순히 클릭만 하면 가능하지만, 때로는 대형 TV 화면에서 플레이하거나 새 입력 컨트롤로 조작할 때 원활히 동작하기 위해서는 게임 콘텐츠를 tvOS에 맞게 다듬어야 합니다. 이 매뉴얼 페이지는 일차적으로 iOS에서 tvOS로의 전환에 대해 설명하는 것을 목표로 합니다.

선행 조건(Prerequisites)

tvOS용 개발을 위해서는 다음이 필요합니다.

  • 4세대 Apple TV 장치(USB C <-> USB 3.0 케이블도 잊지 마십시오. 판매 패키지에 포함되어 있지 않습니다.)
  • Xcode 7.1 이상 버전
  • 해당 기기의 권한을 iOS 기기와 동일하게 설정해야 합니다. 권한 설정이 제대로 동작하는지 확인하기 위해 Xcode에서 빈 tvOS 앱을 생성해 볼 것을 권장합니다.

시작 전 알아야 사항

  • 다수의 iOS 플러그인은 iOS 프레임워크의 서브셋만을 지원하기 때문에 Apple TV와 호환되지 않습니다. 권장하는 방식은 게임 제작 시 Apple TV를 이식할 별도의 브랜치를 생성하는 것입니다. 또한 플러그인 제공자에게 플러그인 업데이트를 요청하는 것도 잊지 마십시오.
  • 제작한 게임이 디스크 상에서 200MB 이상을 차지할 경우 더 작게 분할하고 On Demand Resources 를 사용해야 합니다. Unity에서의 ODR 지원에 대해서는 아래 온 디맨드 리소스 섹션을 참고해야 합니다. 참고로 tvOS 빌드에 Bitcode가 포함되며, 이로 인해 실행파일에 130MB까지 추가됩니다. 앱 스토어 서버에서 스트리핑될 것이므로 이 추가 크기는 배포 크기에 포함되지 않습니다. Bitcode 크기는 커맨드 라인에서 otool -l을 통해 실행파일의 LLVM 섹션을 분석하여 추정할 수 있습니다.

입력 구현

Apple TV 리모트(Siri 리모트)는 다목적 입력 툴로서 전통적인 메뉴 내비게이션 컨트롤러, 게임 컨트롤러, 자이로 및 가속도 센서, 터치 제스처 장치로 사용됩니다. TV 리모트 입력은 Unity에서 최소한으로 처리되고 대부분은 해당 Unity API로 전송됩니다.

보통 각 게임은 고유의 Apple TV 리모트 입력 기능을 최대한 활용하기 위해 입력 체계를 약간 수정합니다. 일부 게임은 Apple TV 리모트를 전통적인 게임 컨트롤러에 하나의 아날로그 축 및 추가 액션 버튼이 있는 것처럼 다루어 활용하며 가속 센서를 사용하여 방향 조정을 하는 게임도 있습니다. 제작한 게임을 tvOS로 포팅할 때 다양한 입력 체계를 실험해 볼 것을 권장합니다.

다음은 특정 TV 리모트 기능에 하는 방법에 대한 기술 세부사항입니다.

  • 게임에 Made For iOS(MFi) 게임 컨트롤러 지원을 추가하지 않았다면 이 내용을 다루는 MFi 게임 컨트롤러 페이지를 참조하십시오. 여기에 나열된 매핑을 사용하고 커스텀 액션 매핑을 Unity 에디터의 Edit > Project Settings > Input**에서 설정해야 합니다.
  • Apple TV 리모트 터치 영역은 Input.touches(Touch.typeIndirect로 설정되며 Unity GUI에 의해 무시됨)와 일반 조이스틱 입력 API(Input.GetAxis("Horizontal"); 등) 모두에 매핑됩니다.
  • Apple TV 리모트 가속 및 자이로스코프는 각각 Input.accelerationInput.gyro에 매핑됩니다. Input.acceleration은 내부적으로 자이로스코프 API에서 파생되며 일부 불안정한 부분이 있을 수 있습니다. 유감스럽게도 tvOS SDK에는 전용 가속 센서 API가 없습니다. Input.gyro.attitude는 중력 벡터에서 파생되며 따라서 중력 벡터에 평행한 축 주변 회전은 누락되어 있습니다. Input.gyro.rotationRate도 마찬가지입니다.
  • 리모트의 일시정지/재생 버튼은 “X” 버튼에 매핑됩니다(이 버튼은 조이스틱 버튼 15에 매핑됩니다).
  • Apple TV 리모트의 터치 영역 클릭은 “A” 버튼에 매핑됩니다(이 버튼은 조이스틱 버튼 14에 매핑됩니다).
  • 메뉴 버튼은 이 장치에서 특수한 동작을 합니다. 길게 누르면 tvOS 태스크 스위처를 호출합니다. 이 동작은 오버라이드할 수 없습니다. 짧은 탭은 두 가지 방식으로 처리할 수 있습니다.
    • a) 시스템 홈 화면으로 돌아갑니다(UnityEngine.Apple.TV.Remote.allowExitToHometrue인 경우)
    • b) UnityEngine.Apple.TV.Remote.allowExitToHomefalse이면 애플리케이션이 이 탭에 반응하게 합니다(“일시정지” 버튼/조이스틱 버튼 0에 매핑됩니다). 이것이 디폴트 동작입니다.
    • 앱은 게임의 현재 상태에 따라 a)b) 사이에서 전환해야 합니다. 사용자가 상단 메뉴를 사용 중이라면 a) 동작을 활성화하고 게임을 실시간으로 조작 중이라면 b) 동작을 활성화하고 이 버튼을 눌렀을 때 인게임 일시 정지 메뉴를 호출해야 합니다.
  • Apple TV 리모트는 리모트 가장자리를 스와이프했을 때 방향 패드 상/하/좌/우 버튼 입력을 발생시킵니다. 어떻게 매핑되는지는 Unity 매뉴얼의 iOS 게임 컨트롤러 페이지를 참조하십시오.
  • Apple TV 리모트 운영 모드는 전용 API를 통해 컨트롤할 수 있습니다.
    • UnityEngine.Apple.TV.Remote.allowExitToHome
    • UnityEngine.Apple.TV.Remote.allowRemoteRotation
    • UnityEngine.Apple.TV.Remote.reportAbsoluteDpadValues
    • UnityEngine.Apple.TV.Remote.touchesEnabled
  • Apple TV 기기에는 무선 Made For iOS(MFi) 게임 컨트롤러를 두 개 더 연결할 수 있으며, 이렇게 하여 실질적으로 게임 콘솔로 활용할 수 있습니다. iOS MFi 컨트롤러와 동일한 방식으로(위에서 언급한 대로) 게임에서 사용할 수 있으나 Apple TV 리모트만으로도 게임을 여전히 즐길 수 있어야 합니다. 현재 추가할 수 있는 컨트롤러의 개수는 두 개로 제한되어 있으며 입증된 tvOS 시스템 제한입니다.

경고: UnityEngine.Apple.TV.Remote.allowExitToHomefalse이라면 Apple TV 리모트의 “메뉴” 버튼이 조이스틱 버튼 0으로 보고되고 디폴트 Input Manager의 “전송” 가상 버튼이 같은 조이스틱 버튼 0으로 할당되기 때문에 “메뉴” 버튼을 눌렀을 때 UI 요소의 동작을 트리거하게 됩니다. 이 문제를 우회하려면 Input Manager에서 “Submit” 버튼을 제거하거나 수정해야 합니다.

Apple TV 리모트를 통해 Unity GUI 내비게이션 설정

  • Unity 에디터에서 입력 관리자를 엽니다. 가장 처음 나타나는 가상 입력 “전송” 항목을 찾아 확장한 후 “보조 포지티브 버튼(Alt Positive Button)”을 “조이스틱 버튼 14”로 변경해야 합니다.
  • 씬에서 EventSystem 게임 오브젝트를 선택해야 합니다. 인스펙터에서 EventSystem 컴포넌트를 찾고 “First Selected” 필드에 초반 포커스를 받아야 할 UI 게임 오브젝트를 넣으십시오. “Standalone Input Module” 컴포넌트에서 “Force input module” 플래그를 확인해야 할 수도 있습니다.

그러면 에디터 또는 Apple TV 리모트로 실행 중에 키보드를 통해, 또는 기기에서 실행 중에 스와이프와 클릭을 통해 UI를 조작할 수 있습니다.

참고: Apple TV 리모트 내비게이션은 TV 시뮬레이터에서 실행 중에는 작동하지 않습니다.

Xcode 프로젝트에 리더보드 리소스 추가

Game Center는 네이티브 리더보드UI 용 커스텀 비주얼 리소스를 제공하도록 요구합니다. 다음은 Xcode에서 설정하는 방법에 대한 간단한 설명입니다.

  • Xcode 프로젝트에서 Images.xcassets를 선택합니다.
  • 나열된 파일에서 (마우스)오른쪽 버튼 클릭하고 메뉴에서 Game Center > New AppleTV Leaderboard를 선택합니다.
  • 여기에 이미지를 추가합니다.
  • 리더보드를 선택하고 오른쪽 패널에서 Edit View를 선택합니다. 여기서 “Identifier” 필드를 찾아서 리더보드 ID를 여기에 입력합니다.
  • 이렇게 수정한 후 에셋 컴파일에 실패한다면 Xcode의 “Build Settings”에서 “On Demand Resources”를 비활성화해 보십시오.

온 디맨드 리소스 지원 구현

tvOS는 애플리케이션이 확보할 수 있는 디스크 공간 양에 엄격한 요구 사항을 두고 있습니다. 메인 애플리케이션 설치 번들 크기는 200MB를 초과해서는 안 됩니다. 그러나 추가 다운로드 가능 콘텐츠에 대한 제한은 훨씬 큽니다(사용 중 에셋에 대해 최대 2GB, 그리고 총 다운로드 가능 콘텐츠는 최대 20GB). Apple은 tvOS 다운로드 가능 콘텐츠에 대해 온 디맨드 리소스(On Demand Resources, ODR) 사용을 권장하며, 이렇게 하면 tvOS에서 최선의 디스크 공간 관리 전략을 활용할 수 있습니다. Unity는 에셋 번들을 통해 ODR을 지원합니다. ODR 구현 가이드는 전용 블로그포스트 페이지에서 확인하실 수 있습니다.

알려진 제한 사항

  • 온스크린 키보드는 단일 라인 엔트리로 제한되어 있습니다.
  • tvOS 시뮬레이터는 Apple TV 리모트를 게임 컨트롤러로 에뮬레이션하지 않으며, 따라서 이러한 입력의 경우 게임에서 액세스할 수 없습니다.
Apple TV
WebGL