Les classements brainCloud sont assez simples. Ils enregistrent et trient les entrées du classement en fonction du score du joueur score
, avec un tri secondaire basé sur l'heure de création/mise à jour de l'entrée. (Par exemple, les entrées les plus récentes ayant le même score sont mieux classées que les plus anciennes…) <- Ceci permet aux joueurs qui jouent activement à votre jeu *présentement* d'être plus satisfaits.
Mais peut-être que votre cas d'utilisation est plus compliqué - et il y a un critère secondaire différent que vous aimeriez prendre en compte - comme le temps qu'il a fallu pour terminer le tour. Par exemple, les joueurs qui obtiennent le même score avec un temps de tour plus court devraient être mieux classés que les joueurs avec le même score qui ont pris plus de temps.
Cela peut être résolu en utilisant un score structuré et codé, ainsi qu'un champ facultatif "données supplémentaires" pris en charge par les entrées du classement.
Je peux structurer ma partition en composants comme ceci:
score structuré = composante de base + composante temporelle
Voici comment nous calculons les composants:
composante de base =
score
xmultiplier
composante de synchronisation = (600 x 10) -
timeInTenthsOfSecond
Vous devez choisir un multiplicateur pour le composant de base qui déplace les scores hors de la plage utilisée par le composant de synchronisation. Un multiplicateur sûr serait supérieur au 6000
(le score maximal du composant de synchronisation). Un facteur de 10 est cependant plus lisible; nous utiliserons donc 10,000
.
Prenons un exemple simple. Joe et Tracy obtiennent chacun 125,000 points, mais Joe a terminé le tour en 2 minutes, tandis que Tracy a réussi à terminer le tour en 1 minute et 59,5 secondes!
Voici à quoi ressembleront leurs scores :
Score structuré de Joe = (125 000 x 10 000) + (6 000 - 1 200) = 1 250 004 800
Score structuré de Tracy = (125 000 x 10 000) + (6 000 - 1 195) = 1 250 004 805
Notez que lorsqu'il est codé de cette manière, le score de Tracy est 5 points plus élevé - ce que nous voulons!
La dernière étape de votre solution consiste à inclure les informations du composant de score comme le paramètre data
dans l’appel d’API PostScoresToLeaderboard()
.
De cette façon, lorsque votre jeu affiche les scores, il peut afficher le score du joueur (et potentiellement son temps d'achèvement) comme vous vous y attendez dans le classement.
J'espère que cela aide!