Faut-il vraiment déployer cette nouvelle version de l'application ?

Contexte
Analyse de données sur un jeu mobile hyper-casual. Deux builds sont déployées en parallèle : la v10.2 (référence) et la v11.0 (rollout progressif). Objectif : déterminer si la nouvelle build est saine, ou s'il faut mettre en pause le rollout 100%.
Deux angles d'analyse :
- Angle Produit / Publishing — v11.0 est-elle meilleure, équivalente, ou pire que v10.2 ? Focus sur la rétention et l'engagement.
- Angle Game Design — si v11.0 sous-performe, pourquoi ? Le problème est-il global, ou concentré sur un niveau spécifique ?
Les données couvrent 90 jours d'installations Android, préagrégées par cohorte × jour de cohorte × niveau. Deux tables : user_activity (~85K lignes, rétention et sessions) et progression (~530K lignes, funnel par niveau).
Les chiffres clés
La v11.0 passe au crible tous les indicateurs qui font basculer un rollout : rétention à court terme (D1, D3, D7) et engagement par utilisateur (sessions ouvertes, temps de jeu cumulé). Verdict chiffré, sans détour.
v11.0 vs v10.2 — panorama D0–D7
Comparaison sur les 8 premiers jours. Les deltas négatifs (rouge) signalent une régression — la v11.0 encaisse un sur tous les KPIs.
Le verdict est uniforme : la rétention perd 4 à 6 points à chaque jalon (D1, D3, D7), et l'engagement s'effondre — –13% de sessions par utilisateur et –28% de temps de jeu. Aucune métrique n'est épargnée. Le détail, section par section, suit ci-dessous.
Méthodologie
- Stack : Python + DuckDB pour l'agrégation SQL, Matplotlib/Seaborn pour la viz.
- Cohortes : définies par la
s_app_versionà l'installation. v10.2 = build de référence (91 jours d'install, 209K users D0). v11.0 = nouvelle build (19 jours, 20K users D0, déployée à partir du 15 avril). - Rétention :
SUM(active_DN) / SUM(d0_users)— calculée segment par segment (date × version × pays × réseau × package), puis agrégée. Le dénominateur D0 est dynamique : seuls les segments ayant encore une activité au jour N entrent au numérateur et au dénominateur, pour éviter de diluer la rétention par des cohortes déjà mortes. - Taux d'échec :
SUM(i_level_failed) / SUM(i_level_started)par version × niveau. - Engagement :
SUM(sessions) / SUM(active_users)etSUM(playtime) / SUM(active_users). - Fenêtre :
i_cohort_groups BETWEEN 0 AND 7(D0 = jour d'install, D7 = 7 jours après).
Rétention
Rétention globale D0–D7
Part des utilisateurs toujours actifs à chaque jour de cohorte (J+0 à J+7) en valeur cumulative.
v11.0 perd 4 points dès D1 (55% → 51%), l'écart se creuse à D3 (32% → 26%, -6 pp) et reste à -5 pp jusqu'à D7 (20% → 16%). La chute est continue à chaque jalon — ce n'est pas un drop isolé, mais une dégradation systémique, qui suggère un problème structurel de la build plutôt qu'un bug ponctuel.
Focus US vs Global
Rétention : US (pointillés) vs Global (plein)
Vérifier si la régression est géographique ou globale.
Les utilisateurs US suivent la même tendance que le global. Pas de disparité régionale marquée — le problème n'est pas géographique. Si dégradation il y a, elle est liée à la build elle-même, pas à un mix d'acquisition.
Engagement
Engagement global par utilisateur (D0–D7)
Sessions ouvertes par utilisateur actif et temps de jeu cumulé par utilisateur.
Sessions par utilisateur
Temps de jeu par utilisateur
Chaque utilisateur v11.0 ouvre 13% de sessions en moins (2.29 vs 2.64) et accumule 28% de temps de jeu en moins (31 min vs 44 min). Le drop de playtime est plus marqué que celui des sessions → les sessions elles-mêmes sont plus courtes dans v11.0, pas seulement moins nombreuses. Chaque utilisateur engagé produit moins de valeur par install.
Sessions & temps de jeu par jour de cohorte
Engagement journalier par utilisateur (D0–D7)
Évolution jour par jour — pour voir si la chute s'installe à un moment précis.
Sessions / user / jour
Temps de jeu / user / jour
La chute d'engagement s'installe dès le D0 (jour d'installation) et s'élargit à chaque jour. Cohérent avec une difficulté cumulative : les users abandonnent plus tôt dans le funnel et ne reviennent plus ensuite. Pas de pic de churn isolé — une dégradation de fond.
Focus US vs Global
Engagement : US vs Global
Comparaison directe des deux régions par build.
Sessions / user
Temps de jeu / user
Taux d'échec par niveau
Taux d'échec par niveau (Global)
Part des tentatives échouées sur le total des tentatives à chaque niveau (1–30).
Marqueur vertical au niveau 7 — point de divergence critique entre les deux builds.
Le Niveau 7 est le point de divergence critique. Taux d'échec : 14.2% (v10.2) → 60.4% (v11.0), soit +46 pp et un facteur ×4.2. C'est le seul niveau avec une telle cassure — et il intervient tôt dans le funnel, juste après l'onboarding. Les niveaux 1 à 6 sont quasi identiques entre les builds ; à partir de L8, une pénalité constante de +8 pp s'installe jusqu'à L20+. Conclusion : la v11.0 a globalement durci la difficulté, avec un spike catastrophique au L7.
Top 10 des écarts de difficulté (v11.0 − v10.2)
| Niveau | Fail rate v10.2 | Fail rate v11.0 | Écart (pp) |
|---|---|---|---|
| Level 7 | 14.2% | 60.4% | +46.1 pp |
| Level 27 | 52.5% | 70.8% | +18.3 pp |
| Level 29 | 60.0% | 71.4% | +11.5 pp |
| Level 23 | 43.6% | 54.7% | +11.1 pp |
| Level 24 | 44.5% | 53.5% | +9.0 pp |
| Level 10 | 19.7% | 28.6% | +8.9 pp |
| Level 18 | 33.2% | 42.1% | +8.9 pp |
| Level 14 | 24.3% | 32.9% | +8.6 pp |
| Level 13 | 22.9% | 31.4% | +8.4 pp |
| Level 21 | 39.3% | 47.7% | +8.4 pp |
Niveau 7 domine largement (+46 pp) — seul point de divergence critique. Les 9 autres niveaux cumulent +8 à +18 pp.
Focus US vs Global
Taux d'échec : US (pointillés) vs Global (plein)
Vérifier si la dégradation de difficulté se retrouve à l'identique aux US.
Les US suivent la tendance globale partout jusqu'au L20, avec une volatilité plus forte après — cohérent avec un échantillon US plus réduit. Le spike du L7 est présent partout, ce qui confirme un problème de design du niveau, pas un mix d'acquisition.
Temps de jeu par niveau
Temps de jeu moyen par utilisateur et par niveau (Global)
Temps passé par utilisateur actif, par niveau — pour identifier où le playtime se perd.
Le playtime chute brutalement au Niveau 7 dans v11.0 — les users échouent tellement qu'ils quittent avant d'accumuler du temps de jeu. Les creux de playtime coïncident avec les pics de fail rate. C'est exactement le pattern attendu d'une difficulté mal calibrée : les tentatives échouées ne génèrent pas de valeur (et poussent à l'abandon).
Recommandations
Équipe Publishing
- Mettre en pause le rollout 100% de v11.0 — elle sous-performe sur tous les KPIs (rétention D1/D3/D7, engagement).
- Attendre un fix pour le Niveau 7, puis lancer un A/B test avant de repousser le rollout.
- Re-exécuter l'analyse post-fix pour confirmer l'amélioration des métriques clés (D1, D3 surtout, signaux de rollout les plus fiables).
Équipe Game Design
- Restaurer le Niveau 7 à sa version v10.2 — c'est la cause racine unique de la chute de rétention.
- Réajuster la difficulté globale pour réduire l'écart constant de +8 pp sur L8–L20+.
- Surveiller particulièrement L13/14/18/21/23/24/27/29 qui cumulent +8 à +18 pp de fail rate.
Le seul fix à faire avant 100% : restaurer le Niveau 7 à sa version v10.2.