Créer un premier niveau Unreal jouable avec Claude Opus 5.5
Une méthode par étapes pour les créateurs indépendants : vérifier la connexion réelle à Unreal, construire et tester un niveau avec trois objets, victoire et redémarrage, puis décider si Meshy et Blender sont utiles.
Sommaire

La règle pratique est de ne pas connecter Claude Code, Unreal, Meshy et Blender dès le premier jour. Commencez par prouver que Claude Code lit réellement l’instance d’Unreal Editor ouverte. Construisez ensuite un greybox que vous pouvez parcourir, dans lequel vous ramassez trois objets, gagnez et redémarrez. Validez vous-même chaque étape dans Play. Ce n’est qu’une fois cette boucle stable qu’il faut décider si un asset 3D généré ou un nettoyage dans Blender justifie les dépendances supplémentaires.
Ce guide repose sur la documentation actuelle ; il ne prétend pas que l’auteur a exécuté votre projet. Epic classe toujours Unreal MCP comme Experimental et précise que les fonctions, API et formats de données peuvent changer. Une connexion MCP, un résultat d’outil réussi et un jeu réellement jouable constituent donc ici trois preuves différentes.
Vérifiez que cette méthode vous convient
Elle convient surtout à une personne qui comprend les bases d’Unreal, conserve son projet sous contrôle de version et accepte de lancer Play après chaque petite modification. Claude peut accélérer une opération que vous savez décrire et inspecter ; il ne peut pas décider seul si les déplacements, la caméra, les collisions ou les sensations sont corrects.
| Situation | Recommandation |
|---|---|
| Vous comprenez la structure, relisez les changements et testez dans Play | Commencez par le greybox minimal ci-dessous |
| Vous voulez seulement valider la boucle de jeu | Gardez les primitives Unreal ; reportez Meshy et Blender |
| Le projet n’a ni copie ni point de retour | Arrêtez-vous et créez une copie avec des checkpoints |
| Vous attendez un jeu fini à partir d’un prompt | Découpez l’objectif en systèmes observables |
| Il faut seulement déplacer un Actor ou changer une valeur | Une modification manuelle est généralement plus rapide |
Anthropic présente Opus 5.5 pour le code complexe et les tâches agentiques longues. Cela ne rend pas un résultat visuel auto-validant. Laissez le modèle inspecter, planifier et exécuter ; gardez l’approbation, l’observation et le test Play côté humain.
Définissez le plus petit résultat jouable
La cible n’a que quatre exigences :
- Le joueur apparaît à
Player Startet suit une route claire jusqu’à l’arrivée. - Trois objets visibles incrémentent chacun une seule fois un compteur de 0 à 3.
- L’arrivée déclenche la victoire uniquement après les trois objets.
- La touche
Rrestaure position, compteur, objets et état de victoire.
Inscrivez-les dans le brief du projet. Pour chaque lot, notez le changement, le résultat attendu, le résultat réel et la décision accepté/refusé. Connected ne signifie pas jouable. Compilé ne signifie pas jouable. Une requête acceptée par un outil ne signifie pas jouable. Seul un test manuel dans Play valide chaque étape.
Étape 1 : connecter Claude Code au MCP officiel d’Unreal
Créez d’abord un point de récupération
Enregistrez le projet, puis faites un commit ou un shelve. Le plugin officiel d’Epic donne à Claude un accès large et en direct à l’éditeur, y compris l’exécution de Python dans son processus. Son README recommande de traiter cet accès comme l’exécution de code arbitraire généré par un assistant, d’enregistrer avant les longues sessions et de relire le diff.
N’utilisez pas --dangerously-skip-permissions dans un projet important. Apprenez sur une copie, un sandbox ou une branche jetable.
Activez les deux plugins Unreal
Ce guide suit la page officielle Unreal MCP, actuellement publiée sous Unreal Engine 5.8 Documentation. Il suppose que votre build contient réellement Unreal MCP (ModelContextProtocol) et All Toolsets (AllToolsets). N’en déduisez pas que toutes les versions d’UE5 disposent des mêmes plugins. Si l’un manque, arrêtez-vous et utilisez un build couvert par la documentation Epic, sans le remplacer par un MCP communautaire.
Suivez la configuration officielle :
- Dans Edit → Plugins, activez Unreal MCP.
- Activez également All Toolsets. Le serveur peut exister sans exposer d’outils utilisables s’il manque.
- Redémarrez l’éditeur.
- Activez Auto Start Server dans Editor Preferences ou exécutez dans la console :
ModelContextProtocol.StartServer
L’endpoint local par défaut est http://127.0.0.1:8000/mcp. Il n’a pas d’authentification par défaut et n’est pas destiné à un accès distant. N’exposez pas ce port sur Internet et ne l’utilisez pas sur une machine partagée.
Générez la configuration Claude Code
Dans la console Unreal, exécutez :
ModelContextProtocol.GenerateClientConfig ClaudeCode
Une installation Launcher écrit généralement .mcp.json à côté du .uproject ; une build source peut l’écrire à la racine du workspace, à côté de Engine/. Régénérez-le après un changement de port. Démarrez Claude Code depuis la racine qui contient cette configuration.
Installez le plugin officiel d’Epic :
/plugin install unreal-engine-skills-for-claude-code@claude-plugins-official
Si le marketplace officiel manque, ajoutez-le d’abord :
/plugin marketplace add anthropics/claude-plugins-official
Séparez accès au modèle, éditeur et génération d’assets
Claude Code peut utiliser un compte Anthropic ou une API compatible. Avec BetterToken, le guide Claude Code actuel demande de définir ANTHROPIC_BASE_URL sur https://bettertoken.ai sans /v1, et de fournir ANTHROPIC_AUTH_TOKEN localement. Ne collez jamais une vraie clé dans le chat, le dépôt ou le paquet de matériaux.
L’ID officiel du modèle Anthropic est claude-opus-5-5. Si vous passez par BetterToken, copiez l’ID exact depuis le Model Plaza en vigueur et confirmez sa disponibilité pour le groupe de clé choisi ; après le démarrage, vérifiez le routage réel avec /model et les journaux du fournisseur plutôt que de faire confiance à une ancienne configuration copiée.
Vérifiez une vraie lecture en direct
Contrôlez les quatre niveaux :
/pluginaffiche le plugin Unreal officiel ;/mcpafficheunreal-mcp;- l’Output Log ne montre aucune erreur de port ou de dépendance ;
- un prompt en lecture seule renvoie le vrai nom du niveau, les principaux Actor et la présence de
Player Start.
Le dernier point prouve que l’éditeur répond. Epic précise qu’un proxy connected ou un catalogue d’outils en cache ne garantit pas qu’un appel Unreal en direct fonctionne.
Étape 2 : construire uniquement un greybox parcourable
Partez d’une base third-person déjà jouable. Player Start marque un point d’apparition, mais ne fournit pas à lui seul personnage contrôlable, GameMode, inputs ou caméra. Pour un nouveau projet, utilisez le template Unreal Third Person. Dans un projet existant, vérifiez que le GameMode actif fait apparaître un pawn third-person contrôlable, que le déplacement et la caméra de suivi fonctionnent et que le niveau contient un Player Start.
Avant toute modification de géométrie par MCP, cliquez sur Play, pas Simulate. Vérifiez qu’un personnage apparaît réellement, que WASD le déplace et que la souris contrôle la caméra ; arrêtez ensuite PIE. Si un point échoue, réparez d’abord cette base au lieu de masquer le problème dans le prompt du greybox.
Après validation, demandez à Claude de lire le niveau, le GameMode, le personnage et les toolsets disponibles, puis d’énumérer son plan et les assets modifiés. Un outil manquant doit arrêter la tâche. Limitez-la ainsi :
À partir de la base third-person déjà validée en Play, construis un greybox minimal dans le niveau actuel. Conserve le personnage, le GameMode, les input mappings et la caméra existants ; ne les remplace pas et ne les reconstruis pas. Utilise des primitives pour le sol, les limites, un chemin clair et un marqueur d’arrivée. N’ajoute ni ennemi, ni asset artistique, ni UI complexe. Indique chaque asset créé ou modifié. Arrête-toi si un outil manque, si la compilation échoue ou si le résultat n’est pas un succès explicite.
Pendant l’exécution :
- Sérialisez les mutations dépendantes sur le même asset ou état de l’éditeur.
- Attendez la fin de la compilation C++, Blueprint ou shader ; une requête acceptée n’est pas une compilation terminée.
- Lisez chaque statut et arrêtez-vous en l’absence de succès explicite.
Test Play A : cliquez de nouveau sur Play, partez avec le personnage apparu au Player Start et parcourez tout le chemin. Il ne doit ni sortir des limites, ni se bloquer dans un passage, ni franchir un obstacle invisible. Corrigez uniquement l’échec observé sans redessiner caméra, matériaux ou parcours.
Sauvegardez, committez et marquez un point de récupération après validation.
Étape 3 : ajouter trois objets à ramasser
Le lot suivant ajoute seulement la collecte et protège la route déjà validée :
Ajoute trois objets clairement visibles et séparés le long de la route. Le contact doit se déclencher une fois, masquer ou supprimer l’objet et faire passer un compteur lisible de 0 à 3. Ne déplace ni Player Start, ni la route, ni les limites, ni l’arrivée. Indique les Blueprints, variables, événements et assets UI concernés, puis fournis une checklist Play.
Test Play B : ramassez-les dans l’ordre normal puis inverse ; chacun compte une fois ; la suite est 1, 2, 3 ; repasser sur un ancien emplacement n’ajoute rien ; une nouvelle session Play recommence à 0.
Si Claude annonce « terminé » mais que le compteur ne change pas dans Play, l’étape échoue. Notez le comportement et l’Output Log, demandez d’abord un diagnostic puis une seule correction ciblée.
Étape 4 : victoire et redémarrage
Le dernier lot ajoute seulement la fin et la remise à zéro :
L’arrivée affiche la victoire uniquement lorsque le compteur vaut 3. Avec moins d’objets, aucune victoire. La touche R redémarre le niveau et restaure la position, les trois objets, le compteur et l’UI de victoire. Conserve la route et les inputs. Indique les changements et fournis une checklist Play en cinq étapes.
Test Play C :
- Arriver avec deux objets : pas de victoire.
- Ramasser les trois puis arriver : victoire visible.
- Appuyer sur
Rà mi-parcours : tout est restauré. - Appuyer sur
Raprès la victoire : tout est restauré. - Changer l’ordre de collecte : comportement identique.
Vous avez seulement maintenant un premier niveau jouable. Enregistrez, commitez et gardez une version stable sans art externe.
Ajouter Meshy ou Blender uniquement après validation du greybox
Ce sont des branches facultatives, pas des prérequis.
Meshy seulement lorsqu’un objet distinct en vaut la peine
Cette branche reste facultative. Le serveur MCP officiel Meshy exige un MESHY_API_KEY valide ; la clé nécessite une offre payante éligible et les requêtes API utilisent des crédits API prépayés. L’offre ou le solde affiché dans l’application Web ne prouve pas à lui seul l’accès ni le solde API. Avant toute génération, appelez meshy_check_balance.
Pour Claude Code sous Bash, utilisez cette configuration locale. Saisissez la clé sans l’afficher, ne la collez pas dans le chat et ne committez pas la configuration locale obtenue :
read -rs MESHY_API_KEY && export MESHY_API_KEY
claude mcp add-json meshy "{\"command\":\"npx\",\"args\":[\"-y\",\"@meshy-ai/meshy-mcp-server\"],\"env\":{\"MESHY_API_KEY\":\"${MESHY_API_KEY}\"}}"
unset MESHY_API_KEY
Utilisez ensuite /mcp pour confirmer que meshy est connecté, demandez la liste des outils Meshy et appelez meshy_check_balance. Ces contrôles ne créent aucune tâche de génération. Arrêtez-vous si la clé, l’offre ou le solde API n’est pas utilisable.
Suivez une seule route text-to-3D simple pour l’objet :
- Appelez
meshy_text_to_3davec unpromptcourt et précis ettarget_formats: ["glb"]. Cela crée un preview non texturé. N’appelezmeshy_text_to_3d_refinequ’après réussite du preview et seulement si la texture justifie une tâche distincte. Refine renvoie un nouveau task ID : conservez les ID du preview et du refine, puis utilisez l’ID du refine avec le task typetext-to-3dpour suivre et télécharger le résultat texturé. - Notez le task ID retourné et le task type
text-to-3d. Ne conservez pas uniquement la réponse en langage naturel. - Appelez
meshy_get_task_statusavec le même ID et type.PENDING,IN_PROGRESSou unTIMEOUTde l’outil ne sont pas un échec. Une coupure réseau,429ou5xxpendant le statut ne transforme pas non plus la tâche enFAILED: interrogez plus tard le même task ID sans créer une tâche payante en double. - Téléchargez uniquement après
SUCCEEDED. Liseztask_erroraprèsFAILEDet arrêtez-vous aprèsCANCELED. Enregistrez le résultat dans un chemin local explicite d’assets sources, par exemple :
meshy_download_model
task_id: <same task ID>
task_type: "text-to-3d"
format: "glb"
save_to: "<absolute-project-path>/SourceAssets/Props/CollectibleMarker/marker.glb"
Vérifiez l’existence du fichier avant Blender ou Unreal. Selon Asset Retention, les assets API des clients non Enterprise sont conservés au maximum trois jours ; ne gardez pas seulement l’URL.
Test asset D, uniquement si Meshy est choisi : le GLB local s’ouvre de façon répétable et task ID, task type, prompt, statut final et chemin local sont consignés. Cela ne prouve pas encore que l’asset est prêt pour Unreal.
Blender seulement avec une tâche de nettoyage précise
Un nettoyage manuel suffit ; un autre MCP n’est pas obligatoire. Seulement si vous choisissez Blender piloté par Claude, installez add-on, LLM client et MCP server officiels depuis la page Blender MCP, puis commencez par un inventaire read-only des objets de la scène. Ne mélangez pas ports, noms d’outils ou installation du projet communautaire ahujasid/blender-mcp. Blender avertit que son MCP exécute du code généré par le LLM sans protection des données ; utilisez une VM ou un système sans données sensibles.
Pour un objet statique, suivez cette route minimale :
- Dans Blender, choisissez File → Import → glTF 2.0 (.glb/.gltf) et ouvrez
marker.glb. Gardez uniquement l’objet voulu, supprimez manuellement la géométrie parasite et vérifiez échelle, orientation, origine, noms et matériaux. - Sauvegardez la source propre sous
<absolute-project-path>/SourceAssets/Props/CollectibleMarker/marker-clean.blendafin de conserver une version modifiable et récupérable. - Sélectionnez uniquement l’objet statique nettoyé, choisissez File → Export → glTF 2.0, définissez le format sur glTF Binary (.glb), activez Selected Objects et Apply Modifiers, puis enregistrez
marker-clean.glbà côté du.blend. - Dans le Content Browser d’Unreal, créez ou ouvrez
/Game/Assets/Props/Collectibles/et importezmarker-clean.glb. Dans l’aperçu d’import Interchange, confirmez que l’entrée voulue est un Static Mesh, importez uniquement cet objet statique et sauvegardez l’asset. Vérifiez sa taille dans Static Mesh Editor ; ajoutez une collision simple seulement si nécessaire sans remplacer ni casser l’overlap trigger existant. - Ouvrez le Blueprint ou Actor collectable déjà validé en Play et remplacez uniquement la référence du composant Static Mesh visible. Conservez trigger, collecte unique, compteur, victoire, redémarrage et instances placées. Compilez, sauvegardez et relancez Play.
Test asset E, uniquement si la branche Blender/import est choisie : .blend, le .glb nettoyé et le Static Mesh s’ouvrent ; échelle, orientation, origine et collision sont explicables ; le mesh visible change sans modifier la logique ; les tests Play A–C passent toujours.
Diagnostiquer par niveau de preuve
| Symptôme | Vérifier d’abord | Ne pas confondre avec |
|---|---|---|
/mcp est connected mais le niveau est illisible | Éditeur ouvert, Output Log, vrai appel read-only | Connexion jouable |
| Le serveur démarre sans outils | AllToolsets, puis ModelContextProtocol.RefreshTools si nécessaire | Incapacité du modèle |
| Les appels bloquent | Compilation, chargement du niveau ou PIE actif | Problème réseau certain |
| L’outil Blueprint répond mais le jeu échoue | Statut, compilation, Output Log, Play manuel | Travail terminé |
Le statut Meshy finit en timeout, coupure, 429 ou 5xx | Conserver task ID/type et réinterroger la même tâche | FAILED ou raison de créer une autre tâche payante |
| Une URL expire | Copie locale, task ID, durée de rétention | Lien permanent |
| Échelle ou collision incorrecte | Unités, origine, export, collision Unreal | Modèle généré forcément mauvais |
Après deux corrections infructueuses du même symptôme, revenez au dernier checkpoint accepté et réduisez la tâche. N’empilez pas une troisième hypothèse sur deux réparations non vérifiées.
Tenir trois comptes d’usage séparés
Ne convertissez pas « 19 % d’un Max hebdomadaire » en tokens API. Un créateur a rapporté environ quatre heures et 19 % de son Max hebdomadaire pour une première build complète. C’est un témoignage individuel, pas une promesse de durée, prix ou quota.
| Voie | Élément obligatoire à vérifier séparément | Ce qui n’est pas inclus | Preuve |
|---|---|---|---|
| Claude Code avec abonnement Claude | Offre, limite session/semaine, modèle actif | Credits Meshy ou facture API | Vues modèle et usage de Claude Code |
| Claude Code avec API de modèle | API key, vrai model ID, tokens entrée/sortie/cache, solde | Max hebdomadaire ou Meshy | Journaux et facturation ; BetterToken affiche modèle et tokens |
| Meshy facultatif | MESHY_API_KEY, offre payante éligible/accès API, solde API prépayé et consommation par tâche | Tokens de l’API modèle ; le quota de l’app Web ne prouve pas le solde API | meshy_check_balance, tâches et facturation |
| Unreal, Blender, plugins et contenu | Licences actuelles, matériel, marketplace, plugins tiers | Supposition que toute la pile est gratuite | Conditions et achats de chaque fournisseur |
Avant de passer à l’échelle, mesurez un niveau : prompts, reprises, requêtes modèle, éventuels task ID Meshy, fichiers téléchargés et temps humain de Play. Le cœur doit répéter A–C de façon fiable ; D n’est requis que si Meshy est choisi et E seulement pour la branche Blender/import. Étendez après stabilisation des branches réellement utilisées.
Checklist finale
- Un point de retour existe avant la session et après chaque étape acceptée.
- En plus de
/mcp, un vrai appel Unreal en lecture seule a réussi. - Dans Play, vous pouvez parcourir, ramasser exactement trois objets, gagner correctement et redémarrer depuis tout état.
- PIE est arrêté avant les changements d’assets et la compilation finit avant l’étape suivante.
- Meshy et Blender restent facultatifs jusqu’au fonctionnement du greybox.
- Si Meshy a été utilisé, le résultat est local et task ID, task type et statut final sont consignés.
- Si un asset externe a remplacé une primitive, les tests Play A–C ont été répétés.
- Modèle réel, tokens, quota Claude et credits Meshy sont vérifiés séparément.
Le résultat n’est plus seulement une démonstration d’IA séduisante : c’est un processus récupérable, observable et extensible, sans perdre de vue ce qui fonctionne réellement.