Ceci est la traduction française, faite pour ce site, du guide livré dans le produit : le fichier INSTALL.md de votre archive, en anglais. L’anglais fait référence : en cas de doute, c’est lui qui compte. Lire l’original en anglais
1. Les outils
- Installez Rokit (<https://github.com/rojo-rbx/rokit>), puis dans le dossier du paquet :
rokit install. Il récupère Rojo, Lune, StyLua, Selene, luau-lsp et uv aux versions derokit.toml. uv synccrée l’environnement Python que les outils utilisent (.venv) à partir deuv.lock.- Vérifiez le paquet sur votre machine :
bash tools/check.sh(Git Bash sous Windows). Il se termine parGATE GREEN (full). Les tests qui lisent un art que vous n’avez pas encore fabriqué (les modèles, les identifiants des envois, les fichiers audio) et les documents propres au développeur sont
notés skip dans la sortie de leur suite, et les contrôles audio disent qu’ils n’ont pas été lancés : ils tournent en entier une fois l’art fabriqué. Mesuré avec le paquet décompressé dans un dossier vide, les outils déjà installés (cache chaud) : rokit install environ 1 s, uv sync moins de 1 s, la gate complète 10 min 1 s (164 étapes vertes) pour la version 1.1.0, mesurée le 2026-10-13 à priorité inférieure à la normale sur un PC de bureau Windows 10 utilisé en même temps (les 142 étapes de la version 1.0.0 ont pris 2 min 29 s le 2026-10-09 sur une machine au repos, donc une machine au repos peut aller plus vite ; prévoyez dix minutes). NON MESURÉ : une première installation des outils sur une machine qui n’en a aucun (elle télécharge six outils et les paquets Python : le temps dépend de votre connexion).
2. Faire sien le projet
project.json est déjà vierge. Mettez votre identifiant d’utilisateur Roblox dans creatorUserId (le nombre qui figure dans l’adresse de votre profil), ou l’identifiant d’un groupe dans creatorGroupId. Laissez universe, place, testUniverse et testPlace à 0 jusqu’à l’étape de publication.
3. Jouer tout de suite, sans aucun art
Les identifiants du paquet sont vides : chaque image du jeu est dessinée comme rien, chaque modèle manquant est dessiné comme une forme simple, et un jeu sans passe n’a pas de boutique. Cela suffit pour construire, tester et modifier le jeu avant de fabriquer quoi que ce soit.
bash tools/build_place.shécrit le fichier de placeSmackwater.rbxl: 0,1 s et 1,5 Mo (mesuré).- Ouvrez-le dans Roblox Studio et appuyez sur Play (le Play de Studio, un seul client). Le jeu lance un match contre un bot : votre combattant est une figure simple de la couleur de son emplacement (un cylindre, une boule pour la tête et un nez qui montre où il regarde), l’arène est faite de ses ponts en dalles
plates au-dessus de la mer et d’un ciel, l’interface affiche les pourcentages et le chrono, les commandes tactiles sont de simples disques translucides, et rien ne fait de bruit : aucune image, aucun modèle, aucun son n’est demandé à Roblox. L’écran des réglages s’ouvre avec tous ses onglets sauf la Boutique (un jeu sans passe n’a pas de boutique). Le développeur a lu exactement cela le 2026-10-13, depuis la place que construit la version 1.1.0 de ce paquet (pas celle du jeu en ligne), dans un vrai client Studio : un match de la sélection au résultat sur un poste de bureau (1920 x 1080) et sur l’écran d’un téléphone (un préréglage milieu de gamme, en paysage), 34 contrôles sur 34 à chaque fois, aucune erreur dans la sortie des deux côtés et la sonde d’interface ne trouvant rien sur le match, les réglages et le résultat. Le seul avertissement est la ligne qui dit que le modèle du Quai n’est pas encore fabriqué. Un vrai téléphone en main et une vraie manette sont NON TESTÉS.
4. Une clé d’API Open Cloud
Les outils d’envoi et de publication parlent à Roblox avec votre propre clé d’API. Créez-la sur <https://create.roblox.com/dashboard/credentials> (« Create API Key ») : permission Assets (lecture et écriture) avec votre compte ou votre groupe comme propriétaire ; ajoutez Universe Places (écriture) seulement si vous utilisez tools/publish.py, et Game Passes (écriture) et Luau Execution Sessions (écriture) seulement pour les passes et tools/cloud_run.py. Donnez la clé aux outils avec la variable d’environnement ROBLOX_OPEN_CLOUD_KEY (PowerShell : $env:ROBLOX_OPEN_CLOUD_KEY = "<la clé>" ; Git Bash : export ROBLOX_OPEN_CLOUD_KEY=<la clé>), ou gardez-la dans un fichier hors du dossier et passez --key-file <fichier> à un outil. Les outils ne l’affichent jamais, et elle n’est jamais écrite dans le projet : gardez-la hors de tout dépôt que vous feriez du paquet.
5. Fabriquer l’art et l’envoyer (la longue étape)
- Installez Blender 5.2 LTS (<https://www.blender.org/download/lts/>).
tools/make_art.pyle trouve dans le PATH, dans la variable d’environnementBLENDERou avec--blender <chemin de blender.exe>. uv run python tools/make_art.pylance, dans l’ordre, le téléchargement des textures (15 jeux CC0, 770 Mo en 2K :tools/fetch_textures.py), les 51 lancements de Blender (les kits, les vues lointaines et les ciels des cinq arènes, les neuf combattants avec leurs squelettes et leurs- Envoyez, dans cet ordre (chaque outil saute ce qu’il a déjà envoyé ; les résultats sont écrits dans
blender/uploaded.jsonetassets/audio_uploaded.json) :
clips d’animation, les accessoires, les badges, portraits, glyphes et tuiles de l’interface, les planches d’effets) et la synthèse audio (chaque son et chaque morceau de musique, masterisé sur une cible de volume). --list montre les étapes, --only, --group et --from en lancent certaines, et les secondes de chaque étape vont dans build/make_art.json. Mesuré une fois, le 2026-10-09, depuis le paquet décompressé sur le PC de bureau Windows 10 du développeur (Blender 5.2, priorité inférieure à la normale, la machine occupée à autre chose, donc une machine au repos peut aller plus vite) : 46 étapes en 7 298 s (2 h 02 min). C’était le paquet de sept combattants et de quatre arènes ; la chaîne compte 54 étapes aujourd’hui, et les huit ajoutées depuis (le kit, la vue lointaine, le ciel et la vue lointaine du ciel du Marché de Nuit, et les modèles et clips de la Houlière et du Gréeur) sont chronométrées au paragraphe suivant. Les plus longues sont la vue lointaine du Quai (649 s), les clips d’animation du Goéland et du Carapacier (567 s et 557 s), ceux du Débardeur, de la Ramendeuse, du Gardien et du Scaphandrier (361 à 415 s chacun), le kit du Quai (360 s) ; les clips d’animation des sept combattants prennent ensemble 3 018 s (50 min), le téléchargement des textures 160 s, l’audio 92 s. Le dossier décompressé pèse 2,0 Go ensuite (blender/ 920 Mo, build/ 800 Mo avec les textures téléchargées, audio/out 115 Mo). Sur ce lancement, il a fabriqué 105 maillages FBX, 1 204 PNG sous blender/ et 409 fichiers audio ; le lancement complet à neuf combattants depuis un paquet vierge N’A PAS ÉTÉ MESURÉ (son dossier est plus gros). Une étape qui échoue arrête le lancement et dit laquelle : relancez avec --from <étape> une fois la cause corrigée. Les huit étapes ajoutées depuis, chronométrées le 2026-10-13 (la copie de travail du développeur, pas le paquet décompressé ; Blender 5.2, priorité inférieure à la normale, lancées quand aucune application plein écran n’était devant, la machine peut-être occupée à autre chose ensuite) : le kit du Marché de Nuit 772 s, sa vue lointaine 313 s, son ciel 50 s, la vue lointaine de son ciel 29 s, le modèle de la Houlière 244 s et ses clips 106 s, le modèle du Gréeur 219 s et ses clips 115 s : 1 847 s (30 min 47 s) ensemble. Ajouté au lancement précédent, cela fait 9 145 s (2 h 32 min), mais c’est une somme de deux lancements sur deux jours, pas un lancement mesuré d’un seul tenant du paquet à neuf combattants. Ce lancement a aussi servi à vérifier que les scripts reproduisent l’art du développeur : les tables de clips des deux nouveaux combattants sont sorties identiques à celles qui sont commitées une fois passées par StyLua, et le manifeste est sorti identique à un nombre près (la hauteur du centre de la pagode dans MarketPagoda : 121,0295 contre 115,3609 en version commitée ; la cause n’a pas été trouvée), donc un modèle que vous construisez peut différer légèrement de celui du jeu en ligne ; les aperçus PNG que le lancement écrit ne sont pas identiques octet pour octet à ceux qui sont commités (ils n’ont pas été comparés à l’œil).
uv run python tools/upload_assets.py --manifest blender/manifest_textures.json
uv run python tools/upload_assets.py --manifest blender/manifest_kit_textures.json
uv run python tools/upload_assets.py --manifest blender/manifest_fighter_textures.json
uv run python tools/upload_assets.py
uv run python tools/upload_assets.py --manifest blender/manifest_sky.json
uv run python tools/upload_assets.py --manifest blender/manifest_hud.json
uv run python tools/upload_assets.py --manifest blender/manifest_fx.json
uv run python tools/upload_audio.py --report
Les outils d’images et de modèles envoient les fichiers un par un ; Roblox modère chaque envoi (« Reviewing », puis « Approved » : uv run python tools/upload_assets.py --status les compte par état). L’outil audio envoie au plus 30 sons par lancement (--batch N le change) ; envoyez un lot, lisez uv run python tools/upload_audio.py --status, puis le suivant, et n’envoyez jamais un son que assets/audio_flagged.json met de côté. NON MESURÉ : la durée des envois.
uv run python tools/make_materials.py --variantsécrit vos variantes de matériaux (assets/materials/) à partir des identifiants de textures, en remplaçant celles, vides, du paquet.uv run python tools/gen_asset_meta.pyécrit vos identifiants dans les tables de données (src/shared/Data/AssetMeta.luau,HudImages.luau,FxImages.luau,Skies.luau,Sounds.luau,Layouts.luau). Lancez-le après chaque lot d’envois : un nom qui n’a pas encore d’identifiant
reste hors de la table, et le jeu le dessine comme la forme simple ou comme rien.
6. Construire les modèles dans Studio
Les modèles s’assemblent dans Studio à partir de vos maillages envoyés, aux tailles que consignent les manifestes (l’échelle d’import FBX n’est pas fiable).
bash tools/build_place.sh, puis ouvrezSmackwater.rbxldans Roblox Studio (File, Open from File).- Dans la barre de commande, lancez
require(game.ServerStorage.Tools.AssetBuilder).build()(tous les modèles), puis, un par un,require(game.ServerStorage.Tools.AssetBuilder).buildLayout("Wharf"),"WharfVista","Barge","BargeVista", - Clic droit sur le dossier
Assets, « Save to File... », et enregistrez par-dessusassets/Assets.rbxm. Reconstruisez la place (bash tools/build_place.sh) : les combattants, les arènes et les accessoires sont dessinés.
"Rock", "RockVista", "Ferry", "FerryVista", "Market" et "MarketVista" (les dix décors des cinq arènes, à partir des kits). Les modèles apparaissent dans ReplicatedStorage.Assets.
NON MESURÉ : cette étape n’a été lancée que par le développeur, au moyen de l’automatisation de son studio, jamais depuis le paquet vierge.
7. Produits et passes (facultatif)
La boutique ne vend que des cosmétiques (neuf costumes, un pack garde-robe, le pack Mécène du port et la passe de saison). Ses passes sont à vous de les créer : uv run python tools/publish.py scopes dit ce que votre clé peut faire, uv run python tools/publish.py offers plan liste les dix offres avec leurs prix, et uv run python tools/publish.py offers create --target public crée les passes qui manquent à votre expérience et écrit leurs identifiants dans src/shared/Data/OfferIds.luau. Un jeu sans passe dans son expérience n’affiche pas de boutique et fonctionne sans.
8. Publier
Créez l’expérience dans le Creator Hub, mettez ses identifiants dans project.json, ouvrez Smackwater.rbxl dans Studio et publiez-la avec File, Publish to Roblox (l’API de publication de place ne met pas à jour une SurfaceAppearance, que les combattants et les arènes utilisent : une publication depuis Studio est donc la voie). Studio fabrique les packs de textures quand il publie. tools/publish.py est l’outil de livraison propre au développeur (une branche git poussée, une expérience de test, un test de fumée, un retour arrière) ; vous n’en avez pas besoin. Le questionnaire d’âge et la première publication publique sont des étapes du Creator Hub que seule une personne peut faire.
9. Régler l’équilibre
Les nombres dont un combat est fait sont dans des fichiers de données : src/shared/Data/Feel.luau (arrêt sur impact, recul, les tampons de saisie), Juice.luau (le retour visuel et sonore), les Stats.luau et Moves.luau des combattants dans src/shared/Fighters/<Nom>/, et les objets, les arènes et la ligue dans src/shared/Data/. Après une modification, lancez bash tools/check.sh : le contrôle des coups, la table de recul, les matrices des bots et le contrôle par mutations tiennent les règles ensemble, et lune run tools/framedata réécrit les données d’images.
Si une étape échoue
no Open Cloud API key: set ROBLOX_OPEN_CLOUD_KEY or pass --key-file PATH: l’outil n’a trouvé aucune clé. Étape 4.make_art: Blender 5.2 LTS was not found: passez--blender <chemin de blender.exe>ou définissezBLENDER.make_art: <étape> failed after N s: les dernières lignes de l’étape sont affichées ; corrigez la cause, puisuv run python tools/make_art.py --from <étape>repart de là.lock_check: Packages/Foundation differs from foundation ...: un fichier de la bibliothèque embarquée a été modifié. Remettez l’original depuis le paquet.- Un son que l’outil refuse (« flagged ») :
assets/audio_flagged.jsonmet de côté les familles que Roblox a retirées du compte du développeur ; laissez-les de côté. - Tout le reste : dites quelle étape a échoué et collez sa sortie (jamais une clé) dans la conversation de la page de la ressource.