Notre système de classement est l'une des fonctionnalités les plus populaires de brainCloud. Il est donc très utilisé, et ce, par de nombreux jeux, de différentes manières.
Bien que le système soit très flexible et globalement performant, une partie est moins performante : le comptage des participants dans un classement. En raison du fonctionnement de MongoDB (et de la structure de nos classements), cette opération est plus lente (et moins évolutive) que nous le souhaiterions. Et dans certaines circonstances (par exemple, à la fin d'un tournoi ou d'un événement LiveOps personnalisé, lorsque tout le monde attend ses résultats), ces ralentissements peuvent s'accumuler !
À partir de brainCloud 5.6, les nombres de classements sont désormais précalculés et stockés pour deux scénarios d'utilisation élevée :
Résultats du tournoi : Lorsqu'un tournoi est terminé et que les récompenses sont calculées, nous comptons et stockons désormais le nombre total de joueurs une fois et l'utilisons pour le traitement par lots et en temps réel des récompenses du tournoi.
Classements pivotés : lorsqu'un classement pivote, nous comptons les entrées et les stockons dans l'historique des versions du classement, en utilisant automatiquement cette valeur lorsque l'application appelle
GetGlobalLeaderboardEntryCountByVersion()
.
Les améliorations ci-dessus sont intégrées et automatiquement activées pour toutes les applications.
"NEVER ROTATION" Cache du classement
Les deux scénarios précédents calculent et enregistrent le nombre de classements terminés. Ces classements n'étant plus actifs, le nombre d'inscriptions n'augmente plus.
Il n'en va pas de même pour les classements "NEVER ROTATION". Ces classements sont actifs en permanence et peuvent compter des millions de joueurs. De ce fait, le comptage dynamique des inscriptions peut prendre un certain temps.
Afin d'améliorer les performances de ces classements, nous avons ajouté un nouveau système (la cache de classement "NEVER ROTATION" ) qui comptabilise périodiquement (toutes les 2 à 5 minutes) le nombre d'enregistrements et met en cache le résultat. Ce compteur mis en cache est également incrémenté/décrémenté dynamiquement à mesure que de nouveaux scores sont ajoutés ou supprimés. Ainsi, ce compteur mis en cache suit de près le nombre exact d'entrées, même si son exactitude n'est pas garantie à 100 %.
Lorsqu'un classement est très important, la différence entre 1,500,000 et 1,500,001 n'est pas significative… Cependant, les applications avec cette mise en cache activée doivent veiller à gérer le cas où le système indique que le classement du joueur est de 1,500,001, mais qu'il n'y a que 1,500,000 participants au classement. [Indice : dans ce cas, gonflez artificiellement le nombre de participants à 1,500,001 pour l'affichage.]
Remarques importantes :
La plupart des applications n'ont pas besoin de la cache "NEVER ROTATION". Elle est donc désactivé par défaut pour toutes les applications.
Les développeurs ne peuvent pas activer la cache "NEVER ROTATION" par eux-mêmes. Notre équipe d'assistance l'active au cas par cas pour chaque application.
Contactez l'assistance brainCloud si vous avez des questions pour savoir si nous devons l'activer pour votre application !