View a markdown version of this page

GAMEPERF05-BP02 Transférez les tâches de calcul non sensibles à la latence vers des flux de travail asynchrones - Lens de l'industrie du jeu

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

GAMEPERF05-BP02 Transférez les tâches de calcul non sensibles à la latence vers des flux de travail asynchrones

Lorsque vous optimisez les performances de votre jeu, il est important de garder à l'esprit que seules certaines interactions entre le client et le backend du jeu doivent être effectuées de manière synchrone. Vous devez examiner chaque fonctionnalité du point de vue de l'expérience du joueur et déterminer si certaines interactions nécessitent des communications synchrones, qui sont bloquantes et gourmandes en ressources, ou si ces fonctionnalités peuvent être implémentées de manière asynchrone. Lorsque vous implémentez des appels réseau, utilisez une approche asynchrone et non bloquante. En outre, le backend de votre jeu doit également être configuré pour effectuer le travail de manière efficace en déchargeant les tâches dans les files d'attente et en donnant la priorité aux réponses rapides aux clients dans la mesure du possible.

Niveau d’exposition au risque si cette bonne pratique n’est pas respectée : élevé

Directives d’implémentation

Par exemple, la mise à jour d'un classement à la fin d'une session de joueur peut être mise en œuvre de manière asynchrone afin que le client n'ait pas à attendre la fin de la mise à jour du classement. Implémentez plutôt cette opération de manière asynchrone sur le client du jeu et envisagez de concevoir votre service principal de manière à placer ces types d'opérations dans des files d'attente, comme Amazon SQS. Avec cette architecture, configurez votre backend pour qu'il accepte la demande, mettez-la en file d'attente dans SQS, ce qui permet de stocker durablement les messages pour un traitement asynchrone, et répondez rapidement au client. Une fois la mise à jour du classement terminée, le backend peut envoyer une mise à jour au client du jeu afin que la vue du joueur sur le classement soit mise à jour.

Alternativement, le joueur peut simplement accéder à l'écran du classement de votre jeu pour récupérer les dernières données, ce qui peut envoyer une requête Web à votre backend pour récupérer les dernières données du cache.

Étapes d’implémentation

  • Déterminez si les interactions client-backend nécessitent une communication synchrone ; implémentez des approches asynchrones et non bloquantes dans la mesure du possible pour optimiser l'utilisation des ressources.

  • Utilisez Amazon SQS pour vous décharger de tâches non critiques, telles que les mises à jour des classements.

  • Autorisez le client à récupérer les données mises à jour de manière asynchrone, par exemple en récupérant les dernières données du classement à la demande ou via des mises à jour en arrière-plan.

Ressources