01 / VUE D’ENSEMBLE
Vue d'ensemble
Mon point de départ : un garçon à l’écharpe rouge et une petite ville américaine déserte des années 1980. Une statue sans visage arrache les bâtiments du sol pour les projeter dans le ciel. L’idée est devenue une démo d’action jouable à la troisième personne, réalisée avec Godot.
Claude a aidé à planifier, à écrire les scripts et à tester ; Tripo a fourni les images conceptuelles, les modèles, le rigging et l’animation. J’ai dirigé le projet et examiné le jeu assemblé dans Godot.
Cette démarche pratique s’inscrit dans un workflow de vibe gaming qui relie les idées, le développement assisté par IA et les tests en conditions de jeu.
Configuration du projet :
- Moteur : Godot 4.7.2, Forward+
- Assistant de codage IA : Claude Code
- Génération d’images : génération d’images Tripo
- Génération 3D : modèles Tripo des séries P et H
- Projet : The Red Scarf, une courte démo de combat de boss à la troisième personne

02 / VUE D’ENSEMBLE
Comment se joue la démo terminée
Le garçon entre en ville par Main Street. Sur la place, une statue sans visage libère une onde de choc et entraîne les bâtiments dans une spirale autour d’elle.
Le joueur escalade les boutiques flottantes en sautant, en lévitant et en effectuant des bonds d’écharpe. Parer un projectile lumineux brise brièvement le bouclier de la statue ; lancer des objets à portée de main lui inflige des dégâts. Au bout de trois manches, le garçon peut atteindre la statue et la sceller.
03 / VUE D’ENSEMBLE
Configurer les outils et le projet
Donner à Claude une mémoire de projet
J’ai regroupé au même endroit le projet Godot, les documents de conception, les images conceptuelles, les modèles Tripo et les scripts. À la racine, CLAUDE.md consignait les règles que Claude devait suivre d’une session à l’autre.
Il couvrait l’essentiel :
- Décrire le jeu, le ton et la direction visuelle.
- Lister les règles sur les assets, par exemple un style cohérent et aucun symbole ni texte indésirable.
- Exiger un plan avant tout changement important.
- Tenir un historique des prompts.
- Consigner les pièges récurrents et les conventions du projet au fur et à mesure de leur découverte.
J’ai ajouté au même fichier les correctifs récurrents : ordre d’enroulement du maillage, orientation des modèles, noms d’animation et règles de ciblage du bond d’écharpe. Les sessions suivantes pouvaient ainsi les réutiliser.
Installer Tripo CLI
Pour connecter Claude à Tripo, je lui ai demandé d’installer Tripo CLI :
Help me install and configure Tripo CLI: npm install -g tripo-cli
Connecter Godot et Claude
Claude pouvait modifier directement les scènes Godot au format texte et le GDScript. Une connexion Godot MCP lui permettait de lancer le jeu, de faire des captures d’écran, de consulter les logs et de simuler des entrées.
J’ai vérifié la connexion en demandant à Claude d’indiquer la scène ouverte et l’arbre des nœuds, puis en comparant le port MCP et le projet avec ma configuration.
Compare the Godot MCP servers that are available right now and pick the one that fits this project best (Godot 4.7, Claude Code, editor control plus running and inspecting the game). Explain your choice, then install it into the_red_scarf/ and configure it at project scope (.mcp.json in the project root). Turn telemetry off.
04 / VUE D’ENSEMBLE
Réduire l’idée à un jeu testable
Rédiger le design, puis l’élaguer
Le premier design de Claude couvrait la ville, les déplacements, les attaques du boss et le déroulement du niveau, mais comptait trop de phases et de capacités d’écharpe pour une courte démo.
I'm making a game demo with Claude, Tripo and Godot. Here's the idea: The player is a boy in a bright red scarf, a gray hoodie, blue denim shorts and bright yellow basketball sneakers. The scarf is a supernatural object: he can hover with it, move quickly between platforms, grab objects and throw them, and use it as a whip. The game starts on the main street of a mid-1980s American small town: one main road, houses and shops on both sides (post office, gym, diner and so on). In the central plaza stands a statue of a man in a suit whose face has been erased. It is a hostile supernatural object. When the boy arrives, it releases a shockwave and slowly rises into the sky. The houses around it are torn out of the ground and end up as floating platforms at different heights. The player jumps between them, blocks the objects the statue hurls with telekinesis, fights back, and finally reaches the statue and seals it with the scarf. Write a short design doc in design/game_design.md: building types, the boss's attacks in two phases, the boy's attacks, defense and movement moves, and the level flow. Show me your plan first. Ask me if anything is unclear.
Je l’ai ramené à la plus petite boucle qui conservait l’identité du jeu :
Simplify the combat: 1. The boss has only one phase. 2. Remove the scarf shield and the scarf whip. 3. New loop: the player moves across floating buildings and can only break the statue's shield by parrying its attacks (right click / RT, like a fighting-game parry). Once the shield is down, the player throws objects at it to deal damage.
J’ai réduit le combat à une seule phase de boss : parer pour briser le bouclier, lancer des objets pendant la fenêtre de vulnérabilité et faire de la ville flottante le défi de déplacement. Chaque action restante devait servir cette boucle.
Construire la ville à partir de données
Claude a écrit un script Node pour générer un SVG paramétré de la ville ovale : Main Street, douze boutiques, des rues résidentielles, des parcs, des parkings et une place.
Le même script exportait le JSON du blockout, des bâtiments, des rues, des lampadaires et des arbres pour Godot. Le concept art et le niveau jouable partageaient donc le même layout.
J’ai modifié un seul paramètre à la fois, comme la taille des parkings, la profondeur des jardins à l’arrière ou les entrées des boutiques, pour que chaque changement reste facile à vérifier.
Here's the town I have in mind. The street grid is a grid inside an oval outline: - The long axis of the oval is the widest street, Main St, lined with functional buildings like the post office and the gym. - The other streets run perpendicular to Main St on both sides, lined with houses. - The center of the oval is a round plaza; the statue stands on a concrete pedestal in the middle. - Asphalt streets with lane markings. Raised concrete sidewalks in front of the shops, with American red ash street trees at regular intervals. Design the town structure, fill in the details I didn't mention and improve the design. Draw it as a top-down plan with a Node script (tools/townplan/gen_town_svg.mjs) that generates an SVG from parameters kept at the top of the file.

Définir une direction visuelle
J’ai utilisé le layout comme référence stricte pour une illustration en vue de dessus, en conservant les rues, les parcelles, les emprises au sol, les arbres et le contour de la ville.
La première vue à 45 degrés ressemblait à une carte inclinée. En faisant pivoter la référence en local avant de relancer la génération, j’ai obtenu un angle convaincant.
Strict layout reference: image[1]. Keep every road, block, building footprint, lot, park, parking lot, tree and the oval outline exactly as in image[1]. North up. Add, remove, move or resize nothing. Only restyle it as a finished top-down orthographic illustration of a quiet mid-1980s American small town in autumn. [...town contents: main street, roundabout and statue, twelve shops seen as flat roofs only, all facing the main street, houses, parks, parking lots, red ash trees, a water tower...] Style: stylized non-photorealistic game environment, simple hard-edged geometry, flat slightly exaggerated colors, light weathering, no grime. Warm late-afternoon sun from the west. No vehicles, people, text, lettering, flags, or national or religious symbols. The statue has no face.
À partir du plan final et de la vue à vol d’oiseau, Claude a dressé la liste des assets, en séparant les modèles Tripo des objets construits dans Godot. Des paliers de nombre de faces ont permis de tenir une trentaine d’images conceptuelles et une trentaine de modèles dans le budget.
The town concept art is done. Using the final plan (v6), list every asset we need, split into "generate with Tripo" and "build in the engine". Then write a concept-image prompt for each Tripo asset in design/asset_prompts.md. - Shops on Main St should vary more, with clearly different heights, so the opening walk has an interesting skyline. - Split scene assets into tiers (S / A / B / C) by importance and size, give each tier a model and a triangle budget (hard cap 10,000 per asset), and estimate the total for the scene.

05 / VUE D’ENSEMBLE
Prototyper un asset avant de produire le reste
Tester un bâtiment représentatif
J’ai d’abord testé le pipeline sur un seul supermarché, en vérifiant son style visuel, l’aptitude de l’image à servir de référence de modélisation et la famille de modèles Tripo qui convenait.
- L’image conceptuelle correspond-elle à la direction visuelle de la ville ?
- L’image fournit-elle une référence de modélisation propre ?
- Quelle famille de modèles Tripo produit la bonne géométrie ?
La première image montrait des rayonnages visibles, une lumière chaude incrustée dans l’image, un distributeur automatique évoquant une marque et des fondations surdimensionnées.
J’ai mis à jour les règles communes : condamner les fenêtres avec des planches, éteindre les lumières, utiliser un éclairage de référence blanc et neutre, et garder les fondations dans l’alignement des murs.
Use image[1] only as a reference for color palette, materials and rendering style. Do not copy its content or camera. A single isolated one-story small-town supermarket from the mid-1980s: a wide, low box about 16 meters wide, 14 meters deep and 5 meters tall. The front is a long row of large plate-glass windows with a pair of glass doors in the middle, under a flat red-and-white striped metal awning. Above the awning, a tall flat sign panel runs the full width of the roofline, painted with bold color bands and a simple shopping-cart pictogram, no letters. Pale yellow painted brick walls, a flat roof with two boxy rooftop AC units. A plain red vending machine stands beside the doors. All windows and glass doors are boarded up with weathered wooden planks, so no interior is visible. All lights, signs and neon tubes are switched off. The building sits on a thin flat concrete slab exactly the size of its footprint, flush with the walls on every side. Three-quarter front view from slightly above, the whole building in frame, centered on a plain light gray background, neutral white daylight with soft even lighting and no warm tint, no cast shadows, no ground beyond the slab. Style: simplified realism with hard-edged, clean forms, mid-1980s American, slightly saturated comic-book colors, light weathering, no grime. No text, no letters, no logos, no flags, no national or religious symbols, no people, no vehicles


Comparer les familles de modèles avant de passer à l’échelle
Avec la même image de supermarché et des limites de faces contrôlées, la série P a produit des arêtes vives plus nettes ; la série H, des triangles plus réguliers et des surfaces plus douces.
Pour ce jeu, j’ai fait les choix suivants :
- Utiliser P1.0 pour les bâtiments, les véhicules et les props qui gagnent à avoir des surfaces dures et nettes.
- Utiliser H3.1 pour les formes organiques, comme la statue et les fragments de sol flottants.
- Utiliser P2.0 pour le garçon, car le personnage avait besoin d’une topologie propre pour le rigging.
C’était un choix propre à ce jeu, et non un classement universel des modèles.

The current models are all clean and fairly flat. For performance, would P1.0 suit the buildings better than H3.1? Run a comparison: generate MART with P1.0 at 4000 faces and with H3.1 at 6000 faces, import both into a test folder, and render them side by side from the storefront, front, corner and top views (shaded and wireframe). Then tell me which one to use and why.
Générer les autres assets de la scène
Une fois le prototype validé, j’ai généré les autres assets. Chacun avait une catégorie, un dossier, un préréglage de modèle et un budget de faces.
La production par lots comportait trois vérifications :
Generate concept images for all remaining scene assets the same way as MART, using the prompts in design/asset_prompts.md and cpt/town_birdseye.png as the style reference. Check balance first. Save each image under cpt/assets/<category>/. Check every image against the checklist in asset_prompts.md (single object, clean background, no text or symbols, matches the bird's-eye style, no thin fragile parts). Retry failed tasks individually; never rerun the whole batch. Record progress in design/batch_checkpoint.md so we can resume if we stop halfway. When done, list what succeeded, what failed and what needs my review.
- Vérifier que chaque image montre un seul objet, sur un fond propre, sans texte accidentel ni parties fragiles.
- Relancer individuellement les tâches en échec.
- Consigner la progression dans un fichier de point de contrôle.
J’ai régénéré un par un les échecs : une station-service avec un trou dans le mur du fond, un château d’eau manquant et un supermarché à la géométrie disloquée.

Construire le personnage à part
Le garçon devait passer par le concept art, la modélisation, la vérification de riggabilité, le rigging et le retargeting des animations. J’ai gardé l’écharpe à part pour éviter des poids de skinning indésirables et préserver sa capacité à réaliser des actions complexes.
A full-body cartoon-style boy in a standard T-pose, arms extended horizontally, legs straight. He wears a gray hoodie with the hood up. His face is shrouded in shadow, eyes hidden, with only his mouth and grayish-brown bangs visible. He has a long red scarf wrapped around his neck, with both hanging ends draped down behind his back, not in front. He wears dark blue denim shorts ending above the knee so his knees are exposed, with buttoned flap pockets on both the left and right sides. He wears oversized yellow sneakers and has relatively thin legs. Cartoon character design, clean 3D model.
J’ai d’abord lancé la vérification de riggabilité gratuite. La liste d’animations comprenait attente, marche, course, saut, chute, lancer, parade, bond d’écharpe, coup reçu, défaite, scellement et victoire. Le retargeting de plus de cinq animations à la fois échouait : j’ai donc lancé trois tâches plus petites, puis combiné les résultats dans Godot.
The boy model is ready at models/boy/boy_body.glb. Rig it and add the animations the demo needs. Run the free rig check first. List the animations you plan to use, mapped to Tripo presets, before generating anything.
Avant de les utiliser dans le lot, j’ai vérifié à la main les vues du personnage, à la recherche de mains inversées en miroir et de cheveux pris pour des lunettes de soleil.

Standardiser les imports et les contrôles qualité
Une étape d’import a ajouté des normales pondérées et des arêtes vives aux murs dont le rendu paraissait trop mou. Les limites de texture variaient selon l’asset, avec des exceptions pour le garçon, l’écharpe, la statue et les arbres.
Avant de déplacer les modèles du répertoire de test vers la scène jouable, j’ai vérifié l’échelle, l’orientation, les murs, les toits et les polygones parasites. Les assets de production devaient afficher zéro problème signalé.
When I inspect the models, the normals are smoothed across every edge, so flat walls look soft and cheap. I want something like Blender's Weighted Normal modifier. Write a Godot import hook that recomputes weighted normals on import (area-weighted, edges sharper than 30 degrees become hard edges, keep the normal map), plus a setup script that attaches the hook to a list of GLBs and limits texture size (4K, or 2K for small assets) with VRAM compression. Don't apply it to the boy, the scarf, the statue or trees. Render before/after comparisons so I can judge the result.
06 / VUE D’ENSEMBLE
Construire la démo par couches
Commencer par un blockout jouable
Un script d’outil Godot lisait le JSON de la ville pour construire un blockout jouable : boîtes de collision colorées, sol, point d’apparition et layout flottant. Des boutons dans l’inspecteur et un script en ligne de commande le reconstruisaient après chaque modification des données.
Swap In Models remplaçait ensuite les boîtes par des assets Tripo aux mêmes positions. Les deux versions utilisaient les mêmes données de layout.
Les boutiques formaient la spirale à escalader ; les maisons restaient à l’arrière-plan. Un rapport vérifiait les chevauchements, la hauteur libre, l’espacement des toits et l’accessibilité des plateformes.


Build a gameplay-only blockout: - Export the town plan as JSON (gen_town_svg.mjs --json) and write an @tool script (Scripts/town/town_builder.gd) that reads it and generates the ground, a colored box with collision for every shop and house (heights from the design doc), and the player spawn at the west entrance. - Add inspector buttons: Build Town, Preview Tree, Reset To Ground, Swap In Models. - Also add a command-line build script so you can rebuild the scene headless. - Swap In Models replaces each box with res://Assets/Models/<model>.glb, scaled to the lot and rotated to face the street, keeping the position. Show me screenshots from the street and from above.
Ajouter les déplacements et l’écharpe procédurale
Le contrôleur comportait des états sol, air, lévitation et bond d’écharpe. Des réglages exposés et un smoke test ont aidé à ajuster et à vérifier chaque action.
Start the player controller in the blockout scene. Use the rigged boy model directly, no capsule placeholder. - CharacterBody3D with states: ground, air, hover (hold jump midair, drains scarf energy), scarf leap. - Third-person over-the-shoulder camera, keyboard + mouse and gamepad input maps. - AnimationTree state machine built by a generator script (Scripts/tools/build_player_scene.gd), not by hand in the editor. - All feel parameters exported so I can tune them in the inspector. - An automated smoke test that spawns the player, runs, jumps, hovers and scarf leap, and saves screenshots.
Un tour de cou modélisé paraissait trop rigide : c’est donc le code qui a généré à la fois le tour de cou et le pan. Le même pan pouvait pendre, se tendre, saisir, s’enrouler autour de la statue et lâcher prise, sans modèles ni animations distincts.
Le premier tour de cou semblait retourné comme un gant, à cause de l’ordre d’enroulement des triangles et de normales inversées. Claude a corrigé le maillage et consigné la cause dans CLAUDE.md.
The neck scarf looks too stiff. Try generating it procedurally instead of using the Tripo model: - ScarfWrap: three thick, soft knitted loops around the neck, rebuilt every frame from the neck, head and spine bones, pushed out by capsules on the head, neck, chest and upper arms, fuller at the back so it fills the gap between the hood and the shoulders, with a little spring lag. - ScarfTail: a Verlet chain hanging from the knot at the back, with thickness, stiff enough not to stretch, colliding with body capsules. Reaching out to grab props, hanging from anchors and wrapping the statue all use the same tail (reach(point) / release()). - Both share one wool material with the red knit texture and a soft sheen at grazing angles. Keep the per-frame cost low and tell me the measured time.

Rendre le bond d’écharpe plus délibéré
Le premier bond d’écharpe se balançait comme un grappin. Je l’ai modifié pour qu’il accélère vers un point d’atterrissage choisi, avec une aura rouge, de la poussière, une traînée et une pulsation à l’atterrissage pour rendre le mouvement lisible.
Au début, des cibles placées sur des auvents pouvaient envoyer le garçon à travers un bâtiment ou le coincer. J’ai ajouté des vérifications de l’atterrissage et de la trajectoire de vol. Une cible valide devait :
- se trouver sur un vrai bord de toit ;
- disposer d’un dégagement suffisant au-dessus ;
- laisser au personnage la place de se tenir debout ;
- éviter une trajectoire de vol traversant le bâtiment de destination.
Un rapport vérifiait chaque bâtiment depuis douze directions et exigeait zéro point de bond invalide.
Change how the scarf leap feels. Right now it swings like Spider-Man. Instead, the boy knows where he's going and moves straight to the target. While moving, rotate his model so his feet point at the target, as if his feet were pulling his whole body toward it. Drop the scarf from the scarf leap and sell the power with effects: a red aura when the scarf leap starts, a puff of dust and a small energy pulse at the start point, a trail along a small arc, then the aura fades on landing with a small shockwave at the contact point. The speed is not constant: a little slow at first, then accelerating hard, never slowing down until it arrives.

Assembler le combat de boss
Le parcours comprenait le menu principal, l’introduction, l’envol de la ville, un point de contrôle, un combat de boss en trois segments et la fin.
La statue lançait des objets, dont un objet lumineux que l’on pouvait parer. Une parade ouvrait son bouclier pendant environ sept secondes. Les attaques suivantes ajoutaient une salve en éventail et une voiture qui s’abattait comme un météore, tandis que des tests de visibilité empêchaient les lancers à travers les bâtiments.
Finish all playable content for a first complete version: - A basic main menu, pause menu and ending screen with buttons. - The intro: "The Oval Town" title card; when the player enters the plaza, the statue shakes, lifts off its pedestal, a "The Statue" title card, then a shockwave pushes the boy back along the ground. Buildings fly up into the spiral tree. One checkpoint at the end of this sequence. - The boss fight: shield, parry window about 0.25 s, about 7 s exposed window, damage only from throws while exposed, 3 health segments, attacks unlocked by remaining health: single throw, fan volley (only the glowing one can be parried), car meteor shower. - Sealing: when its health reaches 0, a scarf leap point appears on the statue; scarf leap to it and press the seal button repeatedly. - A full-flow automated test that plays the whole game with a real parry, three rounds of throws, a death and restart, the seal and the ending, saving screenshots at each stage. Show me the plan first, then build it.
À zéro point de vie, une cible de bond d’écharpe apparaissait sur la statue. Le joueur appuyait à répétition sur la touche de scellement pour remplir un anneau ; s’il s’arrêtait, l’anneau se vidait.


07 / VUE D’ENSEMBLE
Peaufiner, tester et exporter
Habiller la scène
Une fois le combat fonctionnel, j’ai ajouté des détails au sol, de l’herbe, des arbres, l’éclairage, le post-traitement et les effets. Un même shader additif doux donnait une apparence cohérente à l’aura, aux anneaux, aux projectiles et aux traînées.
Polish: add the final details to the rest of the town based on the concept art (streets, parks, lane markings and so on). If details are missing or unclear, generate reference images of parts of the town first. Street layout and lane markings should be as plausible as possible; use Tripo to generate textures if needed. The road surfaces must never flicker. Add NPR style procedural grass on the lawns.
J’ai vérifié les modifications depuis la caméra du joueur, à la recherche de chaussées qui scintillent, de portes bloquées et de lampadaires mal placés.
Render with ACES tone mapping. Add post-processing: bloom, ambient occlusion, SSIL, depth of field, film grain, motion blur, chromatic aberration, FXAA, and an FSR 2 option, all in an Options menu. Bloom, AO, SSIL and DOF have Off / Low / Medium / High; FSR 2 has Off / Native AA / Quality / Balanced / Performance; motion blur, chromatic aberration and film grain are toggles. Also add VSync and resolution. The film grain should closely emulate Super 8 film. Godot has no built-in film grain or motion blur, so implement them as Compositor effects.


Ajouter l’audio et les retours d’interface
J’ai commencé avec de l’audio synthétisé, puis j’en ai remplacé l’essentiel par de la musique et des effets CC0 crédités. Les sons synthétisés sont restés là où aucun extrait ne convenait.
Find CC0 music and sound effects to replace the synthesized ones. Music should be synthwave / analog synth. Prefer less popular sources so the game feels unique. Where nothing fits, keep the synthesized sound. Verify the license on every page and generate a credits file.
Le HUD affichait des commandes contextuelles jusqu’à ce que le joueur ait utilisé chaque action. Le premier lancer lumineux ralentissait brièvement le temps pour apprendre la parade au joueur.
Add interactive hints the first time each move is needed (move, jump, hover, dash, rush, Scarf Leap, grab, throw, parry), for a more explicit and intuitive guide to the controls. Each hint stays until the player actually does the move, then it is ticked off.

Lancer une passe de non-régression complète
Avant l’export, Claude a reconstruit les scènes, lancé les rapports et joué du menu jusqu’à la fin, avec une vraie parade, une mort suivie d’un redémarrage, le scellement et des captures d’écran.
Before we export, do a full pass: 1. Rerun every generator in order (build_blockout --float --swap, build_player_scene, build_game) and make sure the main scene is the main menu. 2. Run every report (tree_report, grapple_point_report, street_report, lamp_probe, audio_probe, skin_gap_report) and both automated tests. Everything must pass. 3. Play the game through MCP from the main menu to the ending, take screenshots at each stage and read the game log for errors and warnings. Report: what passed, what failed, and anything I should check by hand.
La partie complète a révélé des erreurs d’orientation, des effets manquants et des points de contrôle réinitialisés après des changements de déplacement ou de timing.
Export a Windows build of the game. Set up a Windows Desktop export preset for the_red_scarf (embed the PCK, the game icon, product name "The Red Scarf"). Check that the export templates for Godot 4.7.2 are installed; if not, tell me how to install them instead of guessing. Exclude test scenes, test scripts and Assets/Models/_test/. Write a script that sets the build number and exports, run the exported exe once, and report the build size and any errors.
Le premier export Windows pesait 1,15 Go, essentiellement des textures. La suppression des assets inutilisés et des anciens modèles, ainsi qu’une compression plus compacte des normal maps, l’a ramené à 755,5 Mo.
08 / VUE D’ENSEMBLE
Ce que j’emporterais dans le prochain projet
Le workflow que je reprendrais est le suivant :
- Décrire le résultat visé.
- Réaliser un petit prototype.
- L’examiner dans l’environnement d’exécution réel.
- Transformer chaque problème récurrent en règle ou en rapport.
- Alors seulement, passer à l’échelle.
Je réutiliserais le même schéma : une seule source pour le layout de la ville, des points de contrôle pour les lots d’assets, des règles géométriques pour le bond d’écharpe et un test complet du combat de boss.
Pour une démo similaire, commencez par un personnage, un parcours et un ennemi. Testez un asset représentatif avant de produire par lots, et transformez les problèmes récurrents en vérifications que vous pourrez relancer.