TV 게임 빌드

텔레비전 화면에서는 모바일 게임에 대해 생소하게 생각할 수 있는 여러 가지 고려사항이 있음 있습니다. 이러한 영역에는 큰 크기, 컨트롤 체계, 모든 플레이어가 있습니다.

디스플레이

TV 화면용 게임을 개발할 때 염두에 두어야 할 두 가지 주요 사항은 게임에 가로 모드 방향을 설정하고 짧은 지연 시간을 지원합니다.

가로 디스플레이 지원

TV는 항상 가로로 되었습니다. 회전할 수 없으므로 세로 방향이 없습니다. 항상 디자인 TV 게임이 가로 모드로 표시됩니다.

자동 짧은 지연 시간 모드

특정 디스플레이는 그래픽 후처리를 수행할 수 있습니다. 이러한 후처리는 그래픽을 개선합니다. 지연 시간이 늘어날 수 있습니다 HDMI 2.1을 지원하는 최신 디스플레이에서는 자동 낮음 기능이 있습니다. 지연 시간 모드 (ALLM)입니다. 이 모드는 이 후처리를 사용 중지하여 지연 시간을 최소화합니다. 대상 ALLM에 대한 자세한 내용은 HDMI 2.1 사양 기타 디스플레이는 유사한 동작의 게임 모드를 지원할 수 있습니다.

Android 11 이상에서는 창에서 자동 짧은 지연 시간 모드 또는 게임을 요청할 수 있음 가능한 경우 최소한의 후처리를 요청하여 모드가 사용됩니다. 특히 짧은 지연 시간이 더 중요한 게임 및 화상 회의 애플리케이션에 유용합니다. 만들 수도 있습니다.

최소 후처리를 사용 설정하거나 중지하려면 다음을 호출합니다. Window.setPreferMinimalPostProcessing(), 창의 preferMinimalPostProcessing 속성을 true로 설정합니다. 일부 디스플레이는 최소 후처리를 지원하지 않습니다. 포드가 지원하는 경우 Display.isMinimalPostProcessingSupported() 메서드를 사용하여 지도 가장자리에 패딩을 추가할 수 있습니다.

입력 기기

TV에는 터치 인터페이스가 없으므로 컨트롤을 올바르게 설정하고 플레이어가 이를 직관적이고 재미있게 사용하도록 해야 합니다. 컨트롤러 처리 또한 여러 개의 포드를 추적하는 것과 같은 주의를 기울여야 하는 연결 해제를 적절하게 처리할 수 있어야 합니다. 게임을 포함한 모든 TV 앱은 일관성 있게 사용할 수 있습니다 TV 관리 읽기 컨트롤러를 참조하세요. 특정 용도의 게임 컨트롤러 처리 게임용 TV 컨트롤러 사용에 관한 정보

키보드 레이아웃

Android 13 (API 수준 33) 이상에서는 다음을 사용하여 키보드 레이아웃을 결정할 수 있습니다. getKeyCodeForKeyLocation() 예를 들어 게임에서 WASD 키를 사용한 이동을 지원하지만 AZERTY 키보드가 있습니다. 키 코드는 를 호출하는 것이 좋습니다.

Kotlin

val inputManager: InputManager? = requireActivity().getSystemService()

inputManager?.inputDeviceIds?.map { inputManager.getInputDevice(it) }
    ?.firstOrNull { it.keyboardType == InputDevice.KEYBOARD_TYPE_ALPHABETIC }
    ?.let { inputDevice ->
        keyUp = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_W)
        keyLeft = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_A)
        keyDown = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_S)
        keyRight = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_D)
    }

자바

InputManager inputManager = requireActivity().getSystemService(InputManager.class);
InputDevice inputDevice = Arrays.stream(inputManager.getInputDeviceIds())
        .mapToObj(inputManager::getInputDevice)
        .filter( device -> device.getKeyboardType() == InputDevice.KEYBOARD_TYPE_ALPHABETIC)
        .filter(Objects::nonNull)
        .findFirst()
        .orElse(null);
if (inputDevice != null) {
    keyUp = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_W);
    keyLeft = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_A);
    keyDown = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_S);
    keyRight = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_D);
}

이 예에서 AZERTY 키보드의 경우 keyUp은 다음과 같이 설정됩니다. KeyEvent.KEYCODE_Z, keyLeftKeyEvent.KEYCODE_Q로 설정합니다. keyDownkeyRightKeyEvent.KEYCODE_S로 설정되어 있습니다. 각각 KeyEvent.KEYCODE_D입니다. 이제 다음을 위한 키 이벤트 핸들러를 만들 수 있습니다. 예상 동작을 구현할 수 있습니다.

매니페스트

게임이 Android manifest에 포함해야 하는 몇 가지 특수 항목이 있습니다.

홈 화면에 게임 표시

Android TV 홈 화면에는 게임이 일반 앱과 별도의 행에 표시됩니다. 게임을 게임 목록에 표시하려면 <ph type="x-smartling-placeholder"></ph> android:isGame 속성을 앱 매니페스트에서 "true"로 설정 <application> 태그입니다. 예를 들면 다음과 같습니다.

<application
    ...
    android:isGame="true"
    ...
>

게임 컨트롤러 지원 선언

TV 기기 사용자를 위해 게임 컨트롤러를 사용 가능하게 하거나 활성화하지 못할 수 있습니다. 제대로 하기 위해 게임이 게임 컨트롤러를 지원한다는 것을 사용자에게 알리려면 다음 항목을 앱 매니페스트에

  <uses-feature android:name="android.hardware.gamepad" android:required="false"/>

참고: android:hardware:gamepad 지원을 지정할 때 android:required 속성을 "true"로 설정합니다. 이렇게 하면 사용자가 다음 작업을 수행할 수 없습니다. TV 기기에 앱을 설치해야 합니다.

매니페스트 항목에 관한 자세한 내용은 다음을 참고하세요. 앱 매니페스트.

Google Play 게임 서비스

게임이 Google Play 게임즈 서비스를 통합한다면 명심해야 할 몇 가지 업적, 로그인 및 게임 저장과 관련된 고려사항

업적

게임에는 5개 이상의 획득 가능한 업적이 포함되어야 합니다. 사용자만 게임플레이를 제어함 업적을 달성할 수 있어야 합니다. 자세한 내용은 자세한 내용은 Android에서의 업적을 참고하세요.

로그인

게임은 시작 시 사용자를 로그인하려고 시도해야 합니다. 플레이어가 여러 번 로그인을 거부하는 경우 게임에서 묻기만 하면 됩니다. 로그인 구현하기에서 로그인에 대해 자세히 알아보세요. Android

저장

Google Play 서비스 저장된 게임을 사용하여 저장 있습니다. 게임은 다음과 같이 게임 저장을 특정 Google 계정에 바인딩해야 합니다. 플레이어가 핸드셋을 사용하든 TV를 사용하든, 게임은 동일한 사용자 계정에서 게임 저장 정보를 가져올 수 있어야 합니다.

또한 플레이어가 로컬에서 삭제할 수 있는 옵션을 게임 UI에 제공해야 합니다. 클라우드 저장 데이터로 활용할 수 있습니다 게임의 Settings 화면에 이 옵션을 배치할 수 있습니다. 대상 Play 서비스를 사용하여 저장된 게임을 구현하는 방법에 관한 자세한 내용은 Android의 저장된 게임을 참고하세요.

종료

사용자가 게임을 정상적으로 종료할 수 있도록 하는 일관되고 명확한 UI 요소를 제공하세요. 이 요소에 액세스할 수 있어야 합니다. 이렇게 해야 하는 대신 홈 버튼에서 종료를 제공합니다. 여러 컨트롤러에서 일관되거나 안정적이지 않기 때문입니다.

Android TV용 게임에서 웹 탐색을 사용 설정하지 않습니다. Android TV는 웹브라우저를 지원하지 않습니다.

참고: 로그인에 WebView 클래스를 사용하여 다음을 수행할 수 있습니다. 소셜 미디어 서비스입니다.

네트워킹

최적의 성능을 제공하기 위해 게임에 더 많은 대역폭이 필요한 경우가 많으며 많은 사용자가 이를 선호합니다. 이더넷에서 Wi-Fi로 연결되도록 해야 합니다. 앱에서 Wi-Fi와 이더넷을 모두 확인해야 합니다. 연결을 설정할 수 있습니다 TV 전용 앱인 경우 3G/LTE 서비스를 확인할 필요가 없습니다. 살펴보겠습니다