다음을 통해 공유


PartyNetworkConfiguration

네트워크 구성 데이터입니다.

구문

struct PartyNetworkConfiguration {  
    uint32_t maxUserCount;  
    uint32_t maxDeviceCount;  
    uint32_t maxUsersPerDeviceCount;  
    uint32_t maxDevicesPerUserCount;  
    uint32_t maxEndpointsPerDeviceCount;  
    PartyDirectPeerConnectivityOptions directPeerConnectivityOptions;  
}  

멤버

maxUserCount uint32_t

네트워크에서 허용되는 최대 고유 사용자 수입니다.

이 값은 0보다 커야 합니다.

클라이언트가 PartyNetwork::AuthenticateLocalUser()를 호출하여 이 제한을 위반하는 경우 작업이 비동기적으로 실패하고 PartyAuthenticateLocalUserCompletedStateChange::resultPartyStateChangeResult::NetworkLimitReached로 설정됩니다.

maxDeviceCount uint32_t

네트워크에 연결할 수 있는 최대 디바이스 수입니다.

이 값의 범위는 1~c_maxNetworkConfigurationMaxDeviceCount입니다.

클라이언트가 PartyManager::ConnectToNetwork()를 호출하여 이 제한을 위반하는 경우 작업이 비동기적으로 실패하고 PartyConnectToNetworkCompletedStateChange::resultPartyStateChangeResult::NetworkLimitReached로 설정됩니다.

maxUsersPerDeviceCount uint32_t

디바이스당 허용되는 최대 사용자 수입니다.

이 값의 범위는 1~c_maxLocalUsersPerDeviceCount입니다.

클라이언트가 PartyNetwork::AuthenticateLocalUser()를 호출하여 이 제한을 위반하는 경우 작업이 비동기적으로 실패하고 PartyAuthenticateLocalUserCompletedStateChange::resultPartyStateChangeResult::NetworkLimitReached로 설정됩니다.

maxDevicesPerUserCount uint32_t

사용자당 허용되는 최대 디바이스 수입니다.

이 값은 0보다 커야 합니다.

클라이언트가 PartyNetwork::AuthenticateLocalUser()를 호출하여 이 제한을 위반하는 경우 작업이 비동기적으로 실패하고 PartyAuthenticateLocalUserCompletedStateChange::resultPartyStateChangeResult::NetworkLimitReached로 설정됩니다.

maxEndpointsPerDeviceCount uint32_t

디바이스당 허용되는 최대 엔드포인트 수입니다.

이 값의 범위는 0~c_maxNetworkConfigurationMaxEndpointsPerDeviceCount입니다.

네트워크 구성을 사용하도록 지정한 이후에 클라이언트가 PartyNetwork::CreateEndpoint()를 호출하여 이 제한을 위반하는 경우 PartyNetwork::CreateEndpoint()에 대한 호출이 동기적으로 실패합니다. 네트워크 구성이 제공되기 이전에 클라이언트가 위반된 수의 엔드포인트 만들기를 이미 큐에 넣은 경우 네트워크에서 클라이언트가 시작되고 PartyNetworkDestroyedStateChange가 생성됩니다.

directPeerConnectivityOptionsPartyDirectPeerConnectivityOptions

네트워크의 디바이스 간에 직접 피어 투 피어 연결 시도를 지원하는지 여부와 방법입니다.

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

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

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

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

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

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

요구 사항

헤더: Party.h

참고 항목

파티 멤버
PartyNetwork::AuthenticateLocalUser
PartyAuthenticateLocalUserCompletedStateChange
PartyManager::ConnectToNetwork
PartyConnectToNetworkCompletedStateChange
PartyNetwork::CreateEndpoint
PartyNetworkDestroyedStateChange
PartyStateChangeResult
PartyDirectPeerConnectivityOptions