Apprends la certification Microsoft Power Platform PL-900 en jouant une fiction interactive rétrofuturiste dans un terminal CRT.
Tu es le premier homme-machine de l'humanité, recruté pour organiser la première mission interstellaire vers Alpha Centauri après la captation d'un signal mystérieux. Tu dois construire l'infrastructure de la mission dashboards, applis, workflows, sécurité tout en affrontant le sabotage d'un mouvement radical et en gérant Ekho, une IA soviétique fantôme logée dans tes systemes.
Les QCM PL-900 sont deguises en actions dans le monde : diagnostics, configurations, arbitrages. Les bonnes reponses font progresser l'histoire. Les mauvaises creent des dettes narratives qui reviennent plus tard.
| Composant | Detail |
|---|---|
| Bundler | Vite |
| Langage | JavaScript ES6+ (Vanilla, zero framework) |
| Rendu | DOM + CSS (pas de Canvas/WebGL) |
| Layout | Visual Novel ADV/NVL hybride (3 zones fixes) |
| Esthetique | Terminal CRT retrofuturiste (scanlines, glow, typewriter) |
| Font | IBM Plex Mono |
| Questions | 130+ QCM PL-900 en JSON |
| Sauvegarde | localStorage |
| Acte | Titre | Domaine PL-900 | Personnage cle |
|---|---|---|---|
| 1 | Le Signal | Power BI | Mika Lindgren |
| 2 | La Machine | Power Apps | Tomas "Patch" Ferreira |
| 3 | Le Flux | Power Automate | Noor Kahraman |
| 4 | La Forteresse | Administration | Dr. Elena Vasek |
| 5 | Le Lancement | Mixte | Tous |
| Nom | Role | Couleur |
|---|---|---|
| Mika Lindgren | Cartographe du Chaos (Power BI) | Cyan |
| Tomas "Patch" Ferreira | Le Bricoleur (Power Apps) | Vert |
| Noor Kahraman | Le Metronome (Power Automate) | Violet |
| Youssef Darmon | Le Cuistot (logistique) | Orange |
| Dr. Elena Vasek | La Gardienne (admin & securite) | Rouge |
| Patriarche Zeron | Antagoniste | Blanc |
| Ekho | IA fantome / guide | Vert CRT |
src/
├── main.js Point d'entree, cablage de tous les modules
├── config.js Constantes globales + flag DEV_FAST_FORWARD
├── engine/ Moteur narratif (coeur du jeu)
│ ├── NarrativeEngine.js Machine a etats : charge chapitre, execute, branche
│ ├── SceneRunner.js Execute les scenes en mode ADV/NVL + quiz multi-etapes
│ ├── FlagManager.js Variables narratives (flags, compteurs, conditions)
│ └── ChoiceHistory.js Historique des 15 choix majeurs
├── data/
│ ├── gameConfig.json Configuration personnages, progression, UI
│ ├── consequences.json Registre des dettes narratives (6 entrees)
│ ├── chapters/ Arbre narratif par acte (JSON)
│ │ └── act1-signal.json Acte 1 Le Signal (27 scenes)
│ └── questions/ 130+ questions PL-900 par domaine
├── styles/
│ ├── main.css Reset, layout, imports
│ ├── crt-design-system.css Palette, tokens, effets CRT (scanlines, vignette)
│ ├── vn-layout.css Layout VN + HUD + notifications + quiz feedback
│ └── typewriter.css Animation typewriter + curseur
├── systems/
│ ├── EventBus.js Pub/sub singleton vanilla JS
│ ├── QuestionManager.js Tirage anti-repetition, chargement par domaine
│ ├── Progression.js XP, niveaux (6 paliers), PV (ecoute QUIZ_CORRECT/WRONG)
│ ├── EkhoSystem.js Indices sovietiques, confiance, max 2 par acte
│ └── ConsequenceTracker.js Dettes narratives (ecoute FLAG_SET)
└── ui/
├── Terminal.js Layout VN 3 zones + HUD dynamique (coeurs, XP, niveau)
├── Typewriter.js Affichage caractere par caractere + skip + dev mode
└── Notifications.js Textes flottants (+XP, -PV, Niveau !)
public/assets/
├── portraits/ Portraits personnages (generes par IA, Sprint 3+)
└── scenes/ Decors des actes (generes par IA, Sprint 4+)
npm install
npm run devLe serveur demarre sur http://localhost:5173.
Pour tester le jeu rapidement sans cliquer a chaque scene :
- Lancer le serveur :
npm run dev - Ouvrir cette URL dans le navigateur :
http://localhost:5173/?dev - Le parametre
?deva la fin de l'URL est obligatoire sans lui, le jeu tourne en mode normal
Ce que fait le mode dev :
- Typewriter instantane (pas d'attente lettre par lettre)
- Auto-continue (pas besoin d'appuyer sur Entree)
- Choix automatiques (selectionne toujours la 1ere option)
- Transitions accelerees (50ms au lieu de 800ms)
- Un badge jaune "DEV FAST" s'affiche en haut a droite pour confirmer l'activation
Sans ?dev → mode joueur normal (typewriter, attente clic/Entree, choix manuels).
Ce mode est impossible en production (double verrou : Vite dev + parametre URL).
Progression Bonnes reponses : +XP, montee de niveau, soins. Mauvaises reponses : -1 PV par erreur. HUD dynamique avec coeurs, barre XP, niveau.
Dettes narratives Les mauvaises reponses creent des flags invisibles qui reviennent dans les actes suivants (6 consequences inter-actes).
Ekho Une IA fantome qui murmure des proverbes sovietiques cryptiques en guise d'indices. Bouton [E] pendant les quiz. Condition : confiance >= 30, max 2 indices par acte.
Notifications Textes flottants animes : +XP (vert), -PV (rouge), Niveau ! (ambre).
Doute Total Recall 2-3 moments dans le jeu, le terminal glitche. Le doute n'est jamais resolu.
- Sprint 0 Prototype terminal CRT + typewriter + QCM test
- Sprint 1 Moteur narratif (NarrativeEngine, SceneRunner, FlagManager, ChoiceHistory)
- Sprint 1.5 Polish visuel (3 niveaux visuels, mode messagerie, choix joueur)
- Sprint 1.5b Layout Visual Novel ADV/NVL hybride (mode VN, portraits placeholders, historique)
- Sprint 2 QCM integres + progression (XP/PV/niveaux) + Ekho + dettes narratives + HUD + notifications
- Sprint 3 Portraits + sauvegarde + menu titre
- Sprint 4 Actes 2 a 5 + polish
- Sprint 5 Mobile + deploiement
MIT — voir LICENSE.
- Narration & game design : Leto-D
- Portraits & decors : generes par IA (Midjourney / Stable Diffusion), retouches manuelles
- Police : IBM Plex Mono (SIL Open Font License)
- Inspirations : VA-11 HALL-A (terminal CRT), Disco Elysium (dettes narratives), Pony Island (4e mur)
Projet educatif Certification Microsoft PL-900, puis PL-200 (Acte II).