Passer au contenu principal

Conception > Classements > Config Classements

Encouragez la compétition entre vos joueurs pour obtenir les meilleurs scores.

P
Écrit par Pierre Proulx
Mis à jour il y a plus d’une semaine

Conception

Principales caractéristiques de conception du classement :

  • Classez les joueurs les uns par rapport aux autres en fonction du score obtenu lors de votre événement.

  • Peut être limité au graphe social uniquement (amis seulement) ou global (tous les participants).

  • Peut être configuré pour se réinitialiser quotidiennement, hebdomadairement, mensuellement, annuellement ou jamais.

  • Ils constituent un élément essentiel des tournois, permettant à votre application de distribuer des prix aux joueurs en fonction de leur classement.

Idées de design :

  • Les classements de fin de semaine ou de fin de semaine encouragent les connexions fréquentes et stimulent l'engagement sans imposer une participation excessive aux joueurs pour rester compétitifs.

  • Un classement permanent encourage les sessions de jeu prolongées pour que vos utilisateurs les plus engagés deviennent les meilleurs.

  • L'ajout d'un modèle de tournoi à un tableau des scores permet à votre application de verser des prix à la fin d'une période de tournoi.

Considérations relatives à l'interface utilisateur :

Lors de la mise en place d'un système de classement pour votre jeu, votre équipe d'interface utilisateur devrait envisager d'implémenter :

  • Liste des leaders

  • Un widget de classement

Liste des leaders :

  • Titre du classement

  • Colonne de classement

  • Ligne du joueur mise en évidence

  • (Facultatif) Bannière du joueur ou image du réseau social

  • Surnom du joueur

  • (Facultatif) Nom de la guilde ou du clan du joueur

  • Score en cours de suivi

  • (Facultatif) Permet de faire défiler vers le haut ou vers le bas pour accéder aux autres entrées de la liste.

  • (Facultatif) Permet d'affronter un rival en duel (si le jeu est en un contre un).

  • Temps restant

  • (Facultatif) Utilisez les onglets ou la pagination pour consulter d'autres classements, le cas échéant.

  • Moyen de quitter l'écran

  • (Si l'événement fait partie d'un tournoi) Un moyen de consulter le tableau des prix associé

Un widget d'interface utilisateur :

L'objectif d'un widget d'interface utilisateur est d'afficher les informations compétitives au joueur et de lui permettre d'accéder au classement. Ce widget doit être suffisamment petit pour tenir dans le menu principal ou sur l'écran d'avant-match.

  • Rang

  • Temps restant

  • Moyens d'accéder au classement complet

Mise en œuvre

  • Accédez à la page Conception > Classements > Configurations des classements .

  • Pour créer un nouveau classement, cliquez sur le bouton [Configuration du nouveau classement] indiqué par un signe plus.

  • Dans l'onglet Paramètres, saisissez un identifiant unique pour le classement, sans espaces ni caractères spéciaux. Cet identifiant sera utilisé pour publier et consulter le classement.

  • Sélectionnez le type d'entrée.

    • Joueur - Il s'agit de l'option la plus courante, qui permet à vos joueurs de s'affronter directement en fonction du système de notation que vous définissez.

    • Groupes - Si vos utilisateurs sont regroupés, le classement peut être configuré pour agréger leurs résultats en un score de groupe. C'est idéal pour les tournois avec des critères de score comme le cumul des victoires sur un week-end.

  • Sélectionnez le type de classement .

    • Meilleure performance – Le score n'est publié que s'il est supérieur au score précédemment enregistré par le joueur. Ce critère est utilisé pour un classement classique des meilleurs scores. Par exemple, lors d'un concours de saut en hauteur, seul le meilleur saut de chaque participant est pris en compte.

    • Cumulatif – Le score enregistré est ajouté au score actuel. Utilisez ce système pour classer les joueurs en fonction du total de leurs scores accumulés pendant le tournoi. Par exemple, un classement qui répertorie les joueurs ayant collecté le plus de pièces durant un week-end serait de type cumulatif.

    • Dernière valeur enregistrée – Chaque fois qu'un joueur enregistre un score, celui-ci écrase le précédent. Cette méthode est volontairement peu utilisée car elle pourrait décourager le joueur de jouer après avoir réalisé un bon score.

    • Valeur faible – C'est l'inverse d'une valeur élevée. Le score n'est affiché que s'il est inférieur au score précédemment enregistré par le joueur. Utilisé pour un classement classique des scores les plus bas.

    • Classement Arcade Faible – Dans ce classement de type Arcade (un joueur peut figurer plusieurs fois), les scores les plus bas sont les meilleurs. Les classements de type Arcade sont renouvelés au moins une fois par semaine.

    • Arcade High – Contrairement à Arcade Low, les scores les plus élevés sont les meilleurs.

    Conseils de pro :

    • Les joueurs les plus assidus privilégient les classements à forte valeur ajoutée dans les compétitions basées sur les compétences, avec un minimum de chance.

    • Les joueurs occasionnels privilégient les classements cumulatifs car ils leur permettent de progresser grâce à un jeu régulier. Les tournois cumulatifs ont davantage tendance à générer des revenus.

    • Les classements Last Value créent un mécanisme de prise de risque utilisé dans des circonstances de conception spécifiques.

  • Sélectionnez un type de rotation

    • Jamais - Paramétrez cette option pour les classements à vie.

    • Quotidien – Utile pour les événements à forte volatilité qui se produisent fréquemment. Par exemple, dans une application de casino, la mention « Meilleur tour du jour » permettrait de mettre en avant la générosité des machines à sous.

    • Jours - Utilisez cette option si vous souhaitez organiser un tournoi de week-end.

    • Hebdomadaire - Un excellent choix pour les événements de groupe ou les compétitions occasionnelles comme le concours du meilleur score de la semaine

    • Mensuel – Une autre bonne option pour récompenser et féliciter vos utilisateurs les plus fidèles, car ce sont eux qui ont le plus de chances de se hisser en tête de ce classement.

    • Annuellement – ​​Cela peut être utile pour mettre en valeur le meilleur score de l'année et constitue un bon moyen de donner aux nouveaux joueurs réguliers l'opportunité de se hisser au sommet d'un tableau prestigieux.

    • Tournois ad hoc (Avancé) : Permet à l’administrateur de configurer des tournois ponctuels avec des heures de début arbitraires. Utile pour les événements en direct.

  • Si vous sélectionnez un type de rotation récurrente, alors définissez

    • Prochaine rotation à la date et à l'heure locales : Remarque : il ne s'agit pas nécessairement de l'heure de début de la compétition. Ce paramètre détermine le moment où l'événement est annoncé au joueur (le cas échéant) et le moment où les inscriptions au tournoi peuvent commencer.

    • Indiquez le nombre de tours à conserver : si un participant ne revient pas réclamer son prix après avoir participé à une compétition, ce paramètre détermine le nombre de tournois qui doivent se dérouler avant que son gain ne soit annulé. Une valeur appropriée est 3.

    • Si ce classement doit être utilisé dans un tournoi, cochez la case « Avec tournois » . Il sera alors possible de le configurer dans le panneau « Modèle de tournoi ». Un onglet « Périodes de tournoi » sera alors ajouté. Consultez les étapes ci-dessous pour configurer les paramètres de l'onglet « Tournois ».

    • Si ce classement est utilisé dans un tournoi avec divisions (niveau avancé), cochez également la case « Modèle de division » . Le classement sera alors visible dans le menu de configuration des divisions.

  • Si vous avez configuré des meneurs d'allure dans Design > Classements > Meneurs d'allure et que vous souhaitez les ajouter à ce classement, sélectionnez l'onglet Meneurs d'allure.

  • Activez les meneurs d'allure que vous souhaitez et définissez les scores qu'ils afficheront dans ce classement.

  • Sélectionnez [Appliquer] pour enregistrer vos modifications.

  • Comme indiqué à l'étape précédente, si ce classement doit être utilisé dans un tournoi et que vous avez coché la case « Avec tournois » , vous devez configurer les paramètres dans l'onglet « Tournois ».

  • Sélectionnez la date de la période du tournoi.

  • Après avoir sélectionné la date, une petite icône de cadenas apparaîtra à droite. Cliquez sur cette icône pour la déverrouiller.

    • Les champs situés dans le sous-onglet de l' onglet Période sont calculés automatiquement en fonction du type de rotation et de l'heure de début de la prochaine rotation que vous avez définis précédemment. Par conséquent, pour les tournois récurrents, le panneau Période est en lecture seule.

    • Sélectionnez l' onglet Tournoi .

      • Sélectionnez le [+] dans le widget Tournois. Sélectionnez un modèle de tournoi parmi ceux que vous avez configurés pour ce projet.

        • Si votre inscription est gratuite, vous pouvez cocher la case « Inscription automatique » . Les utilisateurs seront alors automatiquement ajoutés au classement dès qu'ils publieront un résultat.

        • Réclamation automatique - La réclamation automatique est une fonctionnalité pratique mise à la disposition des développeurs qui attribue automatiquement les prix des tournois aux joueurs dès leur connexion. Cela facilite l'organisation de tournois, mais n'informe pas le joueur des raisons de son gain. Ce manque d'information limite le sentiment de fierté et d'accomplissement que le joueur peut ressentir en démontrant sa maîtrise du jeu. C'est pourquoi il est recommandé aux applications d'utiliser cette fonctionnalité comme solution transitoire, le temps que l'équipe d'interface utilisateur développe une boîte de dialogue de paiement qui s'affiche à la connexion et explique les raisons du gain.

          Conseils de pro : Pour que les informations sur les récompenses de paiement s’affichent dans la réponse lorsque le joueur se reconnecte, vous devez également activer l’Enable Tournament Auto Claim check at login option correspondante sur la page du portail Informations sur l’application principale > Paramètres avancés .

          Exemple de dialogue de paiement

          Contenant :

          • Étiquette

          • Titre du tournoi

          • Conditions de victoire

          • Rang

          • Score

          • Récompense

          • Réclamer

          • (recommandé) Effet de gain/versement lors du déclenchement d'une réclamation

    • Définition des Phases

      • Utilisez l'icône (i)-info pour afficher des informations supplémentaires sur la définition de chaque phase.

        • Période d'annonce : à utiliser pour susciter l'enthousiasme des joueurs bien avant la compétition. Par exemple, pour les informer qu'un événement aura lieu « ce week-end ».

        • Période d'inscription : à utiliser si vous souhaitez permettre aux joueurs de s'inscrire avant le début de la compétition. Cela peut ne pas être nécessaire si la compétition est basée sur les performances cumulées sur plusieurs sessions de jeu, comme un tournoi cumulatif de week-end ou un tournoi du meilleur score sur une semaine.

        • Durée de la compétition - Cette valeur est calculée automatiquement, en fonction de la récurrence que vous avez définie et des différentes durées déduites par les autres phases.

        • Interdire l'inscription à la finale : empêcher les joueurs de rejoindre un tournoi s'ils n'ont pas suffisamment de temps pour réaliser un score compétitif. Pour les tournois gratuits, ce délai devrait être de zéro à cinq minutes. Pour les tournois payants, il peut aller de quelques minutes à plusieurs heures, selon votre configuration.

        • Délai pour les scores finaux : permet aux joueurs en cours de manche de terminer et de soumettre leurs scores, tout en empêchant les nouveaux joueurs de commencer des manches pouvant donner lieu à des scores. Ce délai doit être suffisamment long pour deux manches de jeu moyennes.

      • Après avoir effectué des modifications, il est conseillé de cliquer sur le bouton d'actualisation pour afficher les données Jour/Heure les plus récentes pour votre analyse.

      • Une fois terminé, cliquez sur [Appliquer les modifications de période], puis sélectionnez [Enregistrer et fermer].

Écrire le code

Avec une configuration de classement, vous devrez interroger ces éléments et leur publier des scores via votre application.

Dans votre code client

  • Ajoutez le client brainCloud à votre application.

  • Associez le client au tableau de bord.

  • Authentifiez votre utilisateur sur brainCloud.

  • Demandez une liste des classements avec l'appel ListAllLeaderboards.

  • Choisissez l'un de ces classements et consultez les 50 meilleurs scores.

  • Publiez un nouveau score dans ce classement, supérieur de 5 points au score actuel en tête.

  • Consultez les autres appels liés au classement pour votre application dans la documentation de l'API.

    void Start() {
    // Unity
    GameObject go = new GameObject();
    _bc = go.AddComponent<BrainCloudWrapper>();
    _bc.WrapperName = _wrapperName; // définir éventuellement un nom pour le wrapper
    _bc.Init(); // Les données supplémentaires, telles que : _appId, _secret et _appVersion, sont extraites du plugin Unity brainCloud.
    DontDestroyOnLoad(go); // conserver l'objet de jeu brainCloud lors des changements de scène

    _bc.Client.EnableLogging(true);

    _bc.AuthenticateAnonymous((response, cbObject) =>
    {
    GetLeaderboards();
    });
    }


    List<string> leaderboardIds = new List<string>();
    public void GetLeaderboards()
    {
    _bc.LeaderboardService.ListLeaderboards((response, cbObject) =>
    {
    var jsonMessage =
    (Dictionary<string, object>) BrainCloud.JsonFx.Json.JsonReader.Deserialize(response);
    var jsonData = (Dictionary<string, object>) jsonMessage["data"];
    var leaderboardList = (Dictionary<string, object>[]) jsonData["leaderboardList"];

    // Récupérons la liste des IDs des classements
    foreach (var leaderboard in leaderboardList)
    {
    var leaderboardId = leaderboard["leaderboardId"].ToString();
    leaderboardIds.Add(leaderboardId);
    }

    GetTopScores();
    });
    }

    int highestPlayerScore = 0;
    private string selectedLeaderboard = "";
    public void GetTopScores()
    {
    // Let's select a random leaderboard id from the previous GetLeaderboards call
    var random = new System.Random();
    selectedLeaderboard = leaderboardIds[random.Next(leaderboardIds.Count)];

    var sortOrder = BrainCloudSocialLeaderboard.SortOrder.HIGH_TO_LOW;

    // Let's grab the first 50 leaderboard entries
    var startIndex = 0;
    var endIndex = 50;

    _bc.LeaderboardService.GetGlobalLeaderboardPage(
    selectedLeaderboard,
    sortOrder,
    startIndex,
    endIndex,
    (response, cbObject) =>
    {
    var jsonMessage =
    (Dictionary<string, object>) BrainCloud.JsonFx.Json.JsonReader.Deserialize(response);
    var jsonData = (Dictionary<string, object>) jsonMessage["data"];

    if (typeof(Dictionary<string, object>[]) == jsonData["leaderboard"].GetType())
    {
    var leaderboard = (Dictionary<string, object>[]) jsonData["leaderboard"];

    // If there is at least one entry
    if (leaderboard.Length > 0)
    {
    // Let then grab the score from that first place entry
    var firstPlaceEntry = leaderboard[0];
    var score = int.Parse(firstPlaceEntry["score"].ToString());
    highestPlayerScore = score;
    }
    }
    });
    }

    void PostNewHighScore()
    {
    // Let's post a score higher than the current high score
    var higherPlayerScore = highestPlayerScore + 5;

    // We can also attach any extra data onto the score
    var extraData = BrainCloud.JsonFx.Json.JsonWriter.Serialize(new Dictionary<string, object>
    {
    {"message","Bested previous highscore by five points!"}
    });


    _bc.LeaderboardService.PostScoreToLeaderboard(
    selectedLeaderboard,
    higherPlayerScore,
    extraData);
    }
Avez-vous trouvé la réponse à votre question ?