Repository navigation
Description
Objectif
Afficher en permanence l'objectif de campagne en cours, avec la commande à utiliser, sur l'écran de voyage de /report, pour que les nouveaux joueurs ne restent plus bloqués sur une mission dont ils ne connaissent pas la commande.
Pourquoi (en bref)
La campagne est le fil conducteur des nouveaux joueurs, mais elle n'est visible que via /missions, une commande mentionnée une seule fois dans le tutoriel. Résultat, chez les joueurs de niveau ≥ 4 :
- 35 % ne valident jamais la mission 1 (« faire
/missions») ; - 26 % restent bloqués à vie sur la mission 7 (« choisir une classe ») ;
- 29 % restent bloqués à vie sur la mission 9 (« boire une potion »).
Dans environ 61 à 94 % des cas, les joueurs bloqués n'ont jamais utilisé la commande concernée. À activité égale, un joueur bloqué joue environ 2 fois moins de jours par la suite (rétention J45-J90 : -10 à -20 points).
Solution proposée
1. Ligne « Objectif » sur l'écran de voyage (Core + Lib + Discord)
-
Lib : ajouter un champ optionnel
campaignMission?: BaseMissionàCommandReportTravelSummaryRes. -
Core (
ReportTravelService, construction duCommandReportTravelSummaryRes) : renseigner la mission de campagne en cours viaMissionSlots.getCampaignOfPlayer(player.id), uniquement si la campagne n'est pas terminée. Omettre le champ sinon (spread conditionnel). -
Discord (
TravelSummary.ts) : si le champ est présent, ajouter un bloc en fin d'embed, par exemple :{emote:…} Objectif : Choisir une classe autre que Recrue ({command:classes}) — 0/1
Le texte réutilise
MissionUtils.formatBaseMission(déjà utilisé par/missions). Le titre « Objectif » est une nouvelle clécommands:report.campaignObjective(FR uniquement).
2. Indiquer la commande dans les descriptions de missions qui en demandent une (Lang FR)
Les descriptions actuelles ne disent pas toujours quelle commande utiliser (par ex. chooseClass : « Choisir une classe autre que Recrue »). Ajouter {command:…} dans les descriptions FR des missions de campagne liées à une commande, au moins :
chooseClass→ {command:classes}drinkPotion→ {command:drink}- (vérifier les autres missions de
campaign.jsondu même type :commandMap,sellItems,visitCityNpc…)
Ces descriptions profitent aussi à l'affichage de /missions.
3. Mission 1 : validation automatique
La mission 1 (commandMission) sert uniquement à faire découvrir /missions. Puisque l'objectif est désormais affiché dans /report, la valider automatiquement au premier /report après l'event 60 du tutoriel, pour que la campagne démarre pour tout le monde. Alternative si on veut garder la mission : la laisser, la ligne « Objectif » affichera « Faire la commande {command:missions} ».
Hors périmètre
- Refonte du tutoriel (Refonte du système de tutoriel / onboarding #4125).
- Notifications de relance.
Critères d'acceptation
- Tant que la campagne n'est pas terminée, l'écran de voyage de
/reportaffiche la mission de campagne en cours, avec sa progression et la commande à utiliser si elle en a une. - Rien n'est affiché une fois la campagne terminée.
- Un nouveau joueur a sa campagne démarrée sans avoir à taper
/missions(si l'option 3 est retenue). - Seules les traductions FR sont modifiées.
- Tests : le Core envoie bien
campaignMission(présent / absent selon l'état de la campagne).
Mesure de l'effet (à relever avant puis 2 mois après la mise en production)
| Indicateur (joueurs niveau ≥ 4) | Avant |
|---|---|
| % qui n'ont jamais validé la mission 1 | 35 % |
| % bloqués définitivement sur la mission 7 | 26 % |
| % bloqués définitivement sur la mission 9 | 29 % |
| Délai moyen pour valider la mission 9 | 10,6 j |
| Joueurs actifs à J14 encore actifs entre J45 et J90 | ~67 % |
Activity
[-]Rétention : on perd 1/3 des nouveaux joueurs dans les 15 premières minutes, avant le 1er mini-event[/-][+]Rétention : relancer après 2 jours d'absence les joueurs qui ont fini le tutoriel (ils décrochent faute d'habitude quotidienne)[/+][-]Rétention : relancer après 2 jours d'absence les joueurs qui ont fini le tutoriel (ils décrochent faute d'habitude quotidienne)[/-][+]Rétention : les joueurs ne découvrent pas /missions, /classes et /drink, la campagne les bloque, afficher l'objectif en cours dans /report[/+][-]Rétention : les joueurs ne découvrent pas /missions, /classes et /drink, la campagne les bloque, afficher l'objectif en cours dans /report[/-][+]Afficher l'objectif de campagne en cours (avec la commande à utiliser) dans /report[/+]