Xbox 게임 스트리밍을 위한 게임 최적화
이 항목을 사용하여 타이틀을 최적화하고 게임 스트리밍 시 일반적인 문제를 방지할 수 있습니다. Xbox 플랫폼의 모든 게임은 Xbox 원격 플레이가 있는 로컬 콘솔에서 또는 Xbox 게임 스트리밍을 사용하는 클라우드를 통해 스트리밍할 수 있습니다. 게임은 사용자 지정 없이 스트리밍할 수 있지만, 특정 동작과 작은 변경은 플레이어의 환경을 개선하고 타이틀에 대한 참여와 플레이 시간을 늘리는 데 도움이 됩니다. 아래 지침은 사용자 연구의 모범 사례, 비디오 스트리밍에 대한 기술 세부 정보 및 스트리밍과 긴밀하게 협력하는 스튜디오에서 얻은 인사이트 모음으로, 게임 스트리밍을 사용하는 동안 플레이 가능성과 즐거움을 높이는 것으로 나타났습니다.
백그라운드 & 게임 스트리밍 내부
Xbox 게임 스트리밍은 Azure 데이터 센터의 글로벌 네트워크에 있는 서버 구성(Xbox 서버)에 있는 수천 대의 Xbox 장치로 구성됩니다. 개략적으로 Xbox 게임 스트리밍 세션 설정은 다음과 같이 작동합니다.
- 사용자가 플레이하려는 게임을 선택합니다.
- Xbox 게임 스트리밍 서비스는 사용 가능한 서버 풀에서 사용자에게 Xbox 서버를 할당합니다.
- 서비스는 사용자를 서버, 게임 저장 및 PLS(홈 콘솔 간에 로밍하지 않음)에 로그인하고, 게임을 시작하고, 게임 스트리밍 세션을 시작합니다.
- 사용자가 플레이를 마치면 게임이 종료되고 저장된 게임이 데이터 동기화되며, PLS가 업로드되고 사용자가 로그아웃됩니다.
일반
특정 인게임 특성은 사용자 환경에 부정적인 영향을 미치며 Xbox 게임 스트리밍에서 사용자 세션을 종료할 수 있습니다. 게임에서 이러한 위험을 완화하기 위한 적절한 단계를 수행하도록 합니다.
게임이 스트리밍되는 시기를 알 수 있습니다.
무엇보다도 스트리밍 환경에서 게임을 테스트하는 것은 간단합니다. Xbox 개발 키트를 설정하고 Microsoft 계정 담당자에게 문의하여 타이틀에 대한 프라이빗 클라우드 환경에 액세스하는 방법에 대한 자세한 내용은 스트리밍을 위한 Xbox 개발 키트 설정을 참조하세요.
가장 기본적인 최적화는 게임이 Cloud Aware API 호출을 통해 스트리밍 환경에서 실행되는 시기를 확인하는 것입니다. 이렇게 하면 스트리밍에 대한 동작을 변경하는 시기를 쉽게 알 수 있습니다.
참고 항목
이 문서의 많은 기능과 권장 사항은 게임 스트리밍에 관계없이 플레이어에게 도움이 되며 접근성을 높일 수 있습니다.
새 사용자가 가능한 한 빨리 게임을 시작하고 게임에 뛰어들 수 있도록 허용합니다.
스트리밍 세션은 길이가 더 다양하며 항상 긴 플레이 세션을 지원하지는 않습니다. 사용자가 스트리밍하는 동안에만 다시 시작하고 이동할 수 있는 자동 저장 지점을 사용할 수 있습니다.
긴 컷씬 동안 사용자가 "유휴 상태"가 되도록 연결이 끊어지지 않았는지 확인합니다.
Xbox 게임 스트리밍은 사용자가 유휴 상태임을 감지하면 사용자 세션을 종료합니다. 개발자는 세션이 유휴 상태로 전환되고 사용자의 연결을 끊지 않도록 XDisplayAcquireTimeoutDeferral API를 사용해야 합니다.
비디오
화면 크기에 맞게 HUD(헤드 업 디스플레이) 및 UI 레이아웃을 조정합니다.
플레이어는 다양한 폼 팩터, 보기 거리 및 해상도를 사용하여 다양한 디바이스로 스트리밍할 수 있습니다. 게임 텍스트 및 UI 요소는 대형 화면 TV에서 읽을 수 있지만 작은 장치에서는 요소를 읽기 어려울 수 있습니다. XGameStreamingGetStreamPhysicalDimensions API는 스트리밍되는 특정 디바이스에 대해 확장 가능한 UI 요소가 충분히 큰지 확인하는 데 도움이 될 수 있습니다.
사용자 지정 해상도 개요 를 사용하면 이를 더욱 발전시키고 사용자 디바이스의 전체 화면을 활용할 수 있으며, 그 중 상당수는 TV의 기존 16:9 해상도와 일치하지 않아 보다 몰입감 있고 자연스러운 환경을 제공합니다. 이렇게 하면 네이티브 터치를 사용하는 게임의 유용성도 향상됩니다.
가능한 경우 빨간색 텍스트 방지
비디오 압축 형식과 빨간색에 대한 인간의 눈의 민감도로 인해 이 색은 종종 가장 큰 영향을 받는 것으로 인식됩니다. 특히 텍스트의 혹독한 테두리와 미세한 선이 있는 이 색을 피하면 미리 인식된 압축 아티팩트가 줄어듭니다.
구성 가능한 감마 및 기타 비디오 설정 허용
플레이어는 다양한 폼 팩터와 화면 특성을 가진 다양한 디바이스로 스트리밍할 수 있습니다. XGameStreamingGetClients를 사용하여 스트리밍되는 각 디바이스에 대한 고유 식별자를 가져올 수 있습니다. 이 식별자를 사용하여 디바이스 간 밝기 차이를 고려하여 디바이스당 비디오 설정을 저장하고 복원합니다.
비디오 대기 시간 줄이기
게임이 DirectCapture와 호환되도록 하면 플레이어의 비디오 대기 시간이 크게 줄어들어 응답성이 뛰어나고 즐거운 환경을 만들 수 있습니다. 자세한 내용은 DirectCapture 개요 를 참조하세요.
입력
사용자가 자신의 장치에 자연스러운 방식으로 게임과 상호 작용할 수 있도록 허용합니다.
플레이어는 마우스 & 키보드, 터치 스크린 등과 같은 다양한 폼 팩터 및 입력 유형을 가진 다양한 디바이스로 스트리밍할 수 있습니다. 가능한 경우 이러한 다른 형식을 지원합니다. CTA(콘텐츠 테스트 애플리케이션) Stream 구성 개요에는 컨트롤러 외에 입력 형식으로 테스트 스트리밍하는 방법에 대한 자세한 정보가 있습니다.
터치 컨트롤 & 네이티브 터치에 대한 자세한 내용은 터치 시작을 참조하세요.
최신 입력 형식에 응답
플레이어는 게임을 재개하고 다양한 장치에서 스트리밍하는 동안 계속 플레이할 수 있으며 항상 물리적 컨트롤러가 있는 것은 아닙니다. 이러한 경우 플레이어는 키보드 입력을 & 컨트롤러, 터치 및 마우스 간에 원활하게 전환할 수 있을 것으로 기대합니다. 게임은 '마지막 1승' 정책을 사용하여 UX를 전환하고 프롬프트를 플레이어의 기본 입력 유형으로 전환할 수 있습니다. 가능한 경우 플레이어를 입력 형식으로 잠그거나 컨트롤러를 사용하여 모드를 다른 입력 형식으로 전환해야 합니다. 다양한 입력 형식을 처리하는 방법에 대한 자세한 내용은 GameInput 개요 를 참조하세요.
입력 대기 시간 계정
대기 시간은 스트리밍 환경에서 피할 수 없는 현실입니다. 플랫폼은 대기 시간을 최대한 최소화하려고 시도하지만 게임은 입력을 해석할 때 대기 시간을 더 잘 이해하고 설명할 수 있습니다. 플레이어의 대기 시간을 줄이는 데 사용할 수 있는 기술에 대한 자세한 내용은 게임 스트리밍 대기 시간 측정 및 게임 스트리밍 대기 시간 보정 개요 를 참조하세요.
지역화
여러 패키지 대신 콘텐츠 지역화에 지능형 배달 사용
Xbox 게임 스트리밍은 사용자가 연결하는 물리적 지역(즉, 국가/지역)을 검색합니다. 또한 Xbox 게임 스트리밍은 사용자가 로컬 장치에서 설정한 로캘을 검색합니다. 지역 및 로캘에 대해 검색된 이러한 값은 일치하도록 구성하기 위해 Xbox 서버에 전달됩니다. Xbox 게임 스트리밍은 또한 사용자가 해당 지역의 파트너 센터에 구성된 게임 패키지를 제공받을 수 있도록 합니다.
이를 감안할 때 개발자는 다양한 지역화된 콘텐츠 집합이 있는 여러 패키지가 아닌 지능형 배달 언어 지정자를 활용하는 모든 지역화된 콘텐츠를 포함하는 단일 패키지를 게임에 제출하는 것이 좋습니다. 이렇게 하면 사용자가 현재 플레이 중인 국가/지역에 관계없이 원하는 언어로 게임을 경험할 수 있습니다.
저장소
게임 플레이 세션 간에 데이터를 유지하기 위해 임시 드라이브가 필요하지 않습니다.
Xbox 게임 스트리밍은 세션 간에 임시 드라이브의 모든 데이터를 지웁니다. 후속 게임 세션은 다른 데이터 센터의 다른 Xbox Server에서 발생할 수 있습니다. 게임은 임시 드라이브의 세션 간에 필요한 데이터를 저장해서는 안 됩니다.
PLS(영구 로컬 스토리지)의 대용량 사용 방지
Xbox 게임 스트리밍은 세션 간에 영구 로컬 스토리지 를 로밍합니다. 4GB 이상의 PLS를 활용하면 Xbox 게임 스트리밍에서 게임을 시작하는 시간이 늘어나게 됩니다. PLS에서 추가 4GB 사용마다 로드 시간이 20초 증가할 것으로 예상됩니다.
네트워킹
다양한 네트워크 대기 시간 및 특성 예상
Xbox 게임 스트리밍은 Azure 데이터 센터에서 Xbox 콘솔을 실행합니다. 즉, 한 사용자가 여러 IP 범위에서 재생할 수 있으며 홈 콘솔 게이머보다 ping 시간이 낮을 수 있습니다.
포트 9002 방지
Xbox 게임 스트리밍은 네트워킹에 포트 9002를 사용하므로 게임 개발자는 TCP 또는 UDP 통신에 포트 9002를 사용하지 않아야 합니다. 게임에 대한 특정 포트 및 네트워킹 구성에 대한 자세한 내용은 개발 네트워크 액세스 구성을 참조하세요.
참고 항목
이제 포트 9002가 최근 GDK에서 차단되었습니다.
지원되지 않는 인게임 시나리오
다음 게임 내 시나리오는 Xbox 게임 스트리밍이 사용자 환경을 게임 플레이로만 제한하는 디자인으로 인해 클라우드 스트리밍 중에 지원되지 않습니다. 그러나 이러한 시나리오 중 일부는 사용자가 홈 콘솔을 스트리밍할 때 작동할 수 있습니다.
다른 앱 또는 게임을 시작하지 않도록 방지
Xbox 게임 스트리밍은 Edge 브라우저를 시작하는 것 외에 별도의 게임/앱 시작을 지원하지 않습니다.
웹 브라우저에 의존하여 플레이 중인 게임과 동일한 물리적 머신에 의존하지 않도록 방지
Xbox 게임 스트리밍에서 웹 브라우저 또는 시스템 호스팅 웹 혼합으로의 프로토콜 활성화로 인해 사용자가 플레이 중인 로컬 디바이스에서 활성화가 시작됩니다. 개발자는 이러한 환경이 게임과 동일한 장치에서 실행되는 브라우저에 종속되지 않도록 해야 합니다. 예: 게임의 프로토콜 활성화를 시도하는 "뒤로" 단추가 있는 웹 사이트로 시작되는 게임입니다.
사용자가 언제든지 게임을 수동으로 다시 시작하도록 요구하지 않도록 합니다.
여기에는 게임이 자체적으로 업데이트되고 사용자가 수동으로 게임을 다시 시작해야 하는 시나리오가 포함됩니다. Xbox 게임 스트리밍은 게임이 종료되면 사용자 세션을 종료하므로 게임을 다시 시작하면 스트림이 종료됩니다.
너무 오랫동안 유휴 상태인 사용자를 과도하게 처벌하지 않도록 방지
Xbox 게임 스트리밍은 세션에서 예기치 않게 연결이 끊긴 후 5~10분 동안 사용자 세션을 활성 상태로 유지합니다. 따라서 게임이 유휴 상태인 사용자에게 부정적 영향을 주는 경우 Xbox 게임 스트리밍 사용자에게 불필요하게 피해를 줄 수 있습니다. 게임은 XGameStreamingGetClients API를 사용하여 GameStreaming 클라이언트 연결 끊김을 구체적으로 검색할 수 있습니다.
게임 서비스
Xbox 게임 스트리밍은 데이터 센터의 Xbox 서버를 통해 더 광범위한 대상 그룹이 게임을 사용할 수 있도록 하며, 이는 ping 시간 또는 장치 ID와 같은 장치 특성을 활용하여 게임 동작을 변경하는 게임 서비스에 영향을 줍니다.
금지/사기 탐지를 위해 Xbox 서비스 XSTS(보안 토큰)를 사용하지 마세요.
Xbox 게임 스트리밍 사용자는 각 세션마다 새 Xbox 서버를 받게 되므로 동일한 장치에서 오는 여러 개의 개별 사용자 세션을 볼 수 있습니다. 또한 이러한 경우 게임 서비스는 이러한 장치를 금지해서는 안 됩니다. 이러한 세션이 Xbox 서버에서 시작된다는 것을 알기 위해 개발자는 게임에서 XGameStreamingGetServerLocationName GDK API를 사용할 수 있습니다. XSTS 토큰에서 이를 검색할 수도 있습니다. 게임 서비스에서 장치 ID를 처리하는 방법에 대한 자세한 내용은 Xbox 서비스 XSTS(보안 토큰) 클레임에서 Xbox 게임 스트리밍 서버 참조 를 참조하세요.
동일한 Xbox 서버에서 너무 많은 사용자가 플레이하는 경우 사용자의 플레이 금지 방지
개별 Xbox 서버는 여러 게이머가 서로 다른 시간에 사용합니다. 게임에서 이러한 인스턴스를 금지하면 Xbox 게임 스트리밍 게이머의 환경이 손상됩니다. (예: 동일한 IP 주소 또는 디바이스 ID에서 너무 많은 게임 세션이 시작되는 경우 게임에 문제가 있는 경우).
의심스러운 것과 동일한 IP 주소에서 들어오는 수많은 세션에 플래그를 지정하는 게임 서비스 방지
데이터 센터의 여러 Xbox 서버는 발신 및 수신 통신에 대해 동일한 공용 IP 주소를 공유할 수 있습니다. 게임 서비스가 동일한 IP 주소로 100개 이상의 고유한 Xbox 콘솔을 처리할 수 있는지 확인합니다.
게임이 실행 중인 IP 주소에 종속된 논리를 사용하여 사용자에 대한 정책 결정을 내리지 않도록 합니다.
Xbox 서버가 사용자가 있는 동일한 국가/지역에 반드시 있는 것은 아닙니다. 게임 플레이 의사 결정에 IP 주소를 사용하면 사용자 환경이 저하됩니다. XGameStreamingGetClientIPAddress 함수를 사용하여 스트리밍 클라이언트의 IP 주소를 확인할 수 있으며 이는 게임 플레이 논리에 더 적합합니다.
대기 시간 검사에서 게이머의 대기 시간이 매우 짧을 때 게임 또는 게임 서비스가 사용자를 위반/처벌하지 않도록 방지
데이터 센터 구성으로 인해 Xbox 게임 스트리밍 사용자의 ping 시간은 항상 로컬 콘솔의 사용자보다 낮습니다. ping 시간은 0ms일 수 있지만 ping 시간을 사용하여 사용자를 저하/금지하지 않는 것이 중요합니다. ping 시간에 따라 내부 게임/서버 논리를 제거/조정하지 마세요.
참고 항목
XGameStreamingGetStreamPhysicalDimensions