Skip to main content

QoS(Quality-of-Service) 비콘을 사용하여 Azure에 대한 플레이어 지연 시간 측정

PlayFab 멀티플레이어 서버를 12개가 넘는 Azure 지역에 배포할 수 있습니다. 그렇게 하는 이유는 두 가지입니다.
  1. 추가 지역은 이중화를 제공합니다. 단일 Azure 지역에 장애가 발생하는 경우 플레이어는 다른 지역의 서버에 액세스할 수 있습니다.
  2. 추가 지역을 통해 플레이어는 “가까운” 서버에 액세스하고 낮은 지연 시간의 연결을 제공받을 수 있습니다.
RequestMultiplayerServer를 호출할 때 PlayFab이 요청을 처리하는 데 사용하는 Azure 지역의 순위 지정 목록을 지정합니다. PlayFab은 1순위 지역을 사용하여 요청을 처리하려고 시도하지만, 해당 지역에 대기 중인 서버가 없거나 지역에 다른 결함이 있는 경우 목록 아래쪽에 있는 차선의 지역이 시도됩니다. 가능하면 멀티플레이어 서버를 요청하는 동안 사용되는 Azure 지역의 순위를 매길 때 플레이어 지연 시간 데이터를 사용해야 합니다. PlayFab은 이 작업을 지원하는 서비스 및 도구를 제공합니다.

Quality-of-service 비콘

PlayFab은 PlayFab 멀티플레이어 서버가 사용 중인 모든 Azure 지역에서 비콘을 운영합니다. 이러한 비콘은 UDP 트래픽을 반사하며 UDP 전송을 사용하여 지연 시간을 측정하는 데 사용할 수 있습니다. 대부분의 멀티플레이어 게임은 성능이 가장 중요한 게임 트래픽에 UDP 전송을 사용하기 때문에 UDP 사용은 중요합니다. 인터넷 서비스 공급자 및 인터넷 에코시스템의 기타 요소는 UDP, TCP, ICMP 흐름에 대해 서로 다른 성능을 제공할 수 있습니다. 다음은 플레이어 디바이스의 컨텍스트에서 이러한 비콘을 사용하는 일반적인 흐름입니다.
  1. 플레이어를 PlayFab에 로그인합니다. 일반적으로 LoginWithCustomID 또는 다른 로그인 API로 수행됩니다.
  2. ListQoSServersForTitle을 호출합니다. 이는 PlayFab의 QoS 비콘에 대한 호스트 이름을 제공합니다. 일반적인 구현에서는 게임의 멀티플레이어 메뉴 페이지에서 이 절차를 수행할 수 있습니다.
  3. UDP 소켓을 만듭니다.
  4. QoS 서버의 포트 3075로 단일 UDP 데이터그램을 전송합니다. 메시지 내용은 0xFFFF(1111 1111 1111 1111)로 시작해야 합니다.
  5. 서버는 첫 2바이트가 0x0000(0000 0000 0000 0000)으로 “뒤집힌” 메시지 내용의 단일 데이터그램으로 응답합니다. 나머지 데이터그램 내용은 최초 핑에서 복사됩니다.
  6. UDP 메시지 전송과 응답 수신 사이의 시간을 측정합니다.

Quality-of-service SDK 사용

PlayFab C# SDK교차 플랫폼(CPP) SDK는 QoS 핑 코드 구현을 제공합니다. SDK를 빌드하고 PC 게임에서 도우미 라이브러리로 사용하거나, C# NuGet 패키지를 참조하거나, 다른 플랫폼의 예제로 코드를 사용할 수 있습니다. 각 API는 각 지역에 대한 평균 핑 시간과 함께 정렬된 지역 목록이 포함된 QosResult를 반환합니다.

C#

C# SDK에서 사용할 수 있는 QoS API가 있습니다. 샘플 구현인 WindowsRunnerCSharpClientgsdkSamples 리포지토리에서 사용할 수 있습니다. 이 코드는 PlayFabQosApi.cs에 있습니다. 매개 변수:
  • timeoutMs - 각 핑 시도에 적용되는 시간 초과(밀리초)(기본값: 250ms).
  • pingsPerRegion - 각 지역에 대한 핑 시도 횟수(기본값: 10). 이 수를 늘리면 실행 시간이 늘어나지만 부정확한 결과가 나올 확률이 줄어듭니다.
  • degreeOfParallelism - 병렬로 수행할 최대 핑 수(기본값: 4). 이 수를 늘리면 실행 시간이 줄어들지만, 이 수가 너무 크면 네트워크 경합으로 인해 부정확한 결과가 발생할 수 있습니다.

C++

PlayFab 교차 플랫폼(CPP) SDK에서 사용할 수 있는 두 개의 QoS API가 있습니다. 이 코드는 PlayFabQosApi.cpp에 있습니다. 매개 변수:
  • numThreads - 병렬로 수행할 최대 핑 수. 이 수를 늘리면 실행 시간이 줄어들지만, 이 수가 너무 크면 네트워크 경합으로 인해 부정확한 결과가 발생할 수 있습니다.
  • timeoutMs - 각 핑 시도에 적용되는 시간 초과(밀리초)(기본값: 250ms).
마지막 수정일 2026년 8월 25일