Un jeu « complet » ne veut pas dire « gros ». Il veut dire : une boucle de jeu claire, qui marche du début à la fin, sans bug bloquant, et publié. Mieux vaut un petit TD fini et jouable qu'un gros TD jamais terminé.
À chaque création, précise à Claude le thème visuel (fantasy, futuriste, jouet…), les matériaux & couleurs, l'éclairage et des décors. Les prompts ci-dessous incluent déjà le décor — adapte le thème à ton goût.
❓ Pourquoi ranger les waypoints dans un Folder plutôt qu'en vrac dans le Workspace ?
Humanoid. Pour le déplacer, on appelle Humanoid:MoveTo(position) vers chaque waypoint, l'un après l'autre. Quand il atteint la base, il inflige des dégâts et disparaît.❗ Obligatoire : explique avec tes mots comment l'ennemi sait où aller (le rôle de MoveTo et de la boucle sur les waypoints).
❓ Que se passe-t-il si la vie de la base tombe à 0 ? (note l'idée, on le codera au jalon 5)
task.wait) entre chacun. À chaque vague suivante : plus d'ennemis et/ou plus de vie. Un compteur de vague indique la progression.❓ À quoi sert task.wait() ici ? Que se passerait-il sans aucun délai entre les spawns ?
RemoteEvent prévient le serveur qui crée la tour (jamais le client directement !). Le tir : la tour cherche en boucle l'ennemi le plus proche dans son rayon (distance = .Magnitude) et lui inflige des dégâts avec un temps de recharge.❗ Important : pourquoi le placement doit-il être validé côté serveur et pas seulement côté client ? (pense à la triche)
❓ Comment la tour trouve-t-elle l'ennemi « le plus proche » ? (le rôle de la distance / .Magnitude)
leaderstats (un IntValue par joueur). On gagne à chaque ennemi tué, on paie pour chaque tour. L'équilibrage, c'est régler ces nombres pour que le jeu soit ni trop facile ni impossible.❓ Équilibrage : teste ta partie. Est-elle trop facile ou trop dure ? Quels nombres as-tu changés (vie ennemis, dégâts tour, prix, récompense) et pourquoi ?
ScreenGui) montre au joueur l'info clé : argent, vague actuelle, vie de la base. Le « polish » (sons, feedback, menu) transforme un prototype en jeu. Puis File → Publish to Roblox pour le mettre en ligne.Checklist de finition
- HUD à l'écran : argent, n° de vague, vie de la base
- Un menu de départ (bouton « Jouer »)
- Du feedback : son ou effet quand un ennemi meurt / la base est touchée
- Aucun bug bloquant sur une partie complète
- Jeu publié sur Roblox (visible en ligne)
- Testé par au moins 2 personnes + corrections faites
📷 Captures du jeu fini
🔗 Lien du jeu publié sur Roblox
❓ Bilan du projet : qu'est-ce que les testeurs ont dit ? Qu'as-tu corrigé ? Qu'ajouterais-tu dans une V2 ?
MarketplaceService — un Game Pass = achat permanent (ex : « Pass premium »), un Developer Product = achat répétable (ex : 500 pièces). Un pass de combat n'est pas natif : on le construit = un Game Pass « premium » + une progression maison (XP → paliers → récompenses) sauvegardée en DataStore.Aucun compte spécial pour créer et tester. Encaisser l'argent réel (DevEx) demande Premium + 13 ans + vérification — pas nécessaire pour apprendre.
Sur le Creator Dashboard (create.roblox.com) → ton expérience → Associated Items → Passes → Create a Pass. Nomme-le (ex : « Pass de combat premium »), mets un prix en Robux, et note son ID.
❓ Pourquoi vérifie-t-on la possession côté serveur avec UserOwnsGamePassAsync, et pas juste côté client ?
❗ Obligatoire : explique comment le jeu sait quel palier le joueur a atteint et lesquels il a déjà réclamés (rôle du DataStore).
❓ Différence entre un Game Pass et un Developer Product ? Donne un exemple d'usage de chacun dans ton TD.
1. Décris la boucle de jeu complète de ton Tower Defense, du spawn d'un ennemi à sa mort.
2. Pourquoi le placement des tours et les dégâts sont gérés côté serveur ?
3. Comment un ennemi suit-il le chemin ? Et comment une tour choisit-elle sa cible ?
4. Cite 2 nombres que tu as réglés pour équilibrer le jeu, et l'effet de chacun.
5. Qu'est-ce qui a été le plus dur, et comment Claude Code t'a aidé à t'en sortir ?