다음을 통해 공유


전송 동작 구성

PlayFab 파티의 네트워킹 기능은 네이티브 플랫폼의 UDP(User Datagram Protocol) 기능을 확장하여 실시간 멀티 플레이어 게임에 적합한 데이터그램 전송 기능을 제공합니다.

TCP(Transmission Control Protocol)는 신뢰할 수 있는 스트림을 제공하고 UDP는 신뢰할 수 없는 데이터그램을 제공하지만 파티의 네트워킹 동작은 데이터그램별로 구성할 수 있습니다. PartyLocalEndpoint::SendMessage를 사용하여 로컬 파티 엔드포인트에서 원격 엔드포인트로 데이터그램을 전송하는 경우 PartySendMessageOptions를 지정하여 원하는 전송 동작을 세밀하게 조정할 수 있습니다.

기능은 다음과 같습니다.

  • 보장된 배달 - GuaranteedDelivery 플래그는 메시지가 모든 대상에 도착하도록 하고 필요한 경우 암시적으로 데이터를 다시 전송하여 환경 패킷 손실을 줄입니다. 이 옵션 플래그는 항상 대상에 도달해야 하고 그러지 않으면 대상을 네트워크에서 제거해야 하는 중요한 상태 정보를 보낼 때 효과적입니다. 기본 옵션은 UDP와 유사한 실행 후 망각 동작을 제공하는 BestEffortDelivery입니다.
  • 순차적 배달 - 이 로컬 엔드포인트에서 대상 엔드포인트로 순서대로 보낸 다른 메시지를 기준으로 메시지 배달의 순서를 지정합니다. 특정 순서로 대상에 도달해야 하는 상태 정보를 보낼 때 이 옵션 플래그를 사용합니다. 이 경우 네트워크 효율성이 약간 낮아지고 환경에서 패킷 손실이 발생하거나 환경에서 순서를 조정하느라 모든 패킷을 받을 때까지 더 오래 걸릴 수 있습니다. GuaranteedDeliverySequentialDelivery를 함께 사용하면 이전에 전송된 순차 메시지가 도착할 때까지 기다리느라 메시지가 대상 엔드포인트에서 큐에 대기될 수 있습니다. 이로 인해 환경 패킷 손실이나 순서 조정이 발생할 경우 대기 시간이 눈에 띄게 증가할 수 있지만 대상 엔드포인트에는 항상 모든 메시지가 전송된 순서와 같은 순서로 표시됩니다. 이러한 성능상의 장단점은 TCP와 같은 프로토콜의 공통점이며 HOL(Head-Of-Line) 차단이라고도 합니다.
  • 병합 - 파티 라이브러리는 호출자가 관리할 필요가 없도록 환경에서 지원하는 최대 크기를 초과하는 큰 메시지를 자동으로 조각화한 후 재구성합니다. 그러나 많은 수의 작은 데이터그램을 보내는 경우 여러 메시지를 단일 패킷에 병합하면 대역폭 효율성이 극대화될 수 있지만(패킷당 오버헤드 감소) 병합하기 위해 전송을 지연할 경우 메시지 대기 시간이 감지될 만큼 발생할 수 있습니다. CoalesceOpportunistically 플래그(기본 병합 옵션)를 사용하여 보내면 파티 라이브러리에서 메시지를 다른 큐에 대기 중인 메시지(있는 경우)와 병합하지만, 이 메시지를 즉시 전송할 수 있는 경우 더 많은 메시지를 기다리지 않습니다. AlwaysCoalesceUntilFlushed 플래그를 사용하여 보내면 파티 라이브러리에서 PartyLocalEndpoint::FlushMessages()가 호출될 때까지 전송을 지연하고, 호출될 때 큐에 있는 메시지를 병합하여 전송합니다.

파티 전송 옵션

네트워크 통계 및 로컬 큐

메시지 전송 옵션 및 네트워크 상태에 따라 파티는 메시지를 전송하기 전에 로컬에서 큐에 넣을 수 있습니다. 이 로컬 큐는 대기 시간이 발생하지 않도록 신중하게 관리됩니다. 파티가 플레이어의 네트워크를 넘치게 않고 병합과 같은 기능을 적용할 수 있도록 하는 데 필요합니다.

PartyNetwork::GetNetworkStatistics를 사용하면 파티 릴레이 서비스의 대기 시간을 비롯한 집계 네트워크 성능에 대한 데이터를 수집할 수 있습니다. PartyLocalEndpoint::GetEndpointStatistics를 통해 특정 원격 엔드포인트의 큐 및 패킷 손실 통계를 확인할 수 있습니다.