Enregistrement des données

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

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.

  1. Assurez-vous que votre jeu est publié (Fichier > Publier sur Roblox) pour activer l'accès Studio.

  2. De l'Accueil onglet, ouvrez la Fenêtre paramètres du jeu.

  3. Dans la section Sécurité, activez Activer l'accès Studio aux services API.

  4. 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.

  1. Créer un nouveau Script dans ServerScriptService appelé GoldManager .

  2. 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")
  3. 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 :

  1. 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ées
    local playerUserID = 505306092
    local playerGold = 250
  2. Pour 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ées
    local playerUserID = 505306092
    local playerGold = 250
    -- Définir la clé de la boutique de données
    local setSuccess, errorMessage = pcall(function()
    goldStore:SetAsync(playerUserID, playerGold)
    end)
    if not setSuccess then
    warn(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

  1. 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 then
    warn(errorMessage)
    end
    -- Lire la clé du magasin de données
    local getSuccess, currentGold = pcall(function()
    return goldStore:GetAsync(playerUserID)
    end)
    if getSuccess then
    print(currentGold)
    end
  2. Pour 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.

Edit in Studio option from the experience's main page