Les jeux ont souvent besoin de stocker une certaine quantité de données persistantes entre les sessions comme le niveau d'un joueur, les points d'expérience, les articles d'inventaire, l'or/l'argent et plus encore.
Ce tutoriel vous montrera comment créer un stock de données de base , enregistrer des données d'échantillons et lire les données dans une session de jeu.
Activer l'accès Studio
Par défaut, les jeux testés dans Studio ne peuvent pas accéder aux magasins de données, vous devez donc les activer d'abord.
Assurez-vous que votre jeu est publié (Fichier > Publier sur Roblox) pour activer l'accès Studio.
De l'Accueil onglet, ouvrez la Fenêtre paramètres du jeu.
Dans la section Sécurité, activez Activer l'accès Studio aux services API.
Cliquez sur Enregistrer pour enregistrer vos modifications.
Créer un magasin de données
Les magasins de données sont identifiés par un nom unique. Dans cet exemple, un magasin de données nommé Joueur d'or enregistrera le code de chaque joueur dans un stockage persistant.
Créer un nouveau Script dans ServerScriptService appelé GoldManager .
Les magasins de données sont gérés par DataStoreService, alors obtenez le service sur la première ligne.
local DataStoreService = game:GetService("DataStoreService")Appeler DataStoreService:GetDataStore() avec le script "PlayerGold". Cela accèlerera l'accès au PlayerGold données si elles existent déjà, ou les créer autrement.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")
Enregistrement des données
Un magasin de données est en fait un dictionnaire, comme une table Lua. Chaque valeur dans le magasin de données est indexée par une clé unique, par exemple la clé unique Class.Player.UserId|userId ou simplement une chaîne de nom pour une publicité de jeu.
Exemple de données du joueur
Clé | Valeur |
---|---|
31250608 | 50 |
351675979 | 20 |
505306092 | 78 000 |
Exemples de promo
Clé | Valeur |
---|---|
Événement spécial actif | Fête d'été 2 |
Code promo actif | BONUS123 |
Peut accéder à PartyPlace | vrai |
Pour enregistrer les données du joueur dans la boutique de données :
Créez une variable nommée playerUserID pour le clé de la boutique de données. Ensuite, utilisez playerGold pour stocker le montant d'or de départ d'un joueur.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")-- Clé et valeur de stockage des donnéeslocal playerUserID = 505306092local playerGold = 250Pour enregistrer les données dans le PlayerGold boutiquede données, appelez SetAsync dans un appel protégé, en passant les variables clé et valeur précédemment créées.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")-- Clé et valeur de stockage des donnéeslocal playerUserID = 505306092local playerGold = 250-- Définir la clé de la boutique de donnéeslocal setSuccess, errorMessage = pcall(function()goldStore:SetAsync(playerUserID, playerGold)end)if not setSuccess thenwarn(errorMessage)end
Les fonctions comme SetAsync() sont des appels réseau qui peuvent échouer occasionnellement. Comme indiqué ci-dessus, pcall() est utilisé pour détecter et gérer quand de tels événements se survernir.
Dans sa forme la plus basique, pcall() accepte une fonction et renvoie deux valeurs :
- Le statut ( boolean); ceci sera vrai si la fonction s'exécute sans erreurs, ou fausse sinon.
- La valeur de retour de la fonction ou d'un message d'erreur.
Dans l'exemple ci-dessus, le statut ( setSuccess ) est testé sur la ligne 12 et, si SetAsync() a échoué pour n'importe quelle raison, errorMessage est affiché dans la fenêtre sortie.
Lire les données
Pour lire les données d'un stock de données, appelez GetAsync() avec le nom de clé souhaité.
local setSuccess, errorMessage = pcall(function()goldStore:SetAsync(playerUserID, playerGold)end)if not setSuccess thenwarn(errorMessage)end-- Lire la clé du magasin de donnéeslocal getSuccess, currentGold = pcall(function()return goldStore:GetAsync(playerUserID)end)if getSuccess thenprint(currentGold)endPour tester le script, cliquez sur Exécuter et remarquez la valeur currentGold imprimée dans la fenêtre de sortie . Notez que cela peut prendre quelques secondes, car les fonctions doivent se connecter aux serveurs de stockage de données.
Projet d'échantillon
Maintenant que vous comprenez l'utilisation de base des magasins de données, testez-le dans un jeu de test.
Gold Rush Récupérez autant de morceaux d'or que vous le pouvez pour établir un record personnel qui persiste entre les sessions de jeu.
Vous pouvez également modifier le jeu dans Studio et explorer le script GoldManager amélioré qui inclut l'enregistrement automatique des données et plus encore.