# Propositions d'améliorations du rendu Analyse basée sur la capture de 2 playthroughs (seeds 42 et 777, 15 étapes chacun) et le rapport de pacing complet. --- ## 1. Le vide initial : 30 boîtes sans aucun panel visuel **Constat** : Les 2 scénarios montrent "(no panels unlocked yet)" pour les 15 premières étapes (30 boîtes). Les premiers déverrouillages meta sont AutoSave et BoxAnimation — invisibles pour le joueur. Le premier panel visuel (ResourcePanel ou InventoryPanel) n'arrive qu'entre la boîte #32 et #36. **Impact** : Le joueur voit uniquement du texte brut pendant 5-10 minutes. L'absence de feedback visuel donne l'impression que le jeu est cassé ou pauvre. **Propositions** : - **A)** Déverrouiller TextColors dès la 1ère boîte ou la rendre gratuite. La couleur est le premier signal que "quelque chose se passe". - **B)** Offrir un "mini portrait" par défaut (juste la boîte nue `+------+`) dès le départ, sans nécessiter le déverrouillage meta_portrait. Le portrait changerait quand des cosmétiques sont équipés. - **C)** Réordonner les méta-déverrouillages : les panels visuels (StatsPanel, PortraitPanel) devraient arriver avant les features invisibles (AutoSave, BoxAnimation). Suggestion d'ordre : TextColors → StatsPanel → InventoryPanel → ResourcePanel → ArrowKeySelection → PortraitPanel → ... → AutoSave/BoxAnimation (fin de progression). - **D)** Ajouter un "panneau de bienvenue" statique visible dès le départ avec un ASCII art de boîte et un compteur de boîtes ouvertes. Remplacé par le vrai layout au fur et à mesure. --- ## 2. Les noms de boîtes apparaissent comme IDs bruts **Constat** : Dans le loot, les boîtes reçues affichent `"box_of_boxes"`, `"box_ok_tier"`, etc. au lieu de leurs noms traduits. Seuls les items (non-boîtes) ont leurs noms localisés. **Impact** : Rupture d'immersion. Le joueur voit du jargon technique au milieu de noms français. **Proposition** : Le flux `ItemReceivedEvent` devrait résoudre le nom via `registry.GetBox()` en fallback quand `registry.GetItem()` retourne null. Le helper `GetLocalizedName()` existe déjà dans Program.cs — il faudrait l'utiliser systématiquement dans le rendu des événements. --- ## 3. Cosmétiques reçus sans portrait pour les voir **Constat** : Dès la boîte #3, le joueur reçoit des cosmétiques (Yeux bleus, Cheveux en feu, Lunettes d'aviateur). Mais le PortraitPanel ne se déverrouille qu'à la boîte #131 (seed 42). **Impact** : Le joueur accumule 20+ cosmétiques sans jamais voir leur effet. Quand le portrait arrive enfin, il ne sait même plus ce qu'il a. **Propositions** : - **A)** Déverrouiller le portrait bien plus tôt (boîte #10-15), ou le rendre visible par défaut (voir point 1B). - **B)** Afficher un mini-aperçu ASCII du cosmétique au moment du loot : `"Yeux bleus : | O O |"`. - **C)** Quand un cosmétique est reçu, l'équiper automatiquement si le slot est vide (actuellement il faut aller dans "Changer d'apparence" manuellement). --- ## 4. Ressources reçues mais invisibles **Constat** : Le joueur reçoit Fer, Bronze, Bois, Or dès les premières boîtes, mais le ResourcePanel ne se déverrouille que vers la boîte #36. Les changements de ressources s'affichent en texte fugace (`"Santé: 0 -> 10"`) puis disparaissent au Clear suivant. **Proposition** : Afficher un résumé compact des ressources dans le texte de loot quand le ResourcePanel n'est pas encore débloqué : ``` Vous avez reçu : Fer x1 [Ressources : Santé 10/100 | Or 5] ``` --- ## 5. Le layout "Full" arrive trop tard **Constat** : FullLayout se déverrouille à la boîte #199 (seed 42). Avant ça, les panels s'empilent verticalement en mode séquentiel, même quand 10+ panels sont déverrouillés. **Proposition** : Faire de FullLayout un des premiers déverrouillages dès lors qu'on a 3 panels. --- ## 6. Le panneau Chat est toujours vide **Constat** : Le ChatPanel affiche "No dialogue yet." en permanence dans le hub. Il ne se remplit que pendant les aventures, mais les aventures ont leur propre flux de rendu (ShowAdventureDialogue). ## 7. Feedback d'événements trop éphémère **Constat** : Les événements (loot, déverrouillage, craft) s'affichent une fois puis disparaissent au prochain `Clear()`. Le joueur doit lire vite avant d'appuyer sur une touche. **Propositions** : - **A)** Garder un historique des N derniers événements affiché dans un panel "Log" (remplace le ChatPanel). - **B)** En mode texte simple (avant FullLayout), ne pas faire de Clear entre chaque action — laisser le texte défiler comme un terminal classique. --- ## 8. L'annonce FigletText de déverrouillage UI prend trop de place **Constat** : `ShowUIFeatureUnlocked` affiche un `FigletText` (ASCII art géant du nom de la feature). Sur un terminal 120×30, ça prend 8-10 lignes + 2 règles = ~12 lignes pour un seul mot. **Proposition** : Remplacer par une annonce compacte sur 3 lignes max : ``` ╔═══════════════════════════════════════╗ ║ ★ Panneau d'inventaire débloqué ! ★ ║ ╚═══════════════════════════════════════╝ ``` --- ## 9. Progression des cosmétiques : équipement auto **Constat** : Le joueur reçoit un cosmétique et doit manuellement aller dans "Changer d'apparence" pour l'équiper. Rien ne lui indique visuellement qu'il a un nouveau cosmétique à essayer. **Propositions** : - **A)** Auto-équiper le premier cosmétique de chaque slot (le joueur voit immédiatement un changement). - **B)** Afficher un indicateur `[NEW]` à côté de "Changer d'apparence" quand un cosmétique non équipé est disponible. --- ## 10. Lore fragments : noms trop longs **Constat** : Les fragments de lore ont des noms qui sont en fait des phrases complètes : > "L'Ancien Ordre des Ouvreurs de Boîtes n'a qu'un seul commandement : Tu ouvriras tes boîtes." Ces noms débordent de la colonne `Name` (24 chars) de l'inventaire et sont tronqués à l'incompréhensible. **Proposition** : Donner aux fragments de lore des noms courts (`"Fragment #1"`, `"Décret des Ouvreurs"`) et afficher le texte complet dans une description séparée ou un panel Lore dédié. --- ## 11. Consommables non consommables. **Constat** : Les consommables n'ont pas d'action pour être utilisés. **Propositions** : - **A)** rendre les objets du menu d'inventaire sélectionnables (en surbrillance). - **B)** Lorsqu'ils sont mise en surbrillance un cadre description permet d'afficher le contenu du fragment de lore ou indique qu'appuyer sur la touche "entrée" permet d'activer l'effet. --- ## Résumé des priorités | # | Proposition | Impact | Effort | |---|------------|--------|--------| | 1C | Réordonner les méta-déverrouillages | Très fort | Faible (JSON) | | 1B | Portrait visible par défaut | Fort | Moyen | | 2 | Noms de boîtes localisés dans le loot | Fort | Faible | | 3C | Auto-équiper le 1er cosmétique | Moyen | Faible | | 6A | Chat comme log d'événements | Fort | Moyen | | 8 | Annonce compacte des déverrouillages | Moyen | Faible | | 5 | FullLayout plus tôt | Moyen | Faible (JSON) | | 10 | Noms courts pour lore fragments | Moyen | Faible (JSON) | | 4 | Résumé ressources inline | Faible | Moyen | | 7B | Pas de Clear avant FullLayout | Moyen | Faible |