Créer un classement
Un classement ordonne les joueurs selon un résultat (un meilleur score, du plus grand au plus petit, ou un meilleur temps, du plus petit au plus grand) et affiche à tous le même Top. Ce guide explique quand un classement est nécessaire et comment le construire avec PandaSuite et Firebase.
Dans ce guide
- Score local ou classement partagé
- Prérequis
- Capturer un résultat à la fin du niveau ou du quiz
- Compiler et trier les résultats
- Afficher le Top et « Votre score »
- Alternative : stocker les résultats dans Airtable
Score local ou classement partagé
Avant toute chose, choisissez l’expérience dont vous avez besoin :
- Score local (un seul appareil). Le score est stocké et affiché uniquement sur l’appareil du joueur, par exemple dans une variable ou la base de données PandaSuite. Cela suffit pour montrer à un joueur son meilleur score ou pour déclencher un scénario, mais chaque joueur ne voit que ses propres résultats. Voir Score.
- Classement partagé (entre appareils). Les résultats de chaque joueur sont envoyés vers une source centrale, compilés, triés et affichés sous forme de classement commun. C’est ce qu’il faut pour un Top public, un concours ou une course contre la montre qui compare les joueurs.
La suite de ce guide construit un classement partagé avec Firebase. Si vous préférez un backend plus simple, sans comptes utilisateurs, voir l’alternative Airtable à la fin.
Prérequis
- Un projet Firebase connecté via Session Firebase, ainsi qu’un formulaire Authentification pour associer chaque résultat à une identité utilisateur. Voir Créer un projet Firebase et Sauvegarder des données utilisateurs dans Firebase.
- Un moyen de mesurer le résultat à classer : un score que vous incrémentez ou un chronomètre que vous arrêtez à la fin du niveau. Voir Score.
Capturer un résultat à la fin du niveau ou du quiz
- À la fin du niveau ou du quiz, calculez la valeur à classer (un
scorefinal ou untimeMs) et stockez-la dans une variable. Voir Score. - Sur le déclencheur de fin, ajoutez l’action Agir sur une base de données > Session Firebase > Modifier la donnée, pour enregistrer le résultat (et la meilleure valeur du joueur) dans son document utilisateur.
Compiler et trier les résultats
Par défaut, les règles de Session Firebase limitent chaque joueur à son propre document users/{uid} : l’app ne peut donc pas lire les scores des autres joueurs. Le classement est construit dans un document leaderboards partagé en lecture publique, tenu à jour par une étape côté serveur (une automatisation ou une Cloud Function) plutôt que sur chaque appareil.
Mettez en place une automatisation telle que Make (Integromat), Zapier ou une Cloud Function pour tenir le classement à jour :
- À la fin du niveau, PandaSuite envoie le résultat à l’automatisation via le composant HTTP ou un webhook (
alias,score,levelId,finishedAt). - L’automatisation ajoute ce nouveau résultat à l’ensemble des résultats déjà enregistrés.
- Elle trie l’ensemble, du meilleur au moins bon (score décroissant, temps croissant), et ne conserve que le Top N.
- Elle enregistre ce Top N dans un seul document
leaderboardsque l’app lit pour afficher le classement.
Voir Se connecter à Make (Integromat).
Afficher le Top et « Votre score »
- Insérez un composant Collection et liez-le au Top trié. Dans le modèle d’élément, liez des blocs de texte à
aliasetscore. - Pour contrôler l’ordre dans l’app, utilisez Trier une collection (Décroissant pour les meilleurs scores, Croissant pour les meilleurs temps).
- Pour toujours afficher au joueur son propre résultat même hors du Top, liez un bloc de texte distinct à son meilleur résultat, depuis les données de Session Firebase.
Vérifier le flux
- Jouez un niveau ou un quiz, terminez-le et confirmez que le résultat atteint Firestore.
- Vérifiez que le Top compilé se met à jour.
- Ouvrez l’écran du classement : vous devez voir un Top trié et votre propre meilleur résultat, même hors du Top N.
Alternative : stocker les résultats dans Airtable
Si vous n’avez pas besoin de comptes utilisateurs, Airtable est plus simple à configurer et à modérer manuellement :
- Créez une table avec une ligne par résultat (
alias,score,levelId,finishedAt). - Enregistrez chaque résultat depuis l’app avec le composant HTTP. Pour des écritures sécurisées, passez par une automatisation ou un proxy plutôt que d’exposer une clé d’écriture dans l’app.
- Affichez la table avec un composant Collection. Airtable peut renvoyer des enregistrements déjà triés et limités via son API : vous pouvez donc souvent vous passer du tri côté serveur.
Voir Se connecter à Airtable.