다음을 통해 공유


PartyDirectPeerConnectivityOptions

네트워크의 디바이스 간에 직접 피어 투 피어 연결의 사용 시도를 제어하는 플래그입니다.

구문

enum class PartyDirectPeerConnectivityOptions  : int32_t  
{  
    None = 0x0,  
    SamePlatformType = 0x1,  
    DifferentPlatformType = 0x2,  
    AnyPlatformType = SamePlatformType | DifferentPlatformType,  
    SameEntityLoginProvider = 0x4,  
    DifferentEntityLoginProvider = 0x8,  
    AnyEntityLoginProvider = SameEntityLoginProvider | DifferentEntityLoginProvider,  
}  

상수

상수 설명
없음 플래그를 지정하지 않습니다.

플래그가 없으면 직접 피어 연결 시도가 허용되지 않습니다. 디바이스 간의 모든 엔드포인트 메시지 및 채팅 데이터는 항상 투명한 클라우드 릴레이 서버를 통해 전송되며 IP 주소 정보가 교환되지 않습니다.
SamePlatformType 동일한 플랫폼 유형의 디바이스 간에 직접 피어 투 피어 연결을 시도할 수 있습니다.

디바이스 쌍은 사용하는 특정 파티 라이브러리와 연결된 하드웨어 및/또는 OS 플랫폼(예: Windows PC, Xbox 게임 콘솔, iOS 기반 모바일 디바이스)의 유형이 동일하다고 식별된 경우 직접 피어 투 피어 연결을 설정하려고 시도합니다.

이 플래그는 자체적으로 직접 피어 투 피어 연결 시도를 허용하지 않습니다. SameEntityLoginProviderDifferentEntityLoginProvider 플래그 중 하나 또는 둘 다와 결합해야 합니다.

DifferentPlatformType 다른 플랫폼 유형의 디바이스 간에 직접 피어 투 피어 연결을 시도할 수 있습니다.

디바이스 쌍은 각각사용하는 특정 파티 라이브러리와 연결된 하드웨어 및/또는 OS 플랫폼(예: Windows PC, Xbox 게임 콘솔, iOS 기반 모바일 디바이스)의 유형이 다르다고 식별된 경우 직접 피어 투 피어 연결을 설정하려고 시도합니다.

이 플래그는 자체적으로 직접 피어 투 피어 연결 시도를 허용하지 않습니다. SameEntityLoginProviderDifferentEntityLoginProvider 플래그 중 하나 또는 둘 다와 결합해야 합니다.

AnyPlatformType 플랫폼 유형에 관계없이 디바이스 간에 직접 피어 투 피어 연결을 시도할 수 있습니다.

이 플래그는 SamePlatformType | DifferentPlatformType에 해당합니다.
SameEntityLoginProvider 동일한 공급자를 사용하여 로그인한 인증된 사용자 PlayFab 엔터티 ID가 있는 디바이스 간에 직접 피어 투 피어 연결을 시도할 수 있습니다.

처음에 로컬 사용자를 네트워크에 인증하는 디바이스는 동일한 공급자(예: Xbox Live, Facebook, iOS, Google)를 사용하여 로그인한 인증된 사용자 PlayFab 엔터티 ID가 하나 이상 있는 원격 디바이스와 새로 인증하는 사용자로 직접 피어 투 피어 연결을 설정하려고 시도합니다.

이 플래그는 자체적으로 직접 피어 투 피어 연결 시도를 허용하지 않습니다. SamePlatformTypeDifferentPlatformType 플래그 중 하나 또는 둘 다와 결합해야 합니다.

DifferentEntityLoginProvider 다른 공급자를 사용하여 로그인한 인증된 사용자 PlayFab 엔터티 ID가 있는 디바이스 간에 직접 피어 투 피어 연결을 시도할 수 있습니다.

처음에 로컬 사용자를 네트워크에 인증하는 디바이스는 동일한 공급자(예: Xbox Live, Facebook, iOS, Google)를 사용하여 로그인한 인증된 사용자 PlayFab 엔터티 ID가 없는 원격 디바이스와 새로 인증하는 사용자로 직접 피어 투 피어 연결을 설정하려고 시도합니다.

이 플래그는 자체적으로 직접 피어 투 피어 연결 시도를 허용하지 않습니다. SamePlatformTypeDifferentPlatformType 플래그 중 하나 또는 둘 다와 결합해야 합니다.

AnyEntityLoginProvider 인증된 사용자 PlayFab 엔터티 ID를 로그인시키는 데 사용된 공급자에 관계없이 디바이스 간에 직접 피어 투 피어 연결을 시도할 수 있습니다.

이 플래그는 SameEntityLoginProvider | DifferentEntityLoginProvider에 해당합니다.

비고

초기 사용자를 네트워크에 인증하는 과정의 일환으로 디바이스는 네트워크의 PartyNetworkConfiguration 구조에 선언된 해당 클래스에서 허용한 경우 네트워크에 이미 참여 중인 다른 디바이스와 직접 피어 투 피어 연결을 설정하려고 시도할 수 있습니다. 시도가 성공한 경우 직접 연결을 사용하여 디바이스 간에 엔드포인트 메시지 및 채팅 데이터가 전송됩니다. 디바이스 간에 환경이 호환되지 않아서 시도가 실패한 경우 디바이스 간의 모든 통신은 투명 클라우드 릴레이 서버를 통해 전송됩니다. 디바이스에서 이러한 플래그를 통한 직접 피어 연결 시도를 허용하지 않는 경우 IP 주소 정보를 교환하지 않고 항상 투명 클라우드 릴레이 서버를 통해 엔드포인트 메시지 및 채팅 데이터를 전송합니다.

로컬 디바이스에서 PartyNetwork::GetDeviceConnectionType()을 호출하여 특정 원격 디바이스에 대한 직접 피어 투 피어 연결을 실제로 설정했는지 여부를 확인할 수 있습니다.

직접 피어 연결이 성공하면 일부 디바이스 간의 대기 시간이 짧아질 수 있지만, 설정을 시도하려면 사용자가 디바이스의 IP 주소를 다른 사람에게 공개해야 합니다. 이는 개인 정보 보호 문제를 야기하거나 악의적인 사용자가 타이틀 외부에서 피어의 디바이스 및 인터넷 연결을 공격할 수 있다는 문제를 초래합니다. 이 기능은 정책상의 이유로 특정 플랫폼에서 허용되지 않을 수도 있습니다. 성능 및 보안 목표에 적절한 플래그를 사용해야 합니다.

특정 네트워크의 PartyNetworkConfiguration::directPeerConnectivityOptions 값 외에도 PartyManager::SetOption()을 사용하여 PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask를 설정함으로써 인증하는 모든 네트워크에 대해 디바이스에서 플래그를 추가로 제한할 수 있습니다. 모든 플래그는 비트 AND 연산을 사용하여 평가됩니다. 즉, 특정 플래그는 세 위치(네트워크의 PartyNetworkConfiguration 구조와 ‘두’ 디바이스의 해당 로컬 마스크 옵션)에서 사용하도록 설정된 경우 지정된 네트워크의 디바이스 쌍에만 실제로 적용됩니다. 파티 네트워크에서 관련 양식의 직접 피어 연결을 허용하는 경우에도 디바이스는 플래그를 사용하도록 설정하지 않음으로써 상호 간 IP 주소 공개 및 직접 연결 시도를 옵트아웃할 수 있습니다. PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask 값은 기본적으로 네트워크에서 사용하도록 설정된 모든 직접 피어 연결을 허용하므로 일부 또는 모든 직접 피어 연결을 방지하기 위한 디바이스별 요구 사항이 있는 경우에만 구성해야 합니다.

과도한 리소스 소비를 방지하기 위해 파티 라이브러리는 이러한 플래그에서 허용된 경우에도 현재 참여하고 있는 모든 네트워크에서 지정된 디바이스가 c_maxDirectPeerConnectionsPerDevice 이상의 직접 피어 연결을 설정하지 못하도록 내부적으로 차단합니다. 이는 추가 원격 디바이스를 사용하여 대규모 또는 여러 네트워크에 참여하는 디바이스의 기능에 영향을 주지 않습니다. 추가 디바이스와의 통신은 투명 클라우드 릴레이 서버를 통해 간단히 전송됩니다.

사용 중인 특정 기본 전송 방법에 따라 통신하는 전체 논리적 기능이 변경되지 않으므로 지정된 디바이스 쌍에 대해 직접 피어 투 피어 연결의 가용성을 적극적으로 적용하지 않는 것이 좋습니다. 예를 들어 PartyNetwork::GetDeviceConnectionType()PartyDeviceConnectionType::D irectPeerConnection 이외의 값을 보고하는 경우 PartyNetwork::LeaveNetwork()를 호출하지 않습니다. 게임 디자인에 직접 피어 연결을 권장하는 최대 메시지 대기 시간에 대한 엄격한 요구 사항이 있는 경우 전송 메커니즘을 기반으로 추상적인 가정을 하는 대신 PartyEndpointStatistic::AverageDeviceRoundTripLatencyInMilliseconds 통계에 보고한 대로 해당 대기 시간의 현재 구체적인 관찰에 대한 조치를 취하는 것이 좋습니다. 그러지 않으면 제어할 수 없는 환경 요인으로 인해 항상 가까운 투명 클라우드 릴레이 서버를 사용해야 하는 동일한 친구 집합과 함께 플레이하려는 사용자를 지속적으로 방해할 수 있습니다.

요구 사항

헤더: Party.h

참고 항목

파티 멤버
PartyNetworkConfiguration
PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask
PartyManager::SetOption
PartyEndpointStatistic::AverageDeviceRoundTripLatencyInMilliseconds
PartyLocalEndpoint::GetEndpointStatistics