Skip to main content

PlayFab Party y conexiones directas de punto a punto

En esta página se explica cómo puede habilitar y usar conexiones directas de punto a punto en PlayFab Party mediante código de juego de ejemplo. También incluye consideraciones para ayudarle a evaluar cuándo usar conexiones directas de punto a punto en sus juegos.

Cuándo usar conexiones directas de punto a punto

PlayFab Party admite una amplia variedad de topologías de comunicación. Conceptualmente, todos los mensajes de chat o de datos van de un dispositivo o usuario del mismo nivel directamente a otros. Sin embargo, Party aprovechará automáticamente un servicio transparente de retransmisión en la nube para evitar los problemas comunes de entorno y seguridad al establecer conexiones directas de punto a punto. Puede lograr una transmisión de datos de baja latencia aprovechando sus mediciones de calidad de servicio (QoS) en segundo plano. (Para obtener más información, consulte Mediciones de QoS de PlayFab Party.) Opcionalmente, puede habilitar conexiones directas de punto a punto para reducir aún más la latencia de la transmisión de datos. Debido a los problemas de seguridad detallados en “Consideraciones de seguridad” a continuación, Microsoft recomienda que use nuestro servicio de retransmisión en la nube en lugar de habilitar la conexión directa de punto a punto, a menos que su título tenga requisitos estrictos de latencia.

Compatibilidad de plataformas

La conectividad directa de punto a punto se admite en las versiones de la biblioteca de Party para Windows 10, Microsoft Game Core, Nintendo Switch, PlayStation®4 y PlayStation®5. Otras versiones de la biblioteca siempre usarán la retransmisión en la nube para la transmisión de datos, independientemente de las opciones de conectividad directa de punto a punto especificadas a través de la API de cliente. “PlayStation” es una marca registrada o marca comercial de Sony Interactive Entertainment Inc.

Consideraciones de seguridad

Dado que la conectividad directa de punto a punto se usa para enviar datos directamente entre clientes, todos los clientes necesitan saber cómo conectarse entre sí. Esto se hace compartiendo las direcciones IP de los clientes entre los clientes de una sesión de juego. Por ejemplo, si un juego multijugador de 16 jugadores usa conectividad directa de punto a punto para actualizar las posiciones de los jugadores, cada uno de los 16 clientes del juego necesita conocer las direcciones IP de los otros 15 clientes para saber a quién enviar los datos. Compartir direcciones IP entre clientes del juego es un riesgo de seguridad. Compartir direcciones IP puede permitir que actores malintencionados detecten la dirección IP y la usen para atacar de forma malintencionada a otros jugadores fuera de los juegos. Un método común para llevar a cabo estos ataques es a través de ataques de denegación de servicio (DOS), o una variación denominada ataques de denegación de servicio distribuido (DDOS). Los ataques funcionan intentando saturar una red con tráfico de red superfluo. Si un atacante puede enviar suficiente tráfico de red a su víctima, el hardware de red de la víctima (módem y enrutador) tiene que dedicar todo su tiempo a procesar el tráfico superfluo y no tiene tiempo para realizar su trabajo normal de procesar las conexiones de red legítimas. En la práctica, esto significa que la víctima no puede usar su red durante toda la duración del ataque. Con frecuencia, esto se conoce como quedar “expulsado sin conexión”. En conclusión, una conectividad directa de punto a punto correcta puede proporcionar una latencia menor entre algunos dispositivos. Sin embargo, intentar establecerla también requiere que los usuarios revelen sus direcciones IP a otros, lo que puede permitir que usuarios malintencionados ataquen sus dispositivos y conexiones a Internet fuera del título. La conexión directa de punto a punto tampoco puede estar permitida en determinadas plataformas por motivos de directiva. Asegúrese de usar las opciones de conectividad directa de punto a punto adecuadas para sus objetivos de rendimiento y seguridad. Si decide usar la conectividad directa de punto a punto después de sopesar los riesgos, use los ejemplos siguientes para habilitar su título por red y por dispositivo.

Escenarios de LAN

La conectividad directa de punto a punto en Party se puede usar para habilitar una latencia extremadamente baja en escenarios de LAN. Sin embargo, incluso en estos escenarios, se requiere una conectividad limitada a Internet para admitir la autenticación de usuarios, los datos e información de LiveOps y las características de accesibilidad del chat de voz.

Consideraciones sobre el ancho de banda de subida

El uso de la conectividad directa de punto a punto puede aumentar el uso del ancho de banda de subida de su juego. Al transmitir un mensaje de juego o de voz a través del servicio de retransmisión en la nube, Party envía un solo mensaje al servicio; a continuación, el servicio replica y reenvía el mensaje a cada dispositivo de destino. Al transmitir un mensaje de juego o de voz a través de conexiones directas de punto a punto, Party replica y envía el mensaje a través de una conexión directa para cada dispositivo de destino con el que se haya establecido una conexión directa de punto a punto. Por lo tanto, el uso del ancho de banda de subida de su juego se escalará proporcionalmente con el número de dispositivos con los que se haya establecido una conexión directa de punto a punto. Considere si este aumento en el ancho de banda de subida es aceptable para su juego antes de habilitar las conexiones directas de punto a punto.

Cómo usar conexiones directas de punto a punto en su juego

Habilitación de conexiones directas de punto a punto en su red

Al crear una red a través de PartyManager::CreateNewNetwork(), puede especificar varios parámetros de configuración de red a través de la estructura PartyNetworkConfiguration proporcionada a la llamada. Puede usar el campo PartyNetworkConfiguration::directPeerConnectivityOptions para especificar si se admite la conectividad directa de punto a punto para los dispositivos de la red y cómo se admite. El ejemplo siguiente muestra una configuración de red que especifica que se deben intentar conexiones directas de punto a punto entre todos los dispositivos de la red, independientemente del tipo de plataforma o del proveedor de inicio de sesión.
Como parte de la autenticación correcta de un usuario inicial en una red, un dispositivo puede intentar establecer conexiones directas de punto a punto con otros dispositivos que ya participan en la red cuando la configuración de red lo permite. Para los intentos que se realizan correctamente, los mensajes de punto de conexión y los datos de chat entre los dispositivos se transmitirán mediante esas conexiones directas. Para los intentos que fallan debido a incompatibilidades de entorno entre los dispositivos, toda la comunicación entre esos dispositivos se transmitirá en su lugar a través de servidores transparentes de retransmisión en la nube. Si la configuración de red no permite que los dispositivos intenten conexiones directas de punto a punto, entonces nunca intercambian información de direcciones IP y siempre transmitirán los mensajes de punto de conexión y los datos de chat a través de servidores transparentes de retransmisión en la nube.
El establecimiento de la conectividad directa de punto a punto es de tipo mejor esfuerzo y puede no ser posible debido a factores del entorno, opciones de conectividad por dispositivo o directivas de la plataforma. Para obtener más información sobre cómo evaluar si se estableció una conexión directa de punto a punto con un dispositivo determinado, consulte Evaluación del tipo de conexión y la latencia.

Restricción de la conectividad directa de punto a punto por dispositivo

Además de las opciones de conectividad directa de punto a punto de la configuración de red, un dispositivo puede restringir aún más la conectividad directa de punto a punto para todas las redes en las que se autentica mediante PartyManager::SetOption() para establecer PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask. Todas las marcas se evalúan mediante una operación AND bit a bit. Es decir, una marca determinada solo está en vigor para un par de dispositivos de una red determinada si está habilitada en tres lugares: la configuración de red y las opciones de máscara local respectivas de ambos dispositivos. Incluso si la configuración de red permite la conectividad directa de punto a punto de la forma correspondiente, cualquiera de los dispositivos puede optar de forma independiente por no participar en la divulgación de direcciones IP ni en los intentos de conexión directa entre ellos si no habilita la marca en su opción de máscara del dispositivo local. En las versiones de la biblioteca que admiten conectividad directa de punto a punto, el valor PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask permite de forma predeterminada todas las conexiones directas de punto a punto habilitadas por las redes. Por lo tanto, solo necesita configurarlo si tiene requisitos específicos del dispositivo para impedir parte o toda la conectividad directa de punto a punto que implique al dispositivo local. El ejemplo siguiente muestra cómo restringir la conectividad directa de punto a punto para el dispositivo local de modo que solo intente establecer conectividad directa de punto a punto con dispositivos de la misma plataforma.

Evaluación del tipo de conexión y la latencia

Puede determinar si el dispositivo local estableció una conexión directa de punto a punto con un dispositivo remoto específico llamando a PartyNetwork::GetDeviceConnectionType(). Le recomendamos que no imponga activamente la disponibilidad de una conexión directa de punto a punto para un par de dispositivos determinado (es decir, no llame a PartyNetwork::LeaveNetwork() si PartyNetwork::GetDeviceConnectionType() notifica un valor distinto de PartyDeviceConnectionType::DirectPeerConnection), ya que el método de transmisión subyacente específico en uso no altera la capacidad lógica general de comunicación. Si el diseño de su juego tiene requisitos estrictos de latencia máxima de mensajes que fomenten la conectividad directa de punto a punto, es mejor actuar sobre las observaciones concretas actuales de esa latencia según lo notificado por la estadística PartyEndpointStatistic::AverageDeviceRoundTripLatencyInMilliseconds en lugar de hacer suposiciones abstractas basadas en el mecanismo de transmisión. De lo contrario, podría obstaculizar continuamente a los usuarios que intentan jugar con el mismo conjunto de amigos y que siempre necesitan usar servidores transparentes de retransmisión en la nube cercanos debido a factores del entorno fuera de su control. El ejemplo siguiente muestra cómo inspeccionar la latencia de ida y vuelta desde un localEndpoint hasta un remoteEndpoint en una network.

Cambios en el tipo de conexión

Es posible que las condiciones cambiantes del entorno interrumpan una conexión directa de punto a punto de forma que quede inutilizable para PlayFab Party. Si esto ocurre, los dispositivos intentan recurrir a la comunicación a través del servidor de retransmisión en la nube. Si la comunicación retransmitida sigue siendo posible, la función PartyNetwork::GetDeviceConnectionType() comenzará a notificar PartyDeviceConnectionType::RelayServer y los dispositivos permanecerán en la red de Party usando el nuevo tipo de conexión en adelante. De lo contrario, los dispositivos con la conectividad interrumpida abandonarán la red.
Los mensajes de chat y de juego que aún estaban en proceso de transmitirse o recibirse en la conexión directa de punto a punto cuando se interrumpió pueden no llegar nunca, incluso si se enviaron mediante PartySendMessageOptions::GuaranteedDelivery, e incluso si ya no se cuentan en los valores PartyEndpointStatistic::CurrentlyQueuedSendMessages o PartyEndpointStatistic::CurrentlyActiveSendMessages devueltos por PartyLocalEndpoint::GetEndpointStatistics().
Además, los mensajes transmitidos durante el período de transición del tipo de conexión podrían llegar desordenados incluso si se enviaron mediante PartySendMessageOptions::SequentialDelivery. Su título debe estar preparado para esta posibilidad de pérdida y desorden de datos al usar conexiones directas de punto a punto y estas PartySendMessageOptions. Un tipo de conexión PartyDeviceConnectionType::RelayServer nunca cambiará a otro tipo, independientemente de si ese valor se asignó cuando el dispositivo se unió inicialmente a la red o después de una conexión directa de punto a punto interrumpida anteriormente.

Medidores de facturación

En las redes que usan conexiones directas de punto a punto se aplican los mismos medidores de facturación que en las redes que usan el servicio de retransmisión en la nube. Sin embargo, solo los datos de juego o de voz que pasan por el servicio de retransmisión en la nube cuentan para los medidores de Salida de red y Voz de Party.
Última modificación el 28 de agosto de 2026