Types de scripts et emplacements

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.


Pour de nombreux développeurs, le défi fondamental de l'adaptation à la programmation Roblox est l'importance de l'emplacement du fichier et de la propriété Script.RunContext. Selon le type de script, l'emplacement dans l'Explorateur et le contexte d'exécution, les scripts peuvent se comporter de manière très différente. Certains appels de méthode peuvent échouer, des objets dans votre jeu peuvent être inaccessibles, ou les scripts peuvent ne pas s'exécuter du tout.

La raison de cette complexité est que les jeux Roblox sont par défaut multijoueurs. Les scripts doivent avoir la capacité de s'exécuter uniquement sur le serveur, uniquement sur le client, ou d'être partagés entre les deux. L'évolution de la plateforme Roblox au fil du temps a encore compliqué la situation.

Types de scripts

Roblox a trois types de scripts :

  • Script - Code qui s'exécute soit sur le serveur, soit sur le client, en fonction de son emplacement et de la propriété Script.RunContext.
  • LocalScript - Code qui s'exécute uniquement sur le client. N'a pas de contexte d'exécution.
  • ModuleScript - Code que vous pouvez réutiliser dans d'autres scripts. N'a pas de contexte d'exécution.

Lorsque vous créez un Script, son contexte d'exécution par défaut est Legacy, ce qui signifie qu'il a a) un script côté serveur et b) ne s'exécute que s'il se trouve dans un conteneur de serveur, comme Workspace ou ServerScriptService.

  • Si vous changez le contexte d'exécution du script en Server, il peut maintenant également s'exécuter dans ReplicatedStorage, mais ce n'est pas recommandé. Le contenu de cet emplacement est répliqué aux clients, donc c'est un mauvais emplacement pour les scripts côté serveur.
  • Si vous changez le contexte d'exécution du script en Client, il peut s'exécuter dans ReplicatedStorage. Il peut également s'exécuter dans StarterCharacterScripts et StarterPlayerScripts. Les conteneurs de démarrage sont copiés aux clients, donc le script original et la copie s'exécutent, ce qui n'est pas souhaitable.

Pour changer le contexte d'exécution d'un script, sélectionnez-le dans l'Explorateur et changez la valeur dans la fenêtre Propriétés.

Propriété RunContext indiquée pour un Script.

Recommandations

  • Mettez les scripts clients dans ReplicatedStorage avec un RunContext de Client aux côtés de ModuleScripts uniquement pour le client.

    Lors du débogage dans Studio, vous pouvez cliquer sur les lignes dans la fenêtre Sortie et aller à ReplicatedStorage.YourScript (l'emplacement stable du script) plutôt que Players.YourName.PlayerScripts.YourScript (l'emplacement éphémère où le script a été copié au moment de l'exécution).

  • Mettez les scripts serveur dans ServerScriptService avec un RunContext de Server aux côtés de ModuleScripts uniquement pour le serveur.

  • Pour partager du code entre les scripts serveur et client, utilisez ModuleScripts dans ReplicatedStorage.

  • Si vous placez des scripts dans des modèles et des paquets, spécifiez un RunContext pour chaque script afin d'éliminer toute ambiguïté sur la façon dont il s'exécute. La définition explicite de cette propriété rend les modèles et les paquets plus susceptibles de fonctionner correctement depuis divers emplacements.

  • Mettez le minimum de scripts clients (comme un script de chargement) dans ReplicatedFirst avec un RunContext de Client. Pour en savoir plus, consultez Ordre de réplication.

  • Utilisez LocalScripts dans StarterCharacterScripts, StarterPlayerScripts, StarterGui, et StarterPack.

Emplacements des scripts

LocationDescription
WorkspaceReprésente le monde 3D du jeu. Cet emplacement fonctionne bien pour les scripts serveurs qui se connectent directement à des objets et contrôlent leur comportement.
ReplicatedFirstContient des objets qui se répliquent vers le client avant tout autre. Cet emplacement est idéal pour l'ensemble minimum absolu d'objets et de scripts clients nécessaires pour afficher un écran de chargement.
ReplicatedStorageContient des objets qui sont répliqués à la fois vers le client et vers le serveur. Cet emplacement est idéal pour les ModuleScripts que vous souhaitez utiliser à la fois sur le serveur et sur le client. Les LocalScripts ne s'exécutent pas depuis cet emplacement, mais les Scripts avec un RunContext de Client le font.
ServerScriptServiceContient des scripts serveurs. Cet emplacement est idéal pour les scripts qui ont besoin d'accéder à des fonctionnalités ou des objets côté serveur, tels que la logique de jeu et le stockage dans le cloud.
ServerStorageContient des objets côté serveur. Cet emplacement est idéal pour les objets volumineux qui n'ont pas besoin d'être immédiatement répliqués aux clients lorsqu'ils rejoignent un jeu. Les scripts ne s'exécutent pas depuis cet emplacement, mais vous pouvez y stocker des ModuleScripts côté serveur.
StarterPlayerStarterCharacterScriptsContient des LocalScripts qui s'exécutent lorsque le personnage apparaît.
StarterPlayerStarterPlayerScriptsContient des LocalScripts à usage général qui s'exécutent lorsque le joueur rejoint le jeu.
StarterGuiContient des éléments GUI que le client affiche lorsqu'il charge le jeu. Les LocalScripts peuvent s'exécuter depuis cet emplacement. Cet emplacement est idéal pour les scripts qui modifient l'interface utilisateur du jeu, comme l'ajout de boutons, de menus et de pop-ups.
StarterPackContient généralement uniquement des Tools, mais peut également inclure des LocalScripts pour configurer les sacs à dos des joueurs.

Cette image montre quels emplacements de la fenêtre Explorateur peuvent contenir des scripts clients. N'oubliez pas, ReplicatedFirst et ReplicatedStorage peuvent contenir des Scripts avec un RunContext de Client, tandis que les conteneurs Starter[] devraient utiliser LocalScripts.

Diagramme montrant quels emplacements de script s'exécutent sur les clients.

Structure de projet d'exemple

Le projet de référence Plant montre comment vous pourriez organiser votre code dans un grand jeu complexe.

Il est particulièrement à noter comment il stocke la grande majorité de son code sous forme de ModuleScripts réutilisables dans ReplicatedStorage et ServerStorage.

©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.