Roblox : recréer ce qui est montré dans une vidéo de référence
Le niveau d'exigence de l'utilisateur est "exactement comme dans la vidéo". Il rejette les effets ou mécaniques inventés, les animations rigides et les ornements qui ne figurent pas dans le clip. Tout ce qui suit vous ancre dans la référence et la vérification par rapport à celle-ci — pas par rapport à votre mémoire.
Outils : Roblox Studio MCP (execute_luau, search_asset, insert_asset, upload_image, screen_capture, start_stop_play, user_keyboard_input, user_mouse_input, get_console_output, multi_edit), Blender MCP (execute_blender_code — extraction d'images et création de VFX), PowerShell/Bash.
0. Règles de base
- Ne reproduisez que ce que montre la vidéo. Ambigu ? Regardez plus d'images ; toujours pas clair ? Demandez — ne comblez pas les lacunes avec vos propres idées.
- Textures/images : ne créez pas les vôtres. Utilisez d'abord le Creator Store. Si rien n'est proche, créez l'actif dans Blender à partir de la référence (§4) et informez-en l'utilisateur.
- Le déclencheur par défaut est une pression de touche (demandez laquelle si non spécifiée).
- Pas d'ornements non demandés (pirouettes, flips cartoon). L'utilisateur les a explicitement détestés.
- Copiez les mécaniques, les sensations et les effets — pas la marque d'un autre jeu, ses noms, ses assets UI ou ses actifs volés, et ne clonez pas un jeu entier existant. Si on vous demande de rendre un jeu identique à un autre, recréez les mécaniques/effets spécifiques montrés et dites-le.
1. Extraire et étudier les images
- Rendez les images via Blender (ffmpeg est généralement absent) : envoyez
scripts/extract_frames.pyàexecute_blender_codeavecVIDEO/OUTdéfinis. Il utilise une scène jetable et ne touche pas au fichier .blend de l'utilisateur. Sur Windows, gardezOUTcourt (MAX_PATH). scripts/contact_sheet.ps1 -Dir <OUT>→ feuilles 4×4 étiquetées. Lisez toutes les feuilles, puis ouvrez des images individuelles à chaque coup, impact, changement d'UI et entrée. Pour les mécaniques rapides, utilisezSTEP = 1autour du moment que vous mesurez.- Décidez ce que vous construisez : VFX/cinématique, système de gameplay, ou les deux (la plupart des coups de combat sont les deux : un système qui décide ce qui se passe + des VFX qui le montrent).
- Rédigez le cahier des charges avant de construire — c'est ce contre quoi vous vérifierez plus tard :
- Feuille de rythme (VFX) : une ligne par temps avec le temps (image/fps), la caméra, chaque effet (forme, couleur, texture, taille, durée, nombre), la pose de chaque personnage, le post-traitement.
- Spécification du système (mécaniques) : entrées, états et transitions, temporisations (préparation/actif/récupération/recharge en images), distances et vitesses (mesurées par rapport au corps R15 d'environ 5 studs), nombres affichés à l'écran, UI et ses animations, ce que voient les autres joueurs. Voir
references/systems.md.
2. Inspecter le lieu
search_game_tree + vidages rapides de Lighting, StarterPlayer, ReplicatedStorage, ServerScriptService. Réutilisez les frameworks existants de l'utilisateur (modules de combat, remotes, data stores, kits UI) au lieu d'en construire des parallèles ; adaptez-vous à leur style de code.
3. Actifs du Creator Store
search_asset(scopecreator_store,priceFilter: free) avec 3 à 5 formulations par élément. Comparez les candidats visuellement :scripts/asset_sheet.ps1construit une feuille de vignettes étiquetées à lire à côté des images de référence.- Un ID d'actif Decal n'est pas l'ID de l'image : résolvez avec
game:GetObjects("rbxassetid://"..id)[1].Texture(Edit datamodel) avant de l'utiliser dans des particules/GUIs. - Les modèles gratuits contiennent souvent des backdoors. Après avoir inséré un Model, listez chaque
LuaSourceContainer; ne gardez que ce dont vous avez besoin et détruisez le reste. - Avatars réels en tant que mannequins/ennemis :
Players:CreateHumanoidModelFromUserId(Players:GetUserIdFromNameAsync(name))fonctionne depuis Edit. Ancrez le HRP, mettez les pieds au sol, supprimez les scripts sauf Animate.
4. Quand construire des VFX dans Blender
Par défaut, utilisez les effets natifs de Roblox (particules, faisceaux, trails, pièces, GUIs) — peu coûteux, ajustables, rendus en temps réel. Passez à Blender lorsque la référence montre quelque chose que les natifs ne peuvent pas bien approcher :
| La référence montre | Sortie Blender | Dans Roblox via |
|---|---|---|
| Croissants d'éclats 3D épais, spirales torsadées, dômes d'ondes de choc, pointes, fractures du sol avec profondeur | Maillage avec UVs (+ texture de dégradé/bruit) | EditableMesh construit à partir de données exportées, ou 3D Importer |
| Fumée dessinée/anime, feu, explosions, explosions d'énergie, images d'impact | Feuille de flipbook rendue (PNG transparent) | upload_image → ParticleEmitter flipbook / ImageLabel |
| Textures complexes (traînées de bruit, rampes de dégradé, cartes de tourbillon) | PNG rendu | upload_image → Beam/Trail/Texture |
Lisez references/blender_vfx.md pour le pipeline (configuration de scène, rendu de flipbook + grille d'emballage, export de maillage vers Luau, upload localhost, constructeur EditableMesh, animation de maillages dans la timeline).
5. Construire
- VFX / cinématiques : un ModuleScript client piloté par une timeline (événements, plans de caméra, mises à jour par image, délais de timeline, zones de distorsion temporelle, pause) avec une pile de nettoyage, plus des corps clé animés pour le lanceur et la cible. Copiez le squelette dans
references/engine.md. - Systèmes : autoritaires côté serveur — le client envoie l'intention via un RemoteEvent, le serveur valide (recharge, état, portée, limite de taux) et applique le résultat, les clients rendent le feedback. Disposition des dossiers et recettes par système dans
references/systems.md. - Les deux : le serveur décide des coups/dommages/état et déclenche les clients ; chaque client joue le module VFX. Gardez les temporisations dans une config partagée pour que mécaniques et visuels restent synchronisés.
6. Animation qui semble vivante
Les poses statiques sont perçues comme "figées". Ce qui fonctionne :
- Des pistes d'images clés, pas des poses — des dizaines de clés par personnage ; chaque clé = pose + surcharges + easing vers celle-ci.
- Chaque attaque : anticipation (Quad.In) → frappe (Exponential.Out, 40–70 ms) → dépassement (Quad) → stabilisation (Sine.InOut). Chaque coup sur une cible : clé de recul + impulsion de secousse décroissante.
- Vie additive à chaque image : respiration, dérive de bruit lent sur toutes les articulations, secousse de coup, tremblement.
- Donnez aux cibles une performance (sursaut, recul, titubation, effondrement au sol : genoux, mains, côté). Pas de sauts périlleux à moins que le clip n'en contienne.
- Faites correspondre les moments narratifs aux coupes du clip ; demandez des informations sur le rythme et utilisez les zones
TimeWarppour ralentir les sections.
7. Vérifier par rapport à la référence
- Testez en jeu. Timelines : parcourez avec
PauseAtet capturez d'écran chaque temps à côté de l'image de référence correspondante. Systèmes : pilotez les entrées avecuser_keyboard_input/user_mouse_input, lisez l'état à partir des datamodelsClientetServer, et mesurez les temporisations (os.clock) et les distances par rapport au cahier des charges — des chiffres, pas des impressions. - Caméra de débogage à
Enum.RenderPriority.Last.Value; effacez les particules/désactivez les faisceaux et GUIs pendant la pause pour voir les corps. execute_luaus'exécute dans sa propre VM :requiredonne une instance de module distincte — observez l'état du jeu (attributs, ancrage, CameraType), pas les champs du module.- Terminez par une entrée réelle, puis confirmez le nettoyage/restauration et un
get_console_outputpropre.
8. Pièges
Lisez references/gotchas.md avant de construire — faisceaux invisibles à 1 segment, halos sombres, flou DepthOfField, Expo vs Exponential, transformations des articulations rendues uniquement lorsqu'elles sont écrites en PreSimulation, rigs AnimationConstraint, mise à l'échelle de la taille du corps + contrainte au sol, profondeur de l'eau du terrain, superpositions réfléchies dans l'eau, pièges de mise en réseau, et plus encore.
9. Rapport
Ce que chaque temps/mécanique fait maintenant (horodaté ou par état), quels actifs ont été utilisés (IDs du store, actifs Blender et leurs IDs téléchargés), tout ce qui n'a pas pu être reproduit et pourquoi, où se trouvent les paramètres ajustables (modules de config, Cutscene.Poses/Tracks, TimeWarp), et un rappel pour sauvegarder le lieu (Ctrl+S).