ProduitsDocumentationComment on fabriqueAide
Rejoindre le Discord

Wayfold

Le guide complet

Tout ce qu’il faut pour ouvrir le kit, fabriquer son art et le faire vôtre, lisible en entier avant de dépenser quoi que ce soit.

Sur cette page
  1. 1. Les outils (environ 5 minutes la première fois)
  2. 2. Faites-le vôtre
  3. 3. Jouez tout de suite, sans rien dessiner à partir de l’art
  4. 4. Une clé d’API Open Cloud
  5. 5. Fabriquez l’art et envoyez-le (la longue étape)
  6. 6. Construisez les modèles dans Studio
  7. 7. Produits et passes (facultatif)
  8. 8. Publiez
  9. 9. Régler l’équilibrage
  10. Si une étape échoue

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 (environ 5 minutes la première fois)

  1. Installez Rokit (<https://github.com/rojo-rbx/rokit>), puis dans le dossier : rokit install. Il récupère Rojo, Lune, StyLua, Selene, luau-lsp et uv aux
  2. versions de rokit.toml. Un premier lancement télécharge six programmes : NON MESURÉ.

  3. uv sync crée l’environnement Python dont les outils se servent (.venv) à partir de uv.lock (Python 3.14). Un premier lancement télécharge les paquets : NON MESURÉ.
  4. Vérifiez le paquet sur votre machine : bash tools/check.sh. Il formate, analyse, vérifie les types, lance chaque suite de tests et les simulations d’équilibrage et construit
  5. le place ; il doit finir par GATE GREEN (full). bash tools/check.sh --fast saute les simulations et la construction du place. Les deux sont chronométrés dans l’entrée du CHANGELOG du paquet pour cette version (les chiffres viennent d’un passage de la gate sur une copie marquée de ce paquet même).

2. Faites-le vôtre

Copiez sale/project.template.json en project.json (à la racine du dossier) et modifiez-le : mettez votre identifiant d’utilisateur Roblox dans creatorUserId (le nombre de l’adresse de votre profil), ou celui d’un groupe dans creatorGroupId si l’expérience appartient à un groupe ; les identifiants universe et place viennent à l’étape 8 (le Creator Dashboard les affiche une fois l’expérience créée). keyFile est le chemin du fichier qui contient votre clé d’API Open Cloud (étape 4). Rien d’autre dans le paquet ne nomme un propriétaire.

3. Jouez tout de suite, sans rien dessiner à partir de l’art

bash tools/build_place.sh écrit Wayfold.rbxl (Rojo le construit à partir de src/ et de default.project.json) ; ouvrez-le dans Roblox Studio et appuyez sur Play. La table, les tuiles et les ennemis ne sont pas dessinés ou le sont en formes simples (un identifiant d’asset à 0 ne dessine rien), l’interface de jeu, le tirage des tuiles, les vagues, la charte et les réglages fonctionnent. Une personne doit appuyer sur Play : NON MESURÉ.

4. Une clé d’API Open Cloud

Créez-en une dans le Creator Dashboard (Open Cloud > API Keys) avec les permissions de création d’assets (Assets : read, write) pour votre compte ou votre groupe. Mettez la clé, seule, dans un fichier texte hors du paquet (par exemple ~/.roblox_key), puis réglez la variable d’environnement ROBLOX_OPEN_CLOUD_KEY sur la clé, ou écrivez le chemin de ce fichier dans keyFile de project.json, ou passez --key-file FICHIER à n’importe quel outil d’envoi. Chaque outil prend la clé dans tools/project.py et nulle part ailleurs ; aucun ne l’affiche ni ne la copie.

5. Fabriquez l’art et envoyez-le (la longue étape)

Les modèles et les textures sont fabriqués par des scripts Blender (Blender 5.2 ; les commandes sont blender -b --factory-startup --python blender/scripts/<nom>.py, avec l’exécutable de Blender dans votre chemin ou écrit en entier). Chaque script écrit ses fichiers sous blender/out/ et ses entrées dans blender/manifest.json. Les temps du développeur, mesurés sur sa machine, sont dans la troisième colonne ; les autres sont NON MESURÉS.

ScriptCe qu’il fabriqueTemps
tiles.py, tiles_b.pyles tuiles de terrain (neuf sortes, 18 modèles avec leurs variantes et leurs morceaux de route), cuites dans les atlas TilesA et TilesBtiles.py environ 30 s
keep.pyle donjon et la porte (LandmarksA)NON MESURÉ
room.py, table.pyla pièce et la table sur laquelle repose le plateau, et ses accessoires (RoomA, TableA)NON MESURÉ
enemy.py, beasts.py, warden.pyles neuf ennemis, en trois atlas (WalkersA, BeastsA, WardenA)NON MESURÉ
tower.pyles modèles des dix tours (TowersT1, TowersT2)NON MESURÉ
soldier.pyles soldats du Picket (SoldiersA)NON MESURÉ
hero.pyle héros (HeroesA) : un maillage avec squelette de 23 os, une pose au repos, une marche et une courseenviron 3 minutes
fx.py, flow.py, dust.py, impacts.py, shots.py, shadow.pyles marques, le chevron de la route, la séquence d’images de poussière, les impacts, les tirs, l’ombre d’un ennemi volantde quelques secondes à 1 minute chacun
ui.py, glyphs.pyles atlas d’interface (UiA, UiB, UiC) et les glyphes de manette et de touches (UiG)ui.py environ 1 minute

Ensuite, envoyez, depuis le dossier du paquet : uv run python tools/upload_assets.py --dry-run liste ce qui partirait ; uv run python tools/upload_assets.py envoie chaque asset de blender/manifest.json qui n’a pas encore d’identifiant, et note les identifiants dans blender/uploaded.json sur votre machine. Roblox vérifie chaque envoi : envoyez par groupes d’une quinzaine (--only Nom1,Nom2) et lancez uv run python tools/upload_assets.py --status avant le groupe suivant ; un état qui n’est pas Approved est compté. Un modèle et ses cartes de texture partent ensemble (une nouvelle cuisson peut déplacer les îlots UV : --reupload Nom1,Nom2 les renvoie).

Les sons : uv run python tools/upload_audio.py --all envoie chaque son du jeu depuis assets/audio/ (les noms sont dans assets/audio/names.json), puis uv run python tools/upload_audio.py --status jusqu’à ce qu’aucun ne soit en attente. Pour les refabriquer, tools/synth_sounds.py, tools/synth_foley.py et tools/synth_music.py écrivent les fichiers (de quelques secondes à 10 s chacun, mesuré).

Pour finir, uv run python tools/setup_ids.py écrit chaque identifiant dans src/shared/Data/Ids.luau (le seul fichier qui nomme vos assets) et uv run python tools/gen_asset_meta.py écrit src/shared/Data/AssetMeta.luau. La durée de toute l’étape 5 dépend de la file de modération de Roblox et de votre connexion : NON MESURÉ.

6. Construisez les modèles dans Studio

Les modèles envoyés deviennent le ReplicatedStorage.Assets du place : ouvrez le place de l’étape 3 dans Studio et lancez dans la barre de commande require(game.ServerStorage.Tools.AssetBuilder).build() (il charge chaque modèle, rend à chaque pièce sa taille et sa place d’après le manifeste et habille une pièce cuite des cartes de son atlas). Enregistrez ensuite ReplicatedStorage.Assets sous assets/Assets.rbxm (clic droit > Save to File) et reconstruisez le place avec bash tools/build_place.sh. Le développeur fait cette étape avec une automatisation que le paquet ne contient pas ; à la main, elle est NON MESURÉE. tests/packs vérifie que les apparences de surface d’un modèle construit ont leurs paquets de textures ; si vous construisez les modèles vous-même, lancez la gate après l’étape pour voir ce qu’elle dit.

7. Produits et passes (facultatif)

Le jeu ne vend rien. Quand vous créez un produit de développeur ou un passe de jeu pour votre expérience, écrivez son identifiant dans Ids.products avec tools/setup_ids.py (ou à la main dans Ids.luau) et lisez-le avec Ids.product("nom") ; un identifiant à 0 cache l’article.

8. Publiez

Créez l’expérience dans le Creator Dashboard, écrivez ses identifiants universe et place dans project.json, et choisissez le nombre maximal de joueurs du place dans les paramètres du jeu de Studio si vous en voulez moins (chaque joueur qui arrive a sa propre table et sa propre partie, un serveur contient donc autant de parties qu’il a de joueurs ; un groupe de 4 au plus se forme sur invitation, et la façon dont un serveur Roblox se comporte avec 50 parties à la fois est NON MESURÉE). Publiez depuis Studio, ou avec uv run python tools/publish.py (il demande la même clé Open Cloud et la permission d’enregistrer une version du place ; lisez d’abord le texte de l’outil).

9. Régler l’équilibrage

Chaque nombre de réglage du jeu est dans src/shared/Data/Balance.luau ; CONFIG.md dit ce que signifie chaque bloc et quel autre fichier contient quoi. Après une modification, bash tools/check.sh --fast, et lune run tests/sim_bands joue les vraies règles à partir de graines fixes pour montrer si le bot expert gagne toujours dans les bandes que le développeur a choisies.

Si une étape échoue

  • La gate échoue sur un paquet neuf : lisez la première ligne rouge ; chaque suite affiche son propre nom. Une gate verte sur la copie marquée de ce paquet chez le développeur
  • et rouge chez vous est un bogue du paquet : dites-le au vendeur, avec la ligne.

  • Un envoi est refusé ou reste en attente : la modération ou les permissions de Roblox. --status affiche l’état de chacun ; un asset refusé est refait avec son
  • script et renvoyé avec --reupload NOM.

  • no Open Cloud API key ou no creator : étapes 2 et 4.
  • Le jeu se joue mais rien n’est dessiné : les identifiants sont toujours à 0. L’étape 5 se termine par tools/setup_ids.py.