Share via


게임 스트리밍 사용자 지정 해상도 모범 사례

사용자 지정 해상도를 사용하면 스트리밍할 때 타이틀을 다양한 해상도와 종횡비로 렌더링할 수 있습니다. 이 문서에서는 최상의 사용 방법에 대한 Microsoft의 권장 사항을 간략하게 설명합니다.

최상의 해상도 선택

플레이어는 전화, 태블릿, PC 및 TV를 포함한 다양한 장치로 게임을 스트리밍합니다. 저해상도 디스플레이부터 고해상도 디스플레이까지, 울트라 와이드스크린 32:9 모니터부터 정사각형 태블릿, 세로형 장치까지 다양합니다. 플레이어는 게임이 레터박스 없이 전체 화면이나 창을 채우는 것을 선호합니다. 가능한 경우 크기 조정 없이 클라이언트의 디스플레이와 일치하는 경우 그림도 더 선명합니다. 마지막으로 클라이언트에 대한 이상적인 해상도는 하드웨어 및 네트워크 조건에 따라 달라질 수 있습니다.

XGameStreamingGetDisplayDetails API는 이러한 모든 요소를 ​​고려하여 "선호하는" 너비와 높이를 반환합니다. 이상적인 조건에서 "선호하는" 해상도는 클라이언트 화면의 해상도 및 가로 세로 비율이지만 해당 해상도가 불가능한 경우 XGameStreamingGetDisplayDetails(으)로 전달된 매개 변수 및 스트림의 제약 조건에 가장 가까운 해상도 및 가로 세로 비율이 됩니다.

게임에서 모든 해상도를 렌더링할 수 있는 경우 XGameStreamingSetResolution을 호출하고 렌더링 해상도를 기본 해상도로 설정하면 최상의 결과를 얻을 수 있습니다.

많은 게임이 고정된 해상도 집합을 위해 설계되었습니다. 예를 들어 게임에 여러 해상도를 지원하는 PC 버전이 있을 수 있습니다. 이는 일반적으로 Xbox에서 해상도가 하나로 좁혀지더라도 마찬가지입니다. 이 경우 Microsoft는 기본 해상도를 지침으로 사용하여 게임에서 지원하는 가장 가까운 해상도를 선택할 것을 권장합니다. 그렇게 하는 좋은 방법 중 하나는 게임이 클라이언트 화면을 최대한 많이 채울 수 있도록 기본 화면 비율과 가장 근접하게 일치하는 항목을 찾는 것입니다. XGameStreamingDisplayDetails 구조에는 설정할 수 있는 해상도 제한이 포함되어 있습니다. 또한 현재 스트림이 비표준 해상도와 현재 크기 조정을 지원하는지 여부를 알려주는 플래그도 포함되어 있습니다.

자동으로 해상도를 선택하는 것이 가능하지 않지만 게임의 PC 버전에 해상도 선택기가 포함되어 있는 경우 XGameStreamingDisplayDetails의 제약 조건 내에 해당 해상도가 맞는 경우 플레이어가 해상도를 선택하도록 허용할 수도 있습니다.

업데이트 수신 대기

스트림 중에 최상의 해상도는 여러 가지 이유로 변경될 수 있습니다.

  1. 클라우드 서버에서는 스트리밍 클라이언트가 연결되기 전에 게임이 실행되므로 원하는 해상도를 즉시 사용할 수 없습니다.
  2. 휴대폰이나 태블릿을 사용하는 플레이어는 장치를 세로와 가로로 회전할 수 있습니다.
  3. PC의 플레이어는 스트리밍 클라이언트 창의 크기를 조정하거나 전체 화면을 토글할 수 있습니다.
  4. 네트워크 조건은 다른 스트림 해상도를 요구하도록 변경될 수 있습니다.

변경 내용이 발생할 때 최상의 스트리밍 환경을 제공하려면 XGameStreamingRegisterConnectionStateChanged를 사용하여 새 클라이언트를 감지하고 XGameStreamingRegisterClientPropertiesChanged(XGameStreamingClientProperty::DisplayDetails 속성 확인)를 사용하여 클라이언트의 기본 해상도 변경 시기를 감지합니다. 이러한 이벤트가 발생하면 새로운 XGameStreamingDisplayDetails과(와) 일치하도록 해상도를 변경하세요.

참고 항목

일치하는 해결 방법을 얻으려면 클라우드 서버의 플레이어에 대한 초기 클라이언트 연결 이벤트를 처리하는 것이 최소한 매우 중요합니다.

변경 제한 사항

스트림 해상도 변경은 플레이어에게 짧은 플래시로 표시됩니다(예: PC에서 게임 해상도를 변경하는 모습). 중단을 최소화하기 위해 Microsoft는 위의 이벤트에 대한 응답으로만 해상도를 변경하는 것이 좋습니다.

플레이어 경험을 제외하고 비디오 인코더가 게임 해상도와 일치할 시간이 없을 수 있으므로 스트림 해상도를 200ms마다 한 번 이상 변경하지 않는 것이 좋습니다. 위의 이벤트는 200ms마다 한 번 이상 실행되지 않습니다.

XGameStreamingGetDisplayDetails에 대한 매개 변수 설정

XGameStreamingGetDisplayDetails API에는 게임 제약 조건에 대한 매개 변수가 포함되어 있습니다. 올바르게 설정되면 API는 해당 제약 조건에 맞는 최상의 해상도를 계산합니다. 매개 변수는 다음과 같습니다.

maxSupportedPixels: 게임이 초과해서는 안 되는 총 픽셀 수입니다. 성능을 유지하기 위한 일반적인 원칙은 게임이 현재 시스템 장치 유형에서 일반적으로 렌더링하는 너비와 높이를 곱하는 것입니다. 예를 들어 게임이 Xbox Series S에서 일반적으로 1440p를 렌더링하는 경우 해당 장치 유형에서 maxSupportedPixels=2560*1440=3686400을 전달합니다.

widestSupportedAspectRatiotallestSupportedAspectRatio: 게임의 가로 세로 비율 제한입니다. 테스트한 가장 넓고 높은 가로 세로 비율로 설정하면 모든 장치에서 게임이 잘 보일 것입니다.

터치 입력 및 사용자 지정 해상도

XGameStreamingSetResolution을(를) 통해 해상도를 변경하면 터치 입력 좌표 공간이 새 가로 세로 비율과 일치하도록 변경됩니다. GameInputTouchState은(는) 정규화된 0-1 범위의 터치 좌표를 포함합니다. 해상도를 변경할 때 해당 범위는 동일하게 유지되지만 이제 새 해상도를 나타냅니다. 예를 들어, 1920x1080 게임에서 사용자 정의 해상도가 없는 경우 (0.5, 0.5)에서의 터치는 (960, 540)을 나타내지만 XGameStreamingSetResolution을(를) 호출하여 1600x800으로 변경하는 것은 (0.5, 0.5)에서의 터치가 (800, 400)을 나타냄을 의미합니다. GameInputTouchSensorInfo의 해상도 및 가로 세로 비율 값은 해상도를 변경할 때 업데이트되지 않습니다. 터치 위치를 계산하기 위해 GameInputTouchSensorInfo이(가) 아니라 XGameStreamingSetResolution에 전달한 값을 사용하세요.

안전 영역

많은 장치에는 부분적으로 화면이 막혀 있고, 노치, 둥근 모서리 및 겹쳐진 스와이프 막대로 인해 차단되어 있습니다. XGameStreamingDisplayDetails 화면 가운데에 있는 방해받지 않는 사각형을 설명하는 safeArea 사각형이 있습니다. 중요한 내용이 보이도록 하려면 이 직사각형을 제목 보호 공간의 경계로 처리하세요. 외부 영역이 표시될 수 있으며 여전히 콘텐츠를 포함해야 하지만 중요한 UI 요소는 포함하지 않습니다.

DirectCapture

최고의 스트리밍 비디오 경험은 게임이 사용자 지정 해상도와 스트리밍 대기 시간을 줄이는 DirectCapture를 결합할 때입니다. DirectCapture의 이점을 게임에 적용하는 방법에 대한 자세한 내용은 DirectCapture 개요를 참조하세요.

참고 항목

사용자 지정 해상도 개요

사용자 지정 해결을 사용한 테스트(NDA 항목)권한 부여 필요

DirectCapture 개요