Chaque lieu est représenté par un modèle de données, une hiérarchie d'objets qui décrit tout ce qui concerne le lieu. Le modèle de données contient tous les objets qui composent le monde 3D, tels que les parties, le terrain, l'éclairage et d'autres éléments environnementaux. Il contient également des objets qui peuvent contrôler le comportement d'exécution, tels que des scripts qui modifient des propriétés, appellent des méthodes et des fonctions, et répondent à des événements qui permettent un comportement dynamique et une interactivité.
Le moteur Roblox utilise le modèle de données comme source de vérité pour l'état d'un lieu, afin de pouvoir le simuler et le rendre sur les appareils clients. Pour plus d'informations sur la façon dont le moteur Roblox interprète le modèle de données, voir Exécution Client-Serveur.
Objets
Vous placez et organisez des objets dans le modèle de données pour décrire un lieu dans Roblox. Chaque objet dans Roblox hérite de la classe Instance, qui définit des propriétés, méthodes et événements génériques qui sont communs à tous les objets. Les objets définissent également leurs propres caractéristiques en fonction de la fonctionnalité que l'objet fournit. Il existe de nombreuses catégories d'objets avec une grande variété d'utilisations, mais vous travaillerez souvent avec des objets BasePart et LuaSourceContainer, communément appelés parties et scripts.
Pour une liste complète de toutes les fonctionnalités du moteur Roblox, voir la documentation de référence.
Blocs de construction 3D
BasePart est la classe principale pour les blocs de construction 3D simulés physiquement dans le monde. Elle définit les propriétés et méthodes communes à tous les objets physiques avec des propriétés telles que la position, la taille et l'orientation.
| Objet | Description |
|---|---|
| Part | Une primitive partie qui peut prendre la forme d'un bloc, d'une balle, d'un cylindre, d'une wedge ou d'une wedge angulaire. |
| MeshPart | Un maillage importé de logiciels de modélisation 3D tels que Maya ou Blender. |
| TrussPart | Une poutre à treillis que les personnages peuvent gravir comme une échelle. |
Bien que vous puissiez théoriquement créer un jeu Roblox pleinement fonctionnel en utilisant simplement des parties simples, vous allez très probablement importer des maillages et combiner des parties primitives en objets et structures plus complexes grâce à la modélisation solide.
Scripts
Vous pouvez ajouter de l'interactivité et du comportement au monde 3D de votre lieu et définir la logique avec des scripts. Vous écrivez des scripts dans le langage de programmation Luau pour faire des choses comme déplacer des parties, appeler d'autres scripts et répondre à des événements. Comme Roblox fonctionne sur un modèle client-serveur, vous pouvez exécuter des scripts sur le serveur, le client, ou les faire communiquer à travers la frontière du réseau.
- Un objet Script représente un script qui ne peut s'exécuter que sur le serveur.
- Un objet LocalScript représente un script qui ne peut s'exécuter que sur le client.
- Un objet ModuleScript représente un script réutilisable que vous pouvez require() à partir des scripts serveur et client.
Pour que les scripts se comportent correctement, vous devez les placer dans les conteneurs appropriés dans le modèle de données. Pour plus d'informations, voir les sections Serveur et Client.
Organisation des objets
Bien que vous ayez beaucoup de flexibilité dans la façon dont vous organisez votre modèle de données, le moteur Roblox s'attend à ce que certains objets soient dans certains services de conteneurs, qui sont des objets ayant des comportements spécifiques et pouvant affecter les comportements des objets qu'ils contiennent. Les principales catégories de services de conteneurs comprennent :
- Workspace — Workspace stocke tous les objets qui se rendent dans le monde 3D.
- Environnement — Conteneurs comme Lighting et SoundService qui contiennent des objets pour les paramètres et éléments environnementaux.
- Réplication — Conteneurs pour le contenu et la logique qui se répliquent entre le serveur et le client, tels que ReplicatedStorage et ReplicatedFirst.
- Serveur — Conteneurs pour le contenu et la logique uniquement côté serveur, tels que ServerScriptService et ServerStorage.
- Client — Conteneurs pour le contenu et la logique côté client, tels que StarterPlayer et StarterGui.
- Chat — Conteneurs pour des objets qui activent des fonctionnalités de chat, tels que VoiceChatService et TextChatService.
De plus, vous pouvez organiser davantage vos objets avec les objets suivants :
- Dossiers — Un Folder est utilisé à des fins d'organisation et ne définit aucun comportement. Par exemple, vous pouvez utiliser des dossiers pour regrouper des objets similaires comme un ensemble de scripts dans le stockage serveur.
- Modèles — Un Model est principalement destiné à des groupements géométriques de parties, comme regrouper un ensemble de bureau comprenant une chaise, une table et une lampe. Pour organiser des ensembles plus complexes, vous pouvez même imbriquer des modèles dans des modèles.
Workspace
Workspace contient tous les objets qui composent le monde 3D d'un lieu. Vous pouvez ajouter des objets à l'espace de travail pour personnaliser votre monde 3D, tels que des parties de base, des parties de maillage et des modèles. Les clients rendent tout ce qui apparaît dans ce conteneur et rien en dehors, vous pouvez donc contrôler ce que les utilisateurs voient et avec quoi ils interagissent dans votre lieu. Bien que non réellement rendus, vous pouvez également ajouter des scripts qui sont parentés aux parties et modèles auxquels ils sont associés. Par défaut, l'espace de travail est pré-rempli avec un objet Terrain et Camera.
Caméra
Camera détermine comment le client voit le monde 3D. Par défaut, il y a une caméra dans l'espace de travail, mais vous pouvez ajouter plusieurs objets caméra pour créer différentes perspectives et vues. Chaque client prend ces paramètres et crée sa propre vue de la caméra que le serveur ne peut pas modifier directement.
Par exemple, vous pouvez régler une caméra pour suivre les mouvements de l'utilisateur ou rester fixe à un endroit particulier. Vous pouvez également ajuster le champ de vision, la distance et l'angle pour créer différents effets visuels sur la façon dont les utilisateurs voient votre monde 3D.
Pour plus d'informations, voir personnaliser la caméra.
Terrain
Terrain vous permet de créer des paysages pour votre lieu. Vous pouvez appliquer un matériau au terrain pour simuler des environnements naturels souhaités, tels que l'herbe, l'eau, le sable ou un matériau personnalisé. Bien que vous ne puissiez avoir qu'un seul objet de terrain pour votre monde 3D et appliquer un seul matériau à ce terrain, vous pouvez utiliser l'Éditeur de Terrain pour modifier des régions de votre terrain.
Pour plus d'informations, voir terrain environnemental.
Environnement
Un éclairage personnalisé peut rendre votre monde 3D beaucoup plus immersif et réaliste. Le service Lighting contient des objets qui contrôlent les paramètres d'éclairage globaux de votre lieu, tels que Atmosphere pour simuler des effets atmosphériques ou Sky pour modifier le soleil, la lune et les étoiles dans vos environnements. De plus, vous pouvez utiliser des sources lumineuses pour émettre de la lumière à partir d'objets spécifiques.
Ajouter de l'audio à vos jeux est également crucial pour élever vos jeux à de nouveaux sommets. En utilisant stratégiquement l'audio positionnel et non positionnel, vous pouvez immerger les joueurs dans vos mondes, leur fournir un retour d'information utile pour leurs actions et diriger leur attention vers ce qu'ils doivent faire pour réussir dans leurs objectifs.
Réplication
Réplication est le processus par lequel le serveur synchronise l'état de votre lieu avec tous les clients connectés. Le moteur Roblox réplique intelligemment et automatiquement les données, la physique et les messages de chat entre le serveur et le client pour de nombreux cas, mais vous pouvez également spécifier certains objets à répliquer en les plaçant dans des conteneurs spécifiques.
ReplicatedFirst
ReplicatedFirst contient des objets que vous souhaitez répliquer à un client lorsqu'il rejoint votre lieu. Il contient généralement des objets essentiels pour initialiser un joueur, tels que des objets LocalScript côté client et les objets associés aux scripts. Tout le contenu de ce conteneur est répliqué du serveur au client une seule fois.
ReplicatedStorage
ReplicatedStorage contient des objets qui sont disponibles à la fois pour le serveur et les clients connectés. Les modifications qui se produisent sur le client persistent mais ne seront pas répliquées vers le serveur. Le serveur peut écraser les modifications du client pour maintenir la cohérence. Ce conteneur est généralement utilisé pour les objets ModuleScript qui doivent être partagés et accessibles par les objets Script (côté serveur) et LocalScript (côté client). De plus, vous pouvez utiliser ce conteneur pour répliquer des objets qui n'ont pas besoin d'exister dans le monde 3D jusqu'à ce qu'ils soient nécessaires, comme un ParticleEmitter à cloner et à associer à tous les modèles de personnages entrants.
Pour plus d'informations sur le fonctionnement de la réplication, voir exécution client-serveur.
Serveur
Le modèle de données définit des conteneurs dédiés pour des objets uniquement côté serveur qui ne sont jamais répliqués vers le client. Cela permet au serveur d'affecter le comportement et l'état du client sans exposer les objets et la logique du serveur au client.
ServerScriptService
ServerScriptService contient des objets Script, des objets ModuleScript requis par les scripts serveur, et d'autres objets liés au scripting qui sont uniquement destinés à un usage serveur. Si vos scripts nécessitent d'autres objets, non liés au scripting, vous devez les placer dans ServerStorage. Les scripts dans ce conteneur ne sont jamais répliqués aux clients, ce qui vous permet d'avoir une logique sécurisée côté serveur.
ServerStorage
ServerStorage contient des objets qui sont uniquement destinés à un usage serveur. Vous pouvez utiliser ce conteneur pour stocker des objets que vous souhaitez cloner et parenté à l'espace de travail ou à d'autres conteneurs à l'exécution. Par exemple, vous pouvez stocker de grands objets comme des cartes dans ce conteneur jusqu'à ce qu'ils soient nécessaires et les déplacer dans l'espace de travail uniquement lorsqu'ils le sont. Cela vous permet de réduire le trafic réseau du client à l'initialisation.
Client
Les services de conteneurs clients sont destinés aux objets qui sont répliqués à chaque client connecté. Cette catégorie de conteneurs se réplique à chaque client connecté et contient généralement des objets 3D et des objets LocalScript associés. Tous les objets que vous stockez dans ces conteneurs ne sont pas persistants entre les sessions et se réinitialisent chaque fois qu'un client se reconnecte. Vous pouvez placer des objets dans ces conteneurs, tels que des GUIs de joueur, des scripts côté client et d'autres objets qui ne sont pertinents que pour le client.
Lorsqu'un client se connecte à un serveur, le service de conteneurs Players écoute les utilisateurs rejoignant votre lieu et crée un objet Player pour chaque client. Le serveur copie les objets des conteneurs clients dans le modèle de données d'édition vers l'emplacement correspondant dans le modèle de données d'exécution à l'intérieur de l'objet Players. Le tableau suivant décrit le conteneur d'origine dans lequel il réside dans le conteneur et le conteneur résultant dans lequel ils sont copiés sur le client :
| Modèle de données d'édition | Modèle de données d'exécution | Remarques |
|---|---|---|
| StarterPack | Player.Backpack | Scripts qui configurent l'inventaire du joueur et contiennent généralement des objets Tool, mais contiennent souvent aussi des scripts locaux. |
| StarterGui | Player.PlayerGui | Scripts qui peuvent gérer le GUI local du joueur. Lorsque le joueur respawn, le contenu de PlayerGui est vidé. Le serveur copie les objets à l'intérieur de StarterGui dans le PlayerGui. |
| StarterPlayerScripts | Player.PlayerScripts | Scripts à usage général pour le client. Par exemple, si vous souhaitez créer des effets spéciaux sur le client lorsque certaines conditions sont remplies, vous pouvez placer un script local dans ce conteneur pour cela. Le serveur ne peut pas accéder à ce conteneur. |
| StarterCharacterScripts | Player.Character | Scripts qui sont copiés vers le client lorsqu'ils spawn. Ces scripts ne persistent pas lorsque le joueur respawn. |
| ReplicatedFirst | Le contenu de ce conteneur est répliqué à tous les clients (mais pas au serveur) en premier lieu, avant tout le reste. |
Chat
TextChatService
TextChatService représente le service qui gère diverses tâches de chat textuel dans le jeu, telles que la gestion des canaux, la décoration des messages, le filtrage du texte, la création de commandes et le développement d'interfaces de chat personnalisées.
Pour plus d'informations, voir aperçu du chat textuel.
VoiceChatService
VoiceChatService représente la fonctionnalité de chat vocal basée sur la proximité qui simule une communication réaliste en fonction de votre proximité avec d'autres utilisateurs. Vous pouvez utiliser ce service pour activer et désactiver la fonctionnalité.
Pour plus d'informations, voir chat vocal.
Dossiers et modèles
Il existe deux méthodes principales pour regrouper des objets dans le modèle de données : dossiers et modèles. Les deux sont des conteneurs pour des objets, mais ils ont des objectifs différents.
- Dossiers sont mieux adaptés pour stocker des sections d'un environnement, comme le hall ou une arène de combat.
- Modèles sont utilisés pour des ensembles d'objets, comme un ensemble de bureau comprenant une chaise, une table et une lampe. Pour organiser des ensembles plus complexes, imbriquer des modèles dans des modèles.
Vous devriez toujours nommer vos objets de manière descriptive. Cela facilite la recherche et la modification des objets plus tard si nécessaire.

