PartyNetworkConfiguration
Netzwerkkonfigurationsdaten.
Syntax
struct PartyNetworkConfiguration {
uint32_t maxUserCount;
uint32_t maxDeviceCount;
uint32_t maxUsersPerDeviceCount;
uint32_t maxDevicesPerUserCount;
uint32_t maxEndpointsPerDeviceCount;
PartyDirectPeerConnectivityOptions directPeerConnectivityOptions;
}
Mitglieder
maxUserCount
uint32_t
Die maximale Anzahl eindeutiger Benutzer, die im Netzwerk zulässig sind.
Dieser Wert muss größer als 0 sein.
Wenn ein Client diesen Grenzwert durch aufrufen von PartyNetwork::AuthenticateLocalUser() verletzt, schlägt der Vorgang asynchron fehl, und PartyAuthenticateLocalUserCompletedStateChange::result wird auf PartyStateChangeResult::NetworkLimitReached festgelegt.
maxDeviceCount
uint32_t
Die maximale Anzahl von Geräten, die eine Verbindung mit dem Netzwerk herstellen dürfen.
PlayFab Party-Netzwerke können skaliert werden, um zwischen zwei und 128 Geräten zu unterstützen. Der Dienst wählt eine für Ihr Szenario optimierte Netzwerkrelaykonfiguration aus. Daher ist es wichtig, in maxDeviceCount
PartyNetworkConfiguration
so zu konfigurieren, dass es der maximal erwarteten Anzahl von Geräten in Ihrem Netzwerk entspricht.
Wenn ein Client diesen Grenzwert durch aufrufen von PartyManager::ConnectToNetwork() verletzt, schlägt der Vorgang asynchron fehl, und PartyConnectToNetworkCompletedStateChange::result wird auf PartyStateChangeResult::NetworkLimitReached festgelegt.
maxUsersPerDeviceCount
uint32_t
Die maximal zulässige Anzahl von Benutzern pro Gerät.
Dieser Wert muss zwischen 1 und c_maxLocalUsersPerDeviceCount
einschließlich liegen.
Wenn ein Client diesen Grenzwert durch aufrufen von PartyNetwork::AuthenticateLocalUser() verletzt, schlägt der Vorgang asynchron fehl, und PartyAuthenticateLocalUserCompletedStateChange::result wird auf PartyStateChangeResult::NetworkLimitReached festgelegt.
maxDevicesPerUserCount
uint32_t
Die maximal zulässige Anzahl von Geräten pro Benutzer.
Dieser Wert muss größer als 0 sein.
Wenn ein Client diesen Grenzwert durch aufrufen von PartyNetwork::AuthenticateLocalUser() verletzt, schlägt der Vorgang asynchron fehl, und PartyAuthenticateLocalUserCompletedStateChange::result wird auf PartyStateChangeResult::NetworkLimitReached festgelegt.
maxEndpointsPerDeviceCount
uint32_t
Die maximal zulässige Anzahl von Endpunkten pro Gerät.
Dieser Wert muss zwischen 0 und c_maxNetworkConfigurationMaxEndpointsPerDeviceCount
einschließlich liegen.
Wenn ein Client diesen Grenzwert verletzt, indem er PartyNetwork::CreateEndpoint() aufruft, nachdem die Netzwerkkonfiguration verfügbar gemacht wurde, schlägt der Aufruf von PartyNetwork::CreateEndpoint() synchron fehl. Wenn der Client bereits eine verletzte Anzahl von Endpunkterstellungen in die Warteschlange gestellt hat, als die Netzwerkkonfiguration verfügbar wurde, wird der Client aus dem Netzwerk ausgelöst, und es wird ein PartyNetworkDestroyedStateChange generiert.
directPeerConnectivityOptions
PartyDirectPeerConnectivityOptions
Gibt an, ob und wie direkte Peer-to-Peer-Verbindungsversuche zwischen Geräten im Netzwerk unterstützt werden.
Im Rahmen der erfolgreichen Authentifizierung eines ersten Benutzers in einem Netzwerk kann ein Gerät versuchen, direkte Peer-to-Peer-Verbindungen mit anderen Geräten herzustellen, die bereits am Netzwerk teilnehmen, sofern dies durch diese Flags zulässig ist. Bei erfolgreichen Versuchen werden Endpunktnachrichten und Chatdaten zwischen den Geräten mithilfe dieser direkten Verbindungen übertragen. Bei Versuchen, die aufgrund von Umgebungsinkompatibilitäten zwischen den Geräten fehlschlagen, wird die gesamte Kommunikation zwischen diesen Geräten stattdessen über transparente Cloudrelayserver übertragen. Wenn die Geräte keine direkten Peerverbindungen über diese Flags versuchen dürfen, tauschen sie niemals IP-Adressinformationen aus und übertragen immer Endpunktnachrichten und Chatdaten über transparente Cloudrelayserver.
Sie können feststellen, ob das lokale Gerät tatsächlich eine direkte Peer-zu-Peer-Verbindung mit einem bestimmten Remotegerät hergestellt hat, indem Sie PartyNetwork::GetDeviceConnectionType()aufrufen.
Eine erfolgreiche direkte Peerkonnektivität kann zu einer geringeren Latenz zwischen einigen Geräten führen, obwohl der Versuch, sie einzurichten, auch erfordert, dass Benutzer die IP-Adressen ihrer Geräte für andere offenlegen. Dies kann ein Problem für den Datenschutz sein oder böswilligen Benutzern ermöglichen, geräte und Internetverbindungen von Peers außerhalb des Titels zu attackieren. Es kann auch auf bestimmten Plattformen aus politischen Gründen nicht zulässig sein. Achten Sie darauf, die entsprechenden Flags für Ihre Leistungs- und Sicherheitsziele zu verwenden.
Neben dem hier konfigurierten Wert des spezifischen Netzwerks können die Flags optional durch ein Gerät für alle Netzwerke, bei denen die Authentifizierung erfolgt, weiter eingeschränkt werden, indem PartyManager::SetOption() zum Festlegen von PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask verwendet wird. Alle Flags werden mithilfe einer bitweisen AND-Operation ausgewertet. Das heißt, ein bestimmtes Flag ist tatsächlich nur für das Gerätepaar eines bestimmten Netzwerks wirksam, wenn es an drei Stellen aktiviert ist: in diesem Feld für das Netzwerk und den jeweiligen lokalen Maskenoptionen beider Geräte. Selbst wenn dieses Feld eine direkte Peerkonnektivität des relevanten Formulars zulässt, kann eines der Geräte einseitig die OFFENLEGUNG der IP-Adresse und direkte Verbindungsversuche zwischen ihnen deaktivieren, indem das Flag in seiner lokalen Gerätemaskenoption nicht aktiviert wird. Der PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask-Wert lässt standardmäßig alle direkten Peerverbindungen zu, die von Netzwerken aktiviert werden. Daher müssen Sie sie nur konfigurieren, wenn gerätespezifische Anforderungen bestehen, um zu verhindern, dass einige oder alle direkte Peerkonnektivitäten damit verbunden sind.
Um einen übermäßigen Ressourcenverbrauch zu vermeiden, verhindert die Parteibibliothek auch intern, dass ein bestimmtes Gerät versucht, mehr als eine konfigurierte maximale Anzahl von direkten Peerverbindungen über alle Netzwerke herzustellen, an denen es derzeit teilnimmt, auch wenn diese Flags dies zulassen. Dies wirkt sich nicht auf die Fähigkeit des Geräts aus, an großen oder mehreren Netzwerken mit zusätzlichen Remotegeräten teilzunehmen. Die Kommunikation mit zusätzlichen Geräten wird einfach über transparente Cloud-Relayserver übertragen. Um diese maximale Anzahl direkter Peerverbindungen zu ändern, verwenden Sie PartyManager::SetOption(), um PartyOption::LocalDeviceMaxDirectPeerConnections festzulegen.
Es wird empfohlen, dass Sie die Verfügbarkeit einer direkten Peer-zu-Peer-Verbindung für ein bestimmtes Gerätepaar nicht aktiv erzwingen (d. h. nicht PartyNetwork::LeaveNetwork() aufrufen, wenn PartyNetwork::GetDeviceConnectionType() einen anderen Wert als PartyDeviceConnectionType::D irectPeerConnection) meldet, da die spezifische zugrunde liegende Übertragungsmethode die gesamte logische Kommunikationsfähigkeit nicht ändert. Wenn Ihr Spielentwurf strenge Anforderungen an die maximale Nachrichtenlatenz hat, die die direkte Peerkonnektivität fördern, ist es besser, Maßnahmen auf die aktuellen konkreten Beobachtungen dieser Latenz zu ergreifen, die von der Statistik PartyEndpointStatistic::AverageDeviceRoundTripLatencyInMilliseconds gemeldet werden, anstatt abstrakte Annahmen basierend auf dem Übertragungsmechanismus zu treffen. Andernfalls könnten Sie Benutzer ständig daran hindern, mit derselben Gruppe von Freunden zu spielen, die immer in der Nähe befindliche transparente Cloudrelayserver verwenden müssen, da umgebungsbedingte Faktoren außerhalb ihrer Kontrolle liegen.
Voraussetzungen
Kopfball: Party.h
Weitere Informationen
Party-Mitglieder
PartyNetwork::AuthenticateLocalUser
PartyAuthenticateLocalUserCompletedStateChange
PartyManager::ConnectToNetwork
PartyConnectToNetworkCompletedStateChange
PartyNetwork::CreateEndpoint
PartyNetworkDestroyedStateChange
PartyStateChangeResult
PartyDirectPeerConnectivityOptions