Types de pipelines
Le type de pipeline est directement lié au type d’événements qu’un pipeline émet. Un développeur peut instancier deux types de pipelines différents :- Telemetry Event Pipeline : ne peut émettre que des événements de télémétrie et utilise l’API REST Write Telemetry Events.
- PlayStream Event Pipeline : ne peut émettre que des événements PlayStream et utilise l’API REST Write Events.
Types d’authentification
Le type d’authentification est un autre élément important de la création d’un pipeline. Deux mécanismes d’authentification sont pris en charge pour les événements PlayFab : l’authentification par entité et l’authentification par clé de télémétrie. L’authentification par entité est utilisée lorsque le développeur de jeux souhaite lier ses événements à une entité particulière en vue d’une agrégation ou d’une analyse ultérieure. Par exemple, le développeur de jeux peut journaliser des événements liés aux actions des joueurs afin d’analyser plus en détail le comportement des joueurs de votre titre et de permettre une segmentation. L’authentification par clé de télémétrie est utilisée lorsque le développeur de jeux souhaite journaliser des événements qui n’ont pas nécessairement besoin d’être liés à une entité. Par exemple, avant qu’un joueur ne soit connecté, le titre peut commencer à envoyer des événements liés aux performances ou à des métriques spécifiques qu’il souhaite collecter pour une analyse ultérieure. Cela peut se faire sans passer par le processus d’authentification d’entité habituel. Combinaisons type d’authentification / type d’événement prises en chargeAuthentification par entité
Ce type d’authentification est la méthode d’authentification PlayFab normale et la plus courante. Il est étroitement lié à une entité spécifique et vous oblige à appeler les API de connexion PlayFab correspondantes pour obtenir un jeton d’entité à utiliser dans tous les appels ultérieurs. La liste suivante présente les différents types d’entités utilisables avec l’authentification par entité.- namespace : l’entité d’espace de noms représente l’identité du joueur inter-titres et l’étendue des données partagées. L’ID d’éditeur identifie l’espace de noms.
- title : l’entité de titre représente les informations globales propres à ce titre.
- master_player_account : le
master_player_accountest une entité de joueur partagée par tous les titres d’un espace de noms. - title_player_account : pour la plupart des développeurs, title_player_account représente le joueur de la manière la plus traditionnelle.
- character : l’entité de personnage est une sous-entité de title_player_account.
- group : l’entité de groupe est un conteneur d’autres entités. Elle est actuellement limitée aux joueurs et aux personnages.
Authentification par clé de télémétrie
L’authentification par clé de télémétrie ne nécessite pas de jeton d’entité ; elle n’est donc liée à aucune entité spécifique. Si l’authentification par clé de télémétrie est utilisée, un struct PFEventPipelineTelemetryKeyConfig est requis lors de la création du pipeline. Ce struct comporte deux éléments principaux :- Une clé de télémétrie, constituée d’une chaîne créée et gérée dans PlayFab Game Manager.
- Un PFServiceConfigHandle, qui indique au SDK la configuration de service à utiliser pour l’envoi des événements. Le handle de configuration de service est créé lors de l’initialisation du SDK en appelant PFServiceConfigCreateHandle.
Configuration du pipeline d’événements
Comme indiqué précédemment, le pipeline d’événements possède des propriétés configurables qui peuvent être fournies après la création du pipeline via le paramètre struct PFEventPipelineConfig. Les propriétés configurables sont les suivantes :- maxEventsPerBatch : nombre maximal d’événements regroupés en lot avant leur écriture dans PlayFab.
- maxWaitTimeInSeconds : durée maximale pendant laquelle le pipeline attend avant d’envoyer un lot incomplet.
- pollDelayInMs : durée pendant laquelle le pipeline attend avant de lire à nouveau la mémoire tampon des événements après l’avoir vidée.
- compressionLevel : définit le niveau de compression utilisé par l’algorithme de compression. Pour plus de détails sur la compression, consultez Compression GZIP.
- retryOnDisconnect : le pipeline d’événements tente de renvoyer les événements dont l’envoi a échoué en raison d’une perte de connexion. Disponible uniquement pour Telemetry Event Pipeline.
- bufferSize : limite du nombre d’événements dans la mémoire tampon du pipeline.
Valeurs par défaut
Si seules certaines propriétés de PFEventPipelineConfig sont spécifiées, les propriétés vides sont remplacées et utilisent les valeurs par défaut.
Pour un exemple de mise à jour de l’une de ces propriétés pour le pipeline d’événements, consultez Mettre à jour la configuration du pipeline.
Compression GZIP
Le pipeline d’événements offre la possibilité de compresser les charges utiles du corps à l’aide de la norme de compression GZIP. Le niveau de compression souhaité peut être spécifié dans le struct PFEventPipelineConfig, qui fait partie des paramètres de l’API PFEventPipelineUpdateConfiguration. Un niveau de compression plus faible compresse moins mais offre la vitesse la plus élevée, tandis qu’un niveau de compression plus élevé permet d’obtenir de meilleurs taux de compression, au prix d’une vitesse de compression plus lente. La différence entre les taux de compression dépend entièrement du type de données envoyées. Selon la taille et le caractère aléatoire des données, les taux de compression peuvent être identiques même avec des niveaux différents. Compromis : L’utilisation de la compression augmente le temps processeur en raison de la complexité supplémentaire liée à l’exécution d’un algorithme de compression, mais la charge utile réseau du corps diminue considérablement. Il appartient donc au développeur de jeux de décider s’il convient d’utiliser la compression, en fonction des besoins et des ressources du jeu. D’après une validation interne, on observe en moyenne une augmentation de 20 % du temps processeur et une diminution de 91 % de la taille de la charge utile du corps. Ces pourcentages peuvent varier considérablement en fonction de la taille de la charge utile et de la complexité des données compressées.Gestionnaires d’événements
Lors de la création du pipeline, les développeurs de jeux peuvent fournir deux gestionnaires d’événements facultatifs, appelés lors de l’envoi des événements. Toutefois, si le développeur de jeux souhaite un fonctionnement de type “fire and forget” (envoyer et oublier), il peut omettre les gestionnaires d’événements. Les gestionnaires d’événements pouvant être fournis sont les suivants :- PFEventPipelineBatchUploadSucceededEventHandler : comme son nom l’indique, il reçoit tous les événements envoyés avec succès à PlayFab.
- PFEventPipelineBatchUploadFailedEventHandler : il reçoit tous les événements ayant échoué après application de la logique de nouvelle tentative du pipeline.
Exemples de création de pipelines
Vous trouverez ci-dessous différents exemples d’instanciation d’un pipeline d’événements, basés sur les sujets abordés précédemment.-
Création d’un Telemetry Event Pipeline avec authentification par entité
Si le développeur souhaite envoyer des événements de télémétrie sans avoir besoin de l’authentification par clé de télémétrie, l’API PFEventPipelineCreateTelemetryPipelineHandleWithEntity répond à ce besoin, comme le montre l’exemple suivant :
Cet exemple montre comment créer un Telemetry Event Pipeline qui utilise l’authentification par entité et ne possède aucun gestionnaire. Le pipeline envoie donc les événements sans se préoccuper du résultat.
-
Création d’un Telemetry Event Pipeline avec authentification par clé de télémétrie
Si le développeur souhaite envoyer des événements de télémétrie et a besoin de l’authentification par clé de télémétrie, l’API PFEventPipelineCreateTelemetryPipelineHandleWithKey répond à ce besoin, comme le montre l’exemple suivant :
Cet exemple montre comment créer un pipeline d’événements de télémétrie qui n’utilise pas l’authentification par entité. Le pipeline d’événements commence à envoyer des événements à l’aide de la clé de télémétrie, avec la possibilité d’ajouter une entité ultérieurement. Voir Passer à l’authentification par entité ou mettre à jour l’entité
-
Création d’un PlayStream Event Pipeline
Si le développeur souhaite envoyer des événements PlayStream, l’API PFEventPipelineCreatePlayStreamPipelineHandle répond à ce besoin, comme le montre l’exemple suivant :
Cet exemple montre comment créer un PlayStream Event Pipeline qui utilise l’authentification par entité et ne possède aucun gestionnaire. Le pipeline envoie donc les événements sans se préoccuper du résultat.
-
Pipeline d’événements utilisant des gestionnaires d’événements
Cet exemple montre comment fournir des gestionnaires d’événements aux API de création de pipelines.
Émettre des événements
L’émission d’événements est une opération simple une fois le pipeline d’événements créé. Le développeur de jeux doit appeler l’API PFEventPipelineEmitEvent, qui reçoit le handle du pipeline d’événements existant et l’événement à envoyer.E_PF_API_CLIENT_REQUEST_RATE_LIMIT_EXCEEDED (0x892354dd)
Passer à l’authentification par entité ou mettre à jour l’entité
Si un pipeline a été créé uniquement avec une configuration de clé de télémétrie, il est possible de passer à l’authentification par entité, ou de mettre à jour votre pipeline pour qu’il utilise une autre entité. À l’aide de PFEventPipelineAddUploadingEntity, il est possible d’associer une entité à un pipeline en cours d’exécution sans avoir à le réinitialiser. Cette fonction remplace également l’entité existante, le cas échéant. Exemple : Un Telemetry Event Pipeline est créé avec une configuration de clé de télémétrie au début de l’exécution du titre. Cela peut être dû au fait qu’il n’existe pas encore d’identité de joueur, ou que vous ne souhaitez pas encore journaliser d’éléments liés à un joueur.Passer à l’authentification par clé de télémétrie
Pour compléter le scénario précédent, si le développeur souhaite revenir à l’authentification par télémétrie et dissocier la journalisation des événements de l’entité, il peut appeler PFEventPipelineRemoveUploadingEntity en transmettant le handle du pipeline d’événements, comme suit :Mettre à jour la configuration du pipeline
Vous pouvez mettre à jour les pipelines à l’aide de l’API PFEventPipelineUpdateConfiguration, qui reçoit le handle du pipeline d’événements existant et un nouveau struct de configuration, comme suit :Clés de télémétrie non valides ou désactivées
Si une clé de télémétrie est désactivée, ou si une clé non valide est fournie lors de la création du pipeline, tous les pipelines d’événements utilisant cette clé de télémétrie commencent à échouer dès qu’ils détectent que la clé n’est pas valide ou qu’elle est désactivée. Si le client réactive ensuite la clé, le pipeline ne s’en rend pas compte et continue de renvoyer des échecs via le gestionnaire d’événements d’échec. Notez que ce comportement est lié à la session : si le titre est redémarré, un nouveau pipeline est créé et peut à nouveau envoyer des événements.Cycle de vie des handles de pipeline
Comme les autres handles PlayFab, les handles de pipeline d’événements utilisent un modèle de duplication/fermeture :- PFEventPipelineCloseHandle : ferme un handle de pipeline. Lorsque le dernier handle d’un pipeline est fermé, le pipeline est détruit et tous les événements restants dans la mémoire tampon sont vidés.
- PFEventPipelineDuplicateHandle : duplique un handle de pipeline. Le handle d’origine et le handle dupliqué doivent tous deux être fermés indépendamment avec PFEventPipelineCloseHandle.
