Plan de développement MVP - Colonie Terminus
Plan de développement MVP - Colonie Terminus
Vision
Créer un survivor-like avec système d’énergie et visée orbitale unique. MVP jouable en 10 minutes avec fun immédiat.
Contraintes critiques
- ❌ ZERO custom asset (formes géométriques uniquement)
- ❌ Max 2 semaines par feature
- ✅ Code clean, minimal, bien structuré
- ✅ Config dans config.ron
- ✅ Tester régulièrement
Phase 1 : Fondations (Semaine 1-2)
1.1 Configuration et architecture
Objectif : Structure propre pour tout le reste
- Créer
assets/config/config.ronavec toutes les valeurs de balance- Stats player (HP: 100, speed: 140, max_energy: 100, regen: 20/s)
- Stats armes (Blaster, Plasma Launcher)
- Stats ennemis (Grouilleur, Voltigeur, Prédateur)
- Stats boss et events
- Paramètres monde sphérique
- Créer système de chargement config (RON deserialize)
- Créer module
src/game/mod.rspour logique gameplay - Nettoyer le code demo (garder structure, supprimer ducky)
- Setup States : Menu, InGame, GameOver, Exfiltration
Test : Config se charge sans erreur, states fonctionnent
1.2 Système d’énergie (CRITIQUE)
Objectif : Le cœur différenciateur du jeu
- Créer composant
Energy { current: f32, max: f32, regen_rate: f32 } - Créer ressource
EnergyConfig(depuis config.ron) - Système de régénération d’énergie (20/s par défaut)
- UI barre d’énergie (rectangle cyan qui pulse)
- Système de consommation d’énergie (pour futur système d’armes)
Test : Barre d’énergie se vide et se remplit, visuel pulse fonctionne
Phase 2 : Combat de base (Semaine 3-4)
2.1 Système de visée orbitale (UNIQUE)
Objectif : Mécanique signature du jeu
- Créer composant
OrbitalCursor { angle: f32, radius: f32 } - Système input souris → angle sur cercle (150px radius)
- Support gamepad (joystick droit → angle)
- Afficher cursor (croix blanche 16x16) sur le cercle
- Option : cercle guide (outline blanc) montrant la trajectoire
Test : Cursor suit souris/gamepad fluidement, reste sur cercle
2.2 Arme de départ : Blaster
Objectif : Première arme fonctionnelle
- Créer composant
Weapon { damage, energy_cost, cooldown, ... } - Composant
Projectile { damage, speed, lifetime, ... } - Système de tir automatique vers cursor
- Check énergie disponible
- Consomme énergie
- Spawn projectile (rectangle bleu 4x2)
- Système mouvement projectiles
- Système collision projectiles (despawn à l’impact)
- Cooldown entre tirs (0.2s)
Test : Blaster tire auto vers cursor, coûte énergie, projectiles volent
2.3 Premier ennemi : Grouilleur
Objectif : Valider combat de base
- Créer composant
Enemy { hp, damage, speed, enemy_type } - Créer
EnemyTypeenum (Crawler, Flyer, Predator) - Spawn Grouilleur (carré rouge 24x24) hors écran
- IA simple : move vers player
- Système collision projectile → ennemi (damage, despawn)
- Système collision ennemi → player (damage player)
- Ennemi drop XP à la mort (orbe violet)
Test : Grouilleur apparaît, poursuit, meurt au tir, drop XP
Phase 3 : Boucle XP et progression (Semaine 5)
3.1 Système XP et level-up
Objectif : Boucle de progression
- Composant
Experience { current: f32, required: f32, level: u32 } - Système collect XP (collision player → XP orb)
- Système level-up (toutes les 30-60s selon balance)
- UI barre XP (rectangle violet)
- Event
LevelUpEventpour triggerer choix upgrade
Test : Tuer ennemis → XP → level up après X kills
3.2 Système d’upgrades (choix de cartes)
Objectif : Choix tactiques
- Créer écran pause lors level-up
- Afficher 3 cartes d’upgrade aléatoires
- Nouvelle arme (si <2 slots)
- +Dégâts arme actuelle
- +Régénération énergie
- +Vitesse mouvement
- +HP max
- +Rayon collecte XP
- Appliquer upgrade choisi
- Retour au jeu
Test : Level up → 3 choix → choix appliqué → jeu continue
Phase 4 : Carte sphérique (Semaine 6)
4.1 Monde sphérique
Objectif : Carte infinie sans bords
- Ressource
SphericalWorld { radius: f32, circumference: f32 } - Système wrapping (entités sortent à gauche → réapparaissent à droite)
- Wrapping vertical aussi
- Adapter spawn ennemis (apparaissent de toutes directions)
Test : Player/ennemis traversent bords sans rupture visuelle
4.2 Minimap sphérique
Objectif : Navigation sur planète
- UI cercle (minimap) en haut à droite
- Point blanc = position player
- Point rouge = position vaisseau crashé (point de référence)
- Mise à jour en temps réel
Test : Minimap reflète position précise sur planète
Phase 5 : Contenu MVP (Semaine 7-8)
5.1 Armes complètes
Objectif : 2 armes jouables
- Plasma Launcher (2ème arme)
- Coût : 30 énergie
- Dégâts : 50 AoE
- Projectile rouge + explosion (cercle rouge expanding)
- Système multi-armes (switch ou tir simultané ?)
- UI slots d’armes (2 rectangles montrant armes équipées)
Test : 2 armes différentes fonctionnelles, balance intéressante
5.2 Ennemis complets
Objectif : 3 types d’ennemis variés
- Voltigeur (triangle vert)
- Vitesse moyenne
- Mouvement erratique (zigzag)
- Prédateur (losange orange)
- Très rapide
- Plus de HP et dégâts
- Système spawn progressif
- Niveaux 1-3 : Surtout Grouilleurs
- Niveaux 3-5 : Mélange
- Niveaux 6+ : Tous types, scaling +15% HP/30s
Test : Difficulté croît naturellement, variété intéressante
Phase 6 : Events et timer (Semaine 9)
6.1 Boss event
Objectif : Moment épique aléatoire
- Boss “Gardien Planétaire” (hexagone rouge 64x64)
- 500 HP, 2 phases
- Phase 1 : Charge lente + projectiles simples
- Phase 2 (<50% HP) : Plus rapide, 3 projectiles en éventail
- Event aléatoire (20% chance tous les 3 niveaux)
- Drop loot rare à la mort
- Annonce visuelle/sonore du spawn
Test : Boss apparaît, combat challengeant, loot récompense
6.2 Crashed ship event
Objectif : Event alternatif
- Spawn vaisseau crashé (triangle gris) à position aléatoire
- 18 ennemis autour du vaisseau
- 3 orbes de loot au centre
- Marker sur minimap
- 15% chance tous les 2 niveaux
Test : Event apparaît, combat intéressant, loot visible
6.3 Timer d’exfiltration
Objectif : Tension et choix risque/récompense
- Menu départ : choix durée (5, 10, 20, 30 min)
- Timer compte à rebours
- UI timer visible (coin haut gauche)
- À 0:00 → écran exfiltration success
- Mort avant → écran game over
Test : Timer fonctionne, fin de partie selon condition
Phase 7 : UI et feedback (Semaine 10)
7.1 UI complète
Objectif : Clarté des infos
- Barre HP (rectangle rouge au-dessus player)
- Barre énergie (rectangle cyan, pulse glow)
- Barre XP (rectangle violet, bas écran)
- Timer (texte blanc, haut gauche)
- Minimap (cercle, haut droite)
- Slots armes (2 rectangles, bas gauche)
- Niveau actuel (texte blanc, haut centre)
Test : Toutes infos lisibles pendant gameplay intense
7.2 Feedback visuel
Objectif : Jeu feels good
- Particules mort ennemi (explosion blanche)
- Flash rouge damage player
- Shake caméra sur gros impacts
- Glow projectiles
- Pulse barre énergie selon niveau
Test : Impacts satisfaisants, infos claires
Phase 8 : Balance et polish (Semaine 11-12)
8.1 Balance gameplay
Objectif : Fun immédiat
- Ajuster valeurs dans config.ron
- Régénération énergie (fun vs frustrant ?)
- Coûts armes (choix tactiques ?)
- HP ennemis (challenge correct ?)
- Fréquence level-up (tous les 30-60s ?)
- Scaling difficulté (courbe exponentielle correcte ?)
- Spawn events (fréquence fun ?)
Test interne : 10 min de jeu = fun ? Envie de rejouer ?
8.2 Audio basique
Objectif : Ambiance minimale
- 1 track ambient (loop) - asset gratuit
- 1 track boss/event - asset gratuit
- SFX tir (blip simple)
- SFX impact (pop simple)
- SFX level-up (ding)
- SFX death (explosion)
Test : Audio améliore expérience sans être gênant
8.3 Écrans de jeu
Objectif : Boucle complète
- Menu principal
- Bouton Play
- Choix durée exfiltration
- Bouton Quit
- Écran Game Over
- Stats run (kills, niveau atteint, temps survécu)
- Bouton Retry
- Bouton Menu
- Écran Exfiltration Success
- Stats run
- Ressources gagnées (pour future meta-progression)
- Bouton Retry
- Bouton Menu
Test : Boucle Menu → Jeu → Fin → Menu fonctionne
Phase 9 : Testing externe (Semaine 13)
9.1 Playtest avec 3 personnes externes
Questions critiques :
- Après 10 min, envie de rejouer ? (≥2/3 doivent dire oui)
- Énergie intéressante ou frustrante ?
- Events excitants ?
- Carte sphérique intuitive ?
- Sensation de progression ?
9.2 Ajustements post-playtest
- Identifier 3 problèmes principaux
- Fix rapides (1 semaine max)
- Re-test si changements majeurs
Ordre des systèmes Bevy (architecture finale)
Update Schedule:
1. input_system
2. orbital_cursor_system (update cursor sur cercle)
3. energy_regen_system
4. weapon_system (tir auto, energy check)
5. movement_system
6. spherical_world_wrapping_system
7. projectile_system
8. collision_system (projectile/enemy, enemy/player)
9. enemy_ai_system
10. spawn_system (ennemis)
11. event_system (boss, crashed ship)
12. xp_collection_system
13. level_up_system
14. ui_system (draw tout)
Structure fichiers cible
src/
├── main.rs
├── game/
│ ├── mod.rs
│ ├── config.rs (load config.ron)
│ ├── player/
│ │ ├── mod.rs
│ │ ├── movement.rs
│ │ ├── energy.rs (système énergie)
│ │ └── stats.rs
│ ├── combat/
│ │ ├── mod.rs
│ │ ├── orbital_cursor.rs (visée)
│ │ ├── weapons.rs
│ │ └── projectiles.rs
│ ├── enemies/
│ │ ├── mod.rs
│ │ ├── types.rs (Crawler, Flyer, Predator)
│ │ ├── ai.rs
│ │ └── spawning.rs
│ ├── progression/
│ │ ├── mod.rs
│ │ ├── experience.rs
│ │ ├── level_up.rs
│ │ └── upgrades.rs
│ ├── events/
│ │ ├── mod.rs
│ │ ├── boss.rs
│ │ └── crashed_ship.rs
│ ├── world/
│ │ ├── mod.rs
│ │ └── spherical.rs
│ └── ui/
│ ├── mod.rs
│ ├── hud.rs (HP, energy, XP bars)
│ ├── minimap.rs
│ └── level_up_screen.rs
├── screens/ (existant, adapter)
└── menus/ (existant, adapter)
assets/
├── config/
│ └── config.ron (TOUT le balance ici)
├── audio/
│ ├── music/ (assets gratuits)
│ └── sfx/ (assets gratuits)
└── images/ (placeholder si besoin)
Métriques de succès MVP
Critères techniques
- 60 FPS stable avec 100+ ennemis à l’écran
- <50ms input lag (cursor, tir)
- 0 crash sur 30 min de jeu
- Wrapping sphérique sans glitch visuel
Critères gameplay
- Système énergie = choix tactiques (pas juste spam)
- Events random = moments excitants
- Progression = sensation de puissance croissante
- 10 min de jeu = boucle addictive
Critères validation
- 3/3 testeurs externes veulent rejouer
- Énergie jugée “intéressante” par 2/3 testeurs
- Events jugés “excitants” par 2/3 testeurs
- Carte sphérique “intuitive” pour 2/3 testeurs
Red flags à surveiller
🚩 Scope creep : Envie d’ajouter features hors MVP → Réponse : Noter dans “Level 2 ideas”, finir MVP d’abord
🚩 Perfectionnisme assets : Passer >2j sur un sprite → Réponse : Formes géométriques suffisent pour MVP
🚩 Over-engineering : Système trop complexe “pour le futur” → Réponse : KISS, refactor plus tard si besoin
🚩 Pas de playtest pendant 2+ semaines → Réponse : Jouer 10 min CHAQUE semaine minimum
🚩 Feature bloquée >1 semaine → Réponse : Simplifier ou découper en sous-tâches
Notes importantes
Philosophie de développement
- Clean code : Refactor au fur et à mesure, pas de dette technique
- Minimal : Supprimer commentaires inutiles, code auto-documenté
- Config first : Tout le balance dans config.ron pour iteration rapide
- Test early : Tester après chaque phase, pas attendre la fin
Mantra
- “Est-ce que ça rend le jeu plus FUN ?” → Si non, cut
- “MVP first” → Features Level 2+ attendent
- “Tester avant de coder plus”
- “Config file > hardcode”
- “Clean code = fast code in the long run”
Post-MVP (NE PAS FAIRE AVANT FIN MVP)
- Meta-progression avec shop
- Synergies tech/magie
- 2ème personnage
- Plus d’armes (10 total)
- Plus de passifs (25 total)
- Animations complexes
- Shaders custom
- Multiple biomes
Timeline réaliste
| Semaine | Phase | Milestone |
|---|---|---|
| 1-2 | Fondations | Config + énergie fonctionnels |
| 3-4 | Combat base | Blaster + Grouilleur + visée orbitale |
| 5 | Progression | XP + level-up + upgrades |
| 6 | Monde | Carte sphérique + minimap |
| 7-8 | Contenu | 2 armes + 3 ennemis |
| 9 | Events | Boss + crashed ship + timer |
| 10 | UI/Feedback | Interface complète + particules |
| 11-12 | Balance | Ajustements + audio + écrans |
| 13 | Testing | Playtest externe + fixes |
Total : ~3 mois (compatible avec contraintes)
Checkpoint decision points
Fin Phase 2 (Semaine 4)
Question : Visée orbitale + énergie = fun ?
- Si OUI → Continuer
- Si NON → Revoir mécaniques core AVANT d’aller plus loin
Fin Phase 5 (Semaine 8)
Question : Boucle combat/XP/upgrade addictive ?
- Si OUI → Continuer vers events
- Si NON → Ajuster balance avant events
Fin Phase 9 (Semaine 13)
Question : 3 testeurs externes validés ?
- Si OUI → MVP terminé, planifier Level 2
- Si NON → Identifier problème, fix, re-test (max 2 semaines)
En cas de blocage
Si une feature prend >2 semaines :
- Découper en plus petites tâches
- Simplifier l’approche
- Remplacer par version géométrique/placeholder
- Si toujours bloqué → demander aide ou skip temporairement
Si perte de motivation :
- Jouer au jeu (même incomplet)
- Regarder progression depuis début
- Lire les mantras
- Se rappeler : finir MVP > perfect game
Prochaine étape immédiate
ACTION 1 : Créer assets/config/config.ron avec toutes les valeurs de balance
ACTION 2 : Créer module src/game/config.rs pour charger le fichier
ACTION 3 : Implémenter système énergie (player + UI + regen)
Une fois l’énergie fonctionnelle et que ça feels good → Phase 2 (combat).