Dans Réutiliser le code, vous avez peut-être remarqué une utilisation fréquente de la méthode game:GetService(). Les services Roblox vous permettent d'accéder aux fonctionnalités intégrées du moteur, comme la vente d'objets en jeu, l'activation du chat, la lecture de sons, l'animation d'objets et la gestion des instances.
En fait, les services sont la première étape dans le modèle fondamental et commun du développement Roblox :
- Obtenir des services.
- Exiger des scripts de module.
- Ajouter des fonctions locales.
- Ajouter les événements qui déclenchent ces fonctions.
Par exemple, vous pourriez vouloir sauvegarder les positions des joueurs dans le monde lorsqu'ils quittent votre jeu :
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SaveManager = require(ReplicatedStorage:WaitForChild("SaveManager"))
-- Fonction locale qui appelle une fonction réutilisable dans le script de module.
local function saveProgress(character)
-- Obtenir la position du personnage du joueur.
local position = character:FindFirstChild("HumanoidRootPart").Position
-- Utiliser la fonction saveData dans le script de module, qui écrit dans le
-- DataStoreService.
SaveManager.saveData(character, position)
end
-- Une autre fonction locale qui appelle saveProgress() lorsque un personnage est retiré
-- du jeu (dans ce cas, lorsque le joueur quitte).
local function onPlayerAdded(player)
player.CharacterRemoving:Connect(saveProgress)
end
-- Appelle onPlayerAdded lorsque un joueur se connecte pour la première fois au jeu.
Players.PlayerAdded:Connect(onPlayerAdded)
Quelques détails clés incluent :
- Parce que vous ne devez récupérer un service qu'une seule fois par script, la convention veut que la variable porte le même nom que le service. Cette convention s'applique également aux scripts de module.
- Vous récupérez des services avec la variable globale game, une référence à la racine du modèle de données.
- Roblox ne garantit pas l'ordre de chargement (et le flux d'instances complique encore ce qui est et n'est pas chargé à un moment donné), donc l'utilisation de Instance:WaitForChild() est une mesure de sécurité importante.
Plutôt que de comparer les bibliothèques standard, les fonctions et variables globales, ou les bibliothèques tierces, une grande partie du développement Roblox consiste à identifier lesquels des nombreux services peuvent vous aider à ajouter les fonctionnalités souhaitées à vos jeux. Dans l'exemple ci-dessus, au lieu d'utiliser une bibliothèque d'I/O standard pour écrire sur le disque, vous utilisez des services cloud pour stocker des données.
Services de conteneur
Les services de conteneur peuvent contenir et influencer d'autres objets. Ces services de conteneur résident à la racine du modèle de données et sont visibles dans la fenêtre Explorer de Studio. Collectivement, ces services de conteneur forment une hiérarchie structurée pour le modèle de données, afin que le moteur Roblox puisse interpréter et rendre correctement votre place. Le tableau suivant inclut quelques services de conteneur courants.
| Service | Description |
|---|---|
| Workspace | Contient tous les objets qui se rendent dans le monde 3D, tels que des pièces et des terrains. |
| Lighting | Contient des objets pour définir des effets d'éclairage universels, tels que Atmosphere et Sky. |
| ReplicatedStorage et ReplicatedFirst | Contiennent du contenu et de la logique qui se répliquent entre le serveur et le client. |
Pour examiner plus en détail le modèle de données, vous pouvez utiliser ces méthodes :
- game:FindService() recherche l'instance du service spécifié.
- game:GetChildren() renvoie un tableau de tous les enfants racines du modèle de données, qui sont les services de conteneur de premier niveau.
- game:GetDescendants() renvoie un tableau de tous les descendants du modèle de données, y compris tous les services de conteneur et leurs enfants.
Pour plus d'informations sur les services de conteneur, voir la documentation sur le modèle de données.
Services de script
Les services de script fournissent des fonctionnalités standard dans le moteur Roblox que vous appelez dans des scripts. Le tableau suivant inclut quelques services de script courants.
| Service | Description |
|---|---|
| TweenService | Utilisé pour interpoler les propriétés numériques d'autres instances d'une valeur de début à une valeur de fin, avec des options pour la direction et le style d'assouplissement, la répétition et le délai. |
| MarketplaceService | Le service responsable des transactions en jeu, comme inciter le joueur à acheter un produit développeur, un abonnement, un pass, Roblox Premium, etc. |
| RunService | Contient des méthodes et des événements pour la gestion du temps frame par frame, ainsi que pour vérifier le contexte (serveur, client, mode Studio) dans lequel le jeu est en cours d'exécution. Utile pour exécuter n'importe quel processus ou mise à jour à chaque frame d'exécution. |
| SoundService | Contrôle divers aspects globaux de la manière dont l'audio joue dans un jeu, comme l'échelle de Doppler et l'audio volumétrique. Peut également contenir des groupes de sons pour contrôler le volume et les propriétés d'effets dynamiques de plusieurs signaux audio à la fois. |
| CollectionService | Gère des groupes (collections) d'instances avec des étiquettes qui se répliquent du serveur au client, vous permettant de plus facilement attribuer et travailler avec des groupes d'instances liées. |
Services cloud
Roblox dispose également de services cloud spéciaux pour gérer des tâches et des processus qui se produisent dans le cloud Roblox. Le tableau suivant inclut quelques services cloud courants.
| Service | Description |
|---|---|
| DataStoreService | Pour stocker des données persistantes entre les sessions. |
| MemoryStoreService | Pour stocker des données fréquentes et éphémères qui changent rapidement. |
| MessagingService | Pour communiquer entre plusieurs serveurs pendant les sessions en direct. |
Les services cloud ont également des API web correspondantes ; elles sont accessibles depuis des scripts ou des outils externes. Pour plus d'informations, voir Open Cloud.