# Le modèle de projet : s’y retrouver

> Canal public — documentation de l’application 3.6.3. Respecter les mentions de disponibilité propres à chaque service.

Source : [Le modèle de projet : s’y retrouver](/application/studio/modele-de-projet/)

Chaque nouveau projet part de ce modèle. Le code qu’il contient devient le tien.

Quand tu crées un projet, VibeStarter télécharge un modèle prêt à l’emploi : une base de jeu Roblox déjà structurée, avec les sauvegardes des joueurs, les notifications et une console d’administration. Cette page décrit ce que tu y trouves, où chaque chose atterrit dans Roblox, et ce qu’il ne faut pas toucher.

## La carte : quel dossier arrive où

| Dans ton projet | Dans Roblox | Ce qu’on y met |
| --- | --- | --- |
| `src/shared/` | `ReplicatedStorage.Common` | ce qui sert au serveur **et** au client |
| `src/server/` | `ServerScriptService.TS` | la logique de jeu, invisible pour les joueurs |
| `src/client/` | `StarterPlayerScripts.TS` | l’interface et tout ce qui tourne chez le joueur |
| `src/first/` | `ReplicatedFirst.TS` | ce qui doit s’exécuter avant tout le reste |
| `Packages/` | `ReplicatedStorage.Packages` | les bibliothèques Roblox utilisées par le jeu |
| `include/` | `ReplicatedStorage.rbxts_include` | le support nécessaire au code traduit |

Carte de correspondance : src/shared vers ReplicatedStorage.Common, src/server vers ServerScriptService.TS, src/client vers StarterPlayerScripts.TS, src/first vers ReplicatedFirst.TS, Packages vers ReplicatedStorage.Packages, include vers ReplicatedStorage.rbxts\_include. — Ton projet — Dans Roblox — src/shared/ — ReplicatedStorage.Common — src/server/ — ServerScriptService.TS — src/client/ — StarterPlayerScripts.TS — src/first/ — ReplicatedFirst.TS — Packages/ — ReplicatedStorage.Packages — include/ — ReplicatedStorage.rbxts\_include

La correspondance entre les dossiers de ton projet et les emplacements de Roblox. Les quatre premiers passent par la compilation ; les deux derniers sont fournis tels quels.

Tout le reste de ta place — la map, l’éclairage, les modèles que tu poses dans Studio — ne vient pas du projet et n’est pas touché par la synchronisation. Voir [La synchronisation, expliquée](/application/studio/synchronisation/).

Deux dossiers, un seul t’appartient

Tu écris dans `src/`. La compilation en produit une traduction dans `out/`, et c’est `out/` qui arrive dans Studio. Ne modifie jamais `out/` : il est réécrit à chaque compilation.

## Où écrire quoi

Un fichier placé dans `src/server/services/` est chargé automatiquement côté serveur ; un fichier placé dans `src/client/controllers/` est chargé automatiquement côté client. Il n’y a rien à déclarer ni à enregistrer : créer le fichier suffit. Tes agents connaissent cette convention et la suivent.

## Ce que le modèle livre déjà

-   **Les sauvegardes des joueurs.** Un profil par joueur, avec de quoi démarrer : une monnaie, les volumes de musique et d’effets, la date de première et de dernière connexion, l’étape de tutoriel atteinte.
-   **La réplication serveur vers client**, avec le nettoyage à la déconnexion.
-   **Les notifications** : des messages passagers (cinq au plus à l’écran, quelques secondes chacun) et des bannières globales (trois au plus), pour prévenir un joueur, tous les joueurs, ou tous sauf un.
-   **Une console d’administration**, ouverte par la touche F2, avec historique et complétion. Taper `adminpanel` ou `ap` ouvre un panneau visuel. Commandes livrées : tuer un joueur, le téléporter, changer sa vitesse, l’expulser, afficher l’aide, envoyer un message à un joueur ou à tous, réinitialiser ou inspecter ses données.
-   **La liste des administrateurs**, écrite à la création du projet avec ton identifiant Roblox quand ton compte Roblox est déjà lié. Toute personne présente dans Studio et le créateur du jeu sont administrateurs de fait.
-   **Une base d’interface** : un thème central (couleurs, espacements, typographie), une mise à l’échelle calculée depuis un écran de référence et qui se rebranche quand la caméra change, des animations indépendantes du nombre d’images par seconde, la lecture de sons et le formatage des nombres.
-   **Un sac à dos** et une barre supérieure prêts à l’usage.
-   **Un squelette de tutoriel** : un calque, des surbrillances, des faisceaux dans la scène et la mémorisation de l’étape.

Le numéro de version des sauvegardes

Les sauvegardes sont rangées sous une clé versionnée, et séparées entre Studio et la production. Changer ce numéro **repart de zéro** : tous les profils des joueurs deviennent vides. C’est utile pendant le développement, jamais après la publication.

## Ce que le modèle ne livre pas

À dire franchement, pour éviter la déception : il n’y a **pas** de classement (leaderboard), pas de boutique, pas de bibliothèque de composants d’interface réutilisables, pas de parcours de tutoriel prêt à jouer, pas de monnaie à gagner, pas de tests. Le squelette de tutoriel est un socle : aucun parcours n’est livré, et il n’est branché nulle part.

C’est une base de jeu, pas un jeu. Ce qui manque, c’est ce que tes agents construisent avec toi.

## Les fichiers à ne pas modifier

Trois fichiers sont **rendus non modifiables** dans ton projet, parce qu’une seule mauvaise modification y casse à la fois la compilation et la synchronisation avec Studio :

| Fichier | Ce qu’il fait |
| --- | --- |
| `default.project.json` | le plan qui dit quel dossier arrive à quel endroit dans Roblox |
| `tsconfig.json` | les règles de la compilation |
| `scripts/dev.mjs` | le démarrage du compilateur |

D’autres fichiers appartiennent à l’app et sont remis à jour à chaque ouverture du projet, dont le `README.md` du modèle. Deux fichiers sont **fusionnés** plutôt que remplacés : tes lignes personnelles dans `.gitignore` sont conservées, et dans `package.json` seules les entrées de démarrage sont réconciliées.

Tout le reste — à commencer par `src/` — est écrit une fois à la création du projet et **plus jamais retouché** : ce code est le tien.

Ne supprime pas le fichier d’identité du projet

Le fichier `vibestarter.json`, à la racine, porte l’identité de ton projet. C’est lui qui permet à une fenêtre Studio de retrouver son projet toute seule. Voir [Lier une place à ton projet](/application/studio/lier-une-place/).

## Où vont images, modèles et sons

Le Cloud sauvegarde et partage **le code**. Les images, modèles 3D et sons vivent sur Roblox une fois publiés : ton jeu les appelle par leur identifiant. Les stocker en double dans l’historique du projet l’alourdit jusqu’à gêner la synchronisation — c’est pourquoi ils en sont exclus par défaut. Le plan du projet ne monte de toute façon que le code traduit et les bibliothèques.

Voir [Où vont tes assets](/application/assets/ou-vont-tes-assets/).

## Limites

-   Le compilateur tourne déjà, lancé par l’app. Ne le démarre pas une seconde fois : il refusera et te dira qu’un compilateur est déjà en cours.
-   `out/` est réécrit en permanence : toute modification y est perdue.
-   Le modèle évolue avec l’app, mais seulement pour les fichiers qui lui appartiennent. Ton code ne bouge pas.

## Questions fréquentes

**Puis-je renommer ou déplacer les dossiers de `src/` ?** Non. Le plan du projet les attend à ces emplacements, et il n’est pas modifiable.

**Pourquoi mon code est-il en TypeScript et pas en Luau ?** Parce que c’est la langue du modèle : tu écris du TypeScript, un compilateur le traduit en Luau, et c’est cette traduction que Studio reçoit.

**Je veux ajouter une bibliothèque Roblox, c’est possible ?** Oui : demande-le à un agent, il l’ajoute aux dépendances du projet. Elle apparaîtra ensuite dans `ReplicatedStorage.Packages`.

**Comment devenir administrateur dans mon propre jeu ?** Ton identifiant Roblox y est déjà si ton compte Roblox était lié au moment de la création du projet. Dans Studio, tu es administrateur de toute façon.

## Pour aller plus loin

-   [La synchronisation, expliquée](/application/studio/synchronisation/)
-   [Lier une place à ton projet](/application/studio/lier-une-place/)
-   [Où vit ton projet](/application/projet/)
-   [Où vont tes assets](/application/assets/ou-vont-tes-assets/)
-   [Glossaire](/decouvrir/glossaire/)
