배경 및 게임 스트리밍 내부
XBOX Game Streaming은 본질적으로 전 세계 Azure 데이터 센터 네트워크에서 서버 구성(XBOX Server)의 수천 개의 XBOX 디바이스로 구성됩니다. 상위 수준에서 XBOX Game Streaming 세션 설정은 다음과 같이 작동합니다.- 사용자가 플레이하려는 게임을 선택합니다.
- XBOX Game Streaming 서비스는 사용 가능한 서버 풀에서 사용자에게 XBOX 서버를 할당합니다.
- 서비스는 사용자를 서버에 로그인하고, 게임 저장과 PLS(홈 콘솔 간에 로밍되지 않음)를 처리하며, 게임을 실행하고 게임 스트리밍 세션을 시작합니다.
- 사용자가 플레이를 마치면 게임이 종료되고, 저장된 게임 데이터가 동기화되고, PLS가 업로드되며, 사용자가 로그아웃됩니다.
일반
특정 인게임 특성은 사용자 경험에 부정적인 영향을 미치며 XBOX Game Streaming의 사용자 세션을 종료시킬 수 있습니다. 게임이 이러한 위험을 완화하기 위한 적절한 조치를 취하도록 하세요.- 게임이 언제 스트리밍되고 있는지 파악하세요. 무엇보다도, 스트리밍 환경에서 게임을 테스트하는 것은 간단합니다. XBOX 개발 키트를 설정하는 방법에 대한 정보는 스트리밍용 XBOX 개발 키트 설정을 참조하고 타이틀에 대한 비공개 클라우드 환경에 액세스하려면 Microsoft 계정 담당자에게 문의하세요. 가장 기본적인 최적화는 Cloud Aware API 호출을 통해 게임이 스트리밍 환경에서 실행되고 있을 때를 확인하는 것입니다. 이는 스트리밍을 위해 동작을 변경할 시기를 쉽게 파악할 수 있는 방법을 제공합니다.
이 문서의 많은 기능과 권장 사항은 게임 스트리밍 여부와 관계없이 플레이어에게 도움이 되고 접근성을 향상시킬 수 있습니다.
- 새 사용자가 가능한 한 빠르게 게임을 실행하고 진입할 수 있도록 허용합니다. 스트리밍 세션은 길이가 더 다양하고 항상 긴 플레이 세션을 허용하는 것은 아닙니다. 사용자가 스트리밍하는 경우에만 재개하고 앞으로 진행할 수 있는 자동 저장 지점을 사용할 수 있습니다.
- 긴 컷씬 중에 “유휴” 상태로 인해 사용자의 연결이 끊어지지 않도록 하세요. XBOX Game Streaming은 사용자가 유휴 상태인 것을 감지하면 사용자 세션을 종료합니다. 개발자는 XDisplayAcquireTimeoutDeferral API를 사용하여 세션이 유휴 상태로 전환되어 사용자의 연결이 끊어지는 것을 방지해야 합니다.
비디오
- 화면 크기에 맞게 헤드업 디스플레이(HUD)와 UI 레이아웃을 조정합니다. 플레이어는 다양한 폼 팩터, 시청 거리 및 해상도를 가진 광범위한 디바이스로 스트리밍할 수 있습니다. 대형 화면 TV에서는 게임 내 텍스트와 UI 요소를 읽을 수 있지만, 작은 디바이스에서는 요소를 읽기 어려워질 수 있습니다. XGameStreamingGetStreamPhysicalDimensions API는 확장 가능한 UI 요소가 스트리밍되는 특정 디바이스에 대해 충분히 크도록 하는 데 도움이 될 수 있습니다. 사용자 지정 해상도 개요를 사용하면 이를 한 단계 더 발전시켜 사용자 디바이스의 전체 화면을 활용할 수 있으며, 대부분은 TV의 전통적인 16:9 해상도와 일치하지 않으므로 더 몰입감 있고 자연스러운 경험을 제공합니다. 이는 네이티브 터치를 사용하는 게임의 사용성도 향상시킵니다.
- 가능한 경우 빨간색 텍스트를 피하세요. 비디오 압축 형식과 인간 눈의 빨간색에 대한 민감도로 인해 이 색상은 종종 가장 큰 영향을 받는 것으로 인식됩니다. 특히 텍스트의 강한 테두리와 얇은 선에서 이 색상을 피하면 인식되는 압축 아티팩트를 줄일 수 있습니다.
- 감마 및 기타 비디오 설정을 구성할 수 있도록 허용합니다. 플레이어는 다양한 폼 팩터와 화면 특성을 가진 광범위한 디바이스로 스트리밍할 수 있습니다. XGameStreamingGetClients를 사용하여 스트리밍되는 각 디바이스에 대한 고유 식별자를 얻을 수 있습니다. 이 식별자를 사용하여 디바이스 간의 밝기 차이를 감안해 디바이스별로 비디오 설정을 저장하고 복원할 수 있습니다.
- 비디오 지연 시간 감소 게임이 DirectCapture와 호환되도록 하면 플레이어의 비디오 지연 시간이 크게 감소하여 더욱 반응성 있고 즐거운 경험을 만들 수 있습니다. 자세한 내용은 DirectCapture 개요를 참조하세요.
입력
- 사용자가 디바이스에 자연스러운 방식으로 게임과 상호 작용할 수 있도록 허용합니다. 플레이어는 마우스 및 키보드, 터치스크린 등과 같은 다양한 폼 팩터와 입력 유형을 가진 광범위한 디바이스로 스트리밍할 수 있습니다. 가능한 경우 이러한 다른 방식도 지원하세요. 콘텐츠 테스트 애플리케이션(CTA) 스트림 구성 개요에는 컨트롤러 이외의 입력 유형으로 스트리밍을 테스트하는 방법에 대한 자세한 정보가 있습니다. 터치 컨트롤 및 네이티브 터치에 대한 자세한 내용은 터치 시작하기를 참조하세요.
- 가장 최근 입력 유형에 응답 플레이어는 다양한 디바이스에서 스트리밍하는 동안 게임을 재개하고 계속 플레이할 수 있으며 항상 물리적 컨트롤러를 갖고 있지 않을 수 있습니다. 이러한 경우 플레이어는 컨트롤러, 터치, 마우스 및 키보드 입력 사이를 원활하게 전환할 수 있기를 기대합니다. 게임은 ‘가장 최근에 사용된 것 우선(last one wins)’ 정책을 사용하여 플레이어가 선호하는 입력 유형으로 UX와 프롬프트를 전환할 수 있습니다. 가능한 경우 플레이어를 특정 입력 유형에 고정하거나 다른 입력 유형으로 모드를 전환하기 위해 컨트롤러 사용을 요구하지 마세요. 다른 입력 유형 처리에 대한 자세한 내용은 GameInput 개요를 참조하세요.
- 입력 지연 시간 고려 지연 시간은 스트리밍 환경에서 피할 수 없는 현실입니다. 플랫폼은 최대한 지연 시간을 최소화하려고 하지만, 게임은 입력을 해석할 때 지연 시간을 더 이해하고 고려할 수 있습니다. 플레이어가 인식하는 지연 시간을 줄이기 위한 기법에 대한 자세한 내용은 게임 스트리밍 지연 시간 측정 및 게임 스트리밍 지연 시간 보정 개요를 참조하세요.
지역화
- 여러 패키지 대신 콘텐츠 지역화에 Intelligent Delivery 사용 XBOX Game Streaming은 사용자가 연결하는 물리적 지역(즉, 국가/지역)을 감지합니다. 또한 XBOX Game Streaming은 사용자가 로컬 디바이스에서 설정한 로캘을 감지합니다. 지역과 로캘에 대해 감지된 값이 XBOX 서버에 전달되어 일치하도록 구성됩니다. XBOX Game Streaming은 또한 사용자가 파트너 센터에서 해당 지역에 대해 구성된 게임 패키지를 제공받도록 보장합니다. 이를 감안하여, 개발자는 지역화된 콘텐츠 세트가 다른 여러 패키지가 아닌 Intelligent Delivery 언어 지정자를 활용하여 모든 지역화된 콘텐츠가 포함된 게임의 단일 패키지를 제출할 것을 권장합니다. 이렇게 하면 사용자가 어느 국가/지역에서 플레이하든지 관계없이 선호하는 언어로 게임을 경험할 수 있도록 보장합니다.
저장소
- 게임 플레이 세션 간에 데이터를 유지하기 위해 임시 드라이브를 요구하지 마세요. XBOX Game Streaming은 세션 간에 임시 드라이브의 모든 데이터를 지웁니다. 후속 게임 세션은 다른 데이터 센터의 다른 XBOX 서버에서 발생할 수 있습니다. 게임은 세션 간에 필요한 데이터를 임시 드라이브에 저장해서는 안 됩니다.
- PLS(Persistent Local Storage)의 대용량 사용 피하기 XBOX Game Streaming은 세션 간에 영구 로컬 저장소를 로밍합니다. 4GB 이상의 PLS를 사용하면 XBOX Game Streaming에서 게임을 실행하는 시간이 증가합니다. PLS에서 4GB를 추가로 사용할 때마다 로드 시간이 20초 증가할 것으로 예상됩니다.
네트워킹
- 다른 네트워크 지연 시간 및 특성 예상 XBOX Game Streaming은 Azure 데이터 센터에서 XBOX 콘솔을 실행합니다. 즉, 한 명의 사용자가 여러 IP 범위에서 플레이할 수 있으며 홈 콘솔 게이머보다 핑 시간이 더 낮을 수 있습니다.
- 9002 포트 사용 금지 XBOX Game Streaming은 네트워킹에 포트 9002를 사용하므로 게임 개발자는 TCP 또는 UDP 통신에도 포트 9002를 사용해서는 안 됩니다. 게임에 대한 특정 포트 및 네트워킹 구성에 대한 자세한 내용은 개발 네트워크 액세스 구성을 참조하세요.
포트 9002는 이제 최신 GDK에서 차단됩니다.
지원되지 않는 인게임 시나리오
다음 인게임 시나리오는 XBOX Game Streaming의 사용자 경험을 게임 플레이로만 제한하는 설계로 인해 클라우드 스트리밍 중에 지원되지 않습니다. 그러나 사용자가 홈 콘솔을 스트리밍할 때 이러한 시나리오 중 일부는 작동할 수 있습니다.- 다른 앱이나 게임 실행 시도 피하기 XBOX Game Streaming은 Edge 브라우저 실행 외에 별도의 게임/앱 실행을 지원하지 않습니다.
- 웹 브라우저가 재생 중인 게임과 동일한 물리적 시스템에 있을 것을 의존하지 마세요. XBOX Game Streaming에서 웹 브라우저 또는 시스템 호스팅 웹 블렌드로의 프로토콜 활성화는 해당 활성화가 사용자가 플레이 중인 로컬 디바이스에서 시작되게 합니다. 개발자는 이러한 경험이 게임과 동일한 디바이스에서 실행 중인 브라우저에 의존하지 않도록 해야 합니다. 예: 게임을 프로토콜 활성화하려고 시도하는 “뒤로” 버튼이 있는 웹사이트로 실행되는 게임.
- 어떤 시점에서든 사용자가 수동으로 게임을 다시 시작하도록 요구하지 마세요. 여기에는 게임이 자체 업데이트되고 사용자가 수동으로 게임을 다시 시작해야 하는 시나리오가 포함됩니다. XBOX Game Streaming은 게임이 종료되면 사용자 세션을 종료하므로 게임을 다시 시작하면 스트림이 종료됩니다.
- 너무 오래 유휴 상태인 사용자를 지나치게 처벌하지 마세요. XBOX Game Streaming은 사용자가 세션에서 예기치 않게 연결을 끊은 후 5-10분 동안 사용자 세션을 유지합니다. 따라서 게임이 유휴 사용자에게 페널티를 주면 XBOX Game Streaming 사용자에게 불필요하게 해를 끼칠 수 있습니다. 게임은 XGameStreamingGetClients API를 사용하여 GameStreaming 클라이언트 연결 해제를 구체적으로 감지할 수 있습니다.
게임 서비스
XBOX Game Streaming은 데이터 센터의 XBOX 서버를 통해 더 많은 사용자에게 게임을 제공하며, 이는 핑 시간 또는 디바이스 ID와 같은 디바이스 특성을 활용하여 게임 동작을 변경하는 게임 서비스에 영향을 미칩니다.- 차단/사기 감지에 XBOX 서비스 보안 토큰(XSTS) 사용 피하기 XBOX Game Streaming 사용자는 각 세션에 새로운 XBOX 서버를 얻으므로 동일한 디바이스에서 많은 별도 사용자 세션이 오는 것을 예상해야 합니다. 또한 이 경우 게임 서비스는 이러한 디바이스를 차단해서는 안 됩니다. 이러한 세션이 XBOX 서버에서 발생한 것을 알기 위해 개발자는 게임에서 XGameStreamingGetServerLocationName GDK API를 사용할 수 있습니다. XSTS 토큰에서도 이를 감지할 수 있습니다. 게임 서비스에서 디바이스 ID 처리에 대한 자세한 내용은 XBOX 서비스 보안 토큰(XSTS) 클레임에서 XBOX Game Streaming 서버 참조를 참조하세요.
- 동일한 XBOX 서버에서 너무 많은 사람이 플레이한다고 사용자를 차단하지 마세요. 개별 XBOX 서버는 다른 시간에 여러 게이머에 의해 사용됩니다. 게임이 이러한 인스턴스를 차단하면 XBOX Game Streaming 게이머의 경험이 저하됩니다. (예: 동일한 IP 주소 또는 디바이스 ID에서 너무 많은 게임 세션이 발생할 때 게임에 문제가 있는 경우.)
- 게임 서비스가 동일한 IP 주소에서 여러 세션이 오는 것을 의심스러운 것으로 표시하는 것을 피하세요. 데이터 센터의 여러 XBOX 서버가 발신 및 수신 통신을 위해 동일한 공용 IP 주소를 공유할 수 있습니다. 게임 서비스가 동일한 IP 주소를 가진 100개 이상의 개별 XBOX 콘솔을 처리할 수 있는지 확인하세요.
-
게임이 실행되는 IP 주소에 의존하여 사용자에 관한 정책 결정을 내리는 로직 사용 피하기
XBOX 서버가 반드시 사용자의 국가/지역과 동일한 곳에 있는 것은 아닙니다. 게임 내 플레이 결정에 IP 주소를 사용하면 사용자 경험이 저하됩니다.
XGameStreamingGetClientIPAddress 함수는 스트리밍 클라이언트의 IP 주소를 확인하는 데 사용할 수 있으며 게임 플레이 로직에 더 적합합니다.[!중요]
XGameStreamingGetClientIPAddress는 2604 GDK 릴리스 이후 사용 중단되었으며 향후 릴리스에서 제거됩니다. 사용자의 위치를 결정하려면 대신 XSTS 토큰 클레임을 사용하세요. 자세한 내용은 XSTS 클레임에서 XBOX Game Streaming 서버 참조를 참조하세요. - 지연 시간 확인 결과 게이머의 지연 시간이 매우 낮게 나타날 때 게임 또는 게임 서비스가 사용자를 방해/처벌하지 마세요. 데이터 센터 구성으로 인해 XBOX Game Streaming 사용자의 핑 시간은 항상 로컬 콘솔의 사용자보다 낮습니다. 0ms의 핑 시간을 받을 수 있지만, 사용자를 저해/차단하는 데 핑 시간을 사용하지 않는 것이 중요합니다. 핑 시간을 기반으로 내부 게임/서버 로직을 제거하거나 조정하지 마세요.
