최적의 해상도 선택
플레이어는 휴대폰, 태블릿, PC, TV 등 다양한 기기로 게임을 스트리밍합니다. 이러한 기기는 저해상도부터 고해상도 디스플레이, 32:9 초광폭 모니터부터 정사각형 태블릿, 세로가 긴 세로 방향 기기까지 다양합니다. 플레이어는 레터박스 없이 게임이 화면이나 창 전체를 채우는 것을 선호합니다. 가능한 경우, 클라이언트의 디스플레이와 스케일링 없이 일치할 때 화면이 더 선명해집니다. 마지막으로, 클라이언트에 최적의 해상도는 하드웨어 및 네트워크 조건에 따라 달라질 수 있습니다. XGameStreamingGetDisplayDetails API는 이러한 모든 요소를 고려하여 “선호” 너비와 높이를 반환합니다. 이상적인 조건에서 “선호” 해상도는 클라이언트 화면의 해상도와 화면 비율이지만, 해당 해상도가 불가능한 경우 스트림의 제약과XGameStreamingGetDisplayDetails에 전달된 매개 변수에 맞는 가장 가까운 해상도와 화면 비율이 반환됩니다.
게임이 모든 해상도를 렌더링할 수 있는 경우, XGameStreamingSetResolution을 호출하고 렌더링 해상도를 선호 해상도로 설정하기만 하면 최상의 결과를 얻을 수 있습니다.
많은 게임은 고정된 해상도 집합에 맞춰 설계되어 있습니다. 예를 들어, 게임에 여러 해상도를 지원하는 PC 버전이 있을 수 있지만, XBOX에서는 일반적으로 하나로 좁혀지는 경우가 많습니다. 이러한 경우 Microsoft에서는 선호 해상도를 참조하여 게임이 지원하는 가장 가까운 해상도를 선택할 것을 권장합니다. 좋은 방법 중 하나는 게임이 클라이언트 화면을 최대한 채울 수 있도록 선호 화면 비율에 가장 가까운 값을 찾는 것입니다. XGameStreamingDisplayDetails 구조체에는 설정 가능한 해상도의 한계가 포함되어 있습니다. 또한 현재 스트림이 비표준 해상도 및 표시 배율을 지원하는지 여부를 나타내는 플래그도 포함되어 있습니다.
자동으로 해상도를 선택하는 것이 불가능하지만 게임의 PC 버전에 해상도 선택기가 포함된 경우, 해상도가 XGameStreamingDisplayDetails의 제약 조건에 맞는 한 플레이어가 해상도를 선택할 수 있도록 할 수도 있습니다.
업데이트 수신 대기
스트리밍하는 동안 최적의 해상도는 여러 가지 이유로 변경될 수 있습니다.- 클라우드 서버에서는 스트리밍 클라이언트가 연결되기 전에 게임이 시작되므로 선호 해상도를 즉시 사용할 수 없습니다.
- 휴대폰이나 태블릿을 사용하는 플레이어는 세로 방향과 가로 방향 사이에서 기기를 회전할 수 있습니다.
- PC의 플레이어는 스트리밍 클라이언트 창의 크기를 조정하거나 전체 화면을 전환할 수 있습니다.
- 네트워크 상태가 변경되어 다른 스트림 해상도가 필요할 수 있습니다.
XGameStreamingClientProperty::DisplayDetails 속성 확인)를 사용하여 클라이언트의 선호 해상도가 언제 변경되는지 감지합니다. 이러한 이벤트가 발생하면 새 XGameStreamingDisplayDetails와 일치하도록 해상도를 변경합니다.
최소한, 클라우드 서버의 플레이어에게 일치하는 해상도를 제공하기 위해 초기 클라이언트 연결 이벤트를 처리하는 것이 매우 중요합니다.
변경에 대한 제한 사항
스트림 해상도를 변경하면 플레이어에게 짧은 플래시로 표시됩니다(PC에서 게임 해상도를 변경할 때와 유사). 방해를 최소화하기 위해 Microsoft는 위 이벤트에 대응하는 경우에만 해상도를 변경할 것을 권장합니다. 플레이어 경험 외에도, 스트림 해상도를 200ms에 한 번 이상 변경하지 않는 것이 좋습니다. 비디오 인코더가 게임 해상도에 맞춰지는 시간이 부족해 짧은 시각적 왜곡이 발생할 수 있기 때문입니다. 위 이벤트는 200ms에 한 번 이상 발생하지 않습니다.XGameStreamingGetDisplayDetails의 매개 변수 설정
XGameStreamingGetDisplayDetails API에는 게임의 제약 조건에 대한 매개 변수가 포함되어 있습니다. 이러한 매개 변수를 올바르게 설정하면 API가 해당 제약 조건 내에서 가장 적합한 해상도를 계산합니다. 매개 변수는 다음과 같습니다.
maxSupportedPixels: 게임이 초과하지 않아야 하는 총 픽셀 수입니다. 성능을 유지하기 위한 좋은 방법은 게임이 현재 시스템 디바이스 유형에서 일반적으로 렌더링하는 너비와 높이를 곱하는 것입니다. 예를 들어, 게임이 XBOX Series S에서 일반적으로 1440p로 렌더링되는 경우, 해당 디바이스 유형에서 maxSupportedPixels=2560*1440=3686400을 전달합니다.
widestSupportedAspectRatio 및 tallestSupportedAspectRatio: 이것은 게임의 화면 비율 한계입니다. 테스트한 가장 넓고 가장 높은 화면 비율로 설정하면 모든 기기에서 게임이 좋아 보이도록 할 수 있습니다.
터치 입력 및 사용자 지정 해상도
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 요소는 포함하지 않아야 합니다.
