다음을 통해 공유


PlayFab 파티 QoS 측정

PlayFab 파티는 백그라운드 QoS(서비스 품질) 측정을 수행하여 타이틀에 원격 Azure 리소스에 대한 낮은 대기 시간 액세스 권한을 제공합니다. 여기서는 타이틀이 파티의 QoS 기능을 발견할 것으로 예상되는 핵심 시나리오를 간략하게 설명합니다.

QoS 측정 시기 이해

파티 라이브러리에서는 파티가 초기화되는 즉시 QoS 측정을 시작합니다. 파티에서 QoS를 측정한 경우 측정치를 새로 고치는 유일한 방법은 파티 라이브러리를 정리하고 다시 초기화하는 것입니다. QoS 측정에 실패한 경우 파티 라이브러리에서는 다음에 PartyManager::CreateNewNetwork를 호출할 때 측정을 다시 시도합니다.

파티 네트워크의 지역 선택

PlayFab 파티에서 QoS를 측정하는 주된 이유는 파티 네트워크가 호스트되는 Azure 지역을 선택할 때 타이틀이 대기 시간 데이터를 사용할 수 있도록 하기 위해서입니다.

QoS 측정 결과를 검사할 때까지 기다리지 않고 타이틀은 빈 기본 지역 목록으로 PartyManager::CreateNewNetwork를 호출하여 현재 대기 시간이 가장 짧은 지역에 네트워크를 할당할 수 있습니다.

uint32_t regionCount = 0;
const PartyRegion* regionList = nullptr;

PartyError error = PartyManager::GetSingleton().CreateNewNetwork(
    localUser,
    &networkConfiguration,
    regionCount,
    regionList,
    nullptr,
    nullptr,
    nullptr,
    nullptr);

또는 타이틀에서 파티 라이브러리의 QoS 측정 결과를 검사하고 타이틀별 기준에 따라 기본 지역 목록을 선택할 수 있습니다.

QoS 측정 결과를 검사하려면 PartyManager::StartProcessingStateChanges에서 성공적인 PartyRegionsChangedStateChange를 받을 때까지 기다립니다.

switch (stateChange->stateChangeType)
{
    case PartyStateChangeType::RegionsChanged:
    {
        auto regionsChanged = static_cast<PartyRegionsChangedStateChange*>(stateChange);
        if (regionsChanged.result == PartyStateChangeResult::Succeeded)
        {
            m_qosResultsReady = true;
        }
    }

    // ...
}

그런 다음 PartyManager::GetRegions을 호출하여 현재 지역 및 대기 시간 목록을 검사하고 평가합니다.

if (m_qosResultsReady)
{
    uint32_t regionCount;
    const PartyRegion* regionList;

    PartyError error = PartyManager::GetSingleton().GetRegions(
        &regionCount,
        &regionList);
    if (PARTY_FAILED(error))
    {
        DEBUGLOG("PartyManager::GetRegions failed: %s\n", PartyManager::GetErrorMessage(error));
        return;
    }

    // Prevent Party from using Azure regions above some latency threshold.
    // The game is unplayable in those scenarios.
    std::vector<PartyRegion> filteredRegionList = OmitRegionsAboveMaxLatency(regionCount, regionList, maxLatency);

    error = PartyManager::GetSingleton().CreateNewNetwork(
        localUser,
        &networkConfiguration,
        filteredRegionList.size(),
        filteredRegionList.data(),
        nullptr,
        nullptr,
        nullptr,
        nullptr);
    if (PARTY_FAILED(error))
    {
        DEBUGLOG("PartyManager::CreateNewNetwork failed: %s\n", PartyManager::GetErrorMessage(error));
        return;
    }

지역별 가격 차이

모든 파티 지역에서 동일하게 청구되지 않습니다. 지역별 가격 차이에 대한 자세한 내용은 가격 책정 페이지를 참조하세요.

액세스 가능한 채팅 기능에 최적 지역 사용

PlayFab 파티에서 QoS를 측정하는 다른 이유는 텍스트 음성 변환 합성, 음성 텍스트 변환 기록 및 번역과 같은 응답성이 뛰어난 채팅 접근성 기능을 사용하기 위한 것입니다. 이러한 접근성 기능에서는 지역 Azure Cognitive Services 리소스를 사용하며 QoS를 측정하여 다른 지역을 최대한 활용할 수 있습니다.

QoS 측정 실패 이해

네트워크 만들기 및 채팅 접근성 기능에서는 QoS 측정을 사용하므로 PartyRegionsChangedStateChange 결과 및 오류 세부 정보를 검사하는 것이 중요합니다. 이 상태 변경 실패는 이후 오류에 유용한 디버깅 컨텍스트를 제공할 수 있습니다.