Data stores are a storage feature for Roblox games. They can be used to save data which should persist between game sessions, including items in a player’s inventory, experience points, or almost anything else. Data stores are shared per game, so any place in a game, including places in different servers, can access and change the same data. Roblox helps power the imaginations of people around the world. As the world's largest social platform for play, over 48 million players come to Roblox every month to create adventures, play games, role play, and learn with friends. Data stores are a storage feature for Roblox games. They can be used to save data which should persist between game sessions, including items in a player’s inventory, experience points, or almost anything else. Data stores are shared per game, so any place in a game, including places in different servers, can access and change the same data.
15 min
Data stores are a storage feature for Roblox games. They can be used to save data which should persist between game sessions, including items in a player’s inventory, experience points, or almost anything else.
This extension allows you to play Roblox game from new tab page. Offered by (54) 600,000+ users. Chrome Web Store Gems of 2020.
It has been reported that on 18th August 1913, in a game of roulette at the Monte Carlo Casino, the ball fell on black 26 times in a row. This anecdote is often mentioned in the context of the gambler's fallacy (see the wiki). I am looking for information about the roulette wheel in use in Monte Carlo in 1913. Monte carlo roulette 1913.
Data stores are shared per game, so any place in a game, including places in different servers, can access and change the same data.
Structure
A data store is essentially a dictionary, like a Lua table. Each value in the data store can be indexed by a unique key which includes the player’s
Player/UserId|UserId
, for instance:Key | Value |
---|---|
Player_1234 | 50 |
Player_2345 | 20 |
Player_7462 | 78000 |
Player_8934 | 1200 |
Player_10345 | 0 |
Data Store Access
Data stores are managed by
DataStoreService
, so your scripts must get the service before doing much else.Once you’ve included
DataStoreService
in your script, a data store can be accessed by name using the DataStoreService/GetDataStore|GetDataStore()
function. For example:Data stores can only be accessed by the server through
Script|Scripts
. Attempting client-side access in a LocalScript
will cause an error.Managing a Data Store
Setting Data
GlobalDataStore/SetAsync|SetAsync()
sets the value of a new data store entry. This function requires the key name of the entry and the value to set.Functions like
GlobalDataStore/SetAsync|SetAsync()
that access a data store's contents are network calls that may occasionally fail. As shown above, it's recommended that these calls be wrapped in pcall()
to catch and handle errors.GlobalDataStore/SetAsync|SetAsync()
can be hazardous since it overwrites any value currently in the entry. If you're updating an existing entry, GlobalDataStore/UpdateAsync|UpdateAsync()
is recommended because it considers the old value before making changes.Reading Data
The
GlobalDataStore/GetAsync|GetAsync()
function reads the value of a data store entry. It requires just the key name of the entry.Roblox Player Download
Incrementing Data
GlobalDataStore/IncrementAsync|IncrementAsync()
changes a numerical value in a data store. This function requires the key name of the entry and a number indicating how much to change the value.Updating Data
GlobalDataStore/UpdateAsync|UpdateAsync()
changes any stored value in a data store. This function requires the key name of the entry plus a function which defines how the entry should be updated. This function takes the current value and returns the new value, based on whatever logic you define.The function passed into
GlobalDataStore/UpdateAsync|UpdateAsync()
is not permitted to yield, so it cannot contain any yielding function like wait()
.Removing Data
GlobalDataStore/RemoveAsync|RemoveAsync()
removes an entry and returns the value that was associated with the key.Ordered Data Stores
Roblox Store Empire Tips
Regular data stores do not sort their content. This isn’t a concern for many games, but sometimes it’s useful to get data in an ordered fashion, like leaderboard stats.
An
OrderedDataStore
is a special type of data store that can:- Easily return its content in a sorted order.
- Return multiple records in one request (versus a regular data store where you can only request one entry at a time).
An ordered data store uses the same functions as a regular data store including
GlobalDataStore/GetAsync|GetAsync()
, GlobalDataStore/SetAsync|SetAsync()
, GlobalDataStore/UpdateAsync|UpdateAsync()
, etc. In addition, it provides the OrderedDataStore/GetSortedAsync|GetSortedAsync()
function which accepts parameters for the “page size” of the returned DataStorePages
object, the sort order, and minimum/maximum values.Consider an ordered data store populated with five characters and their ages. This example sorts the data into pages with 3 entries each, in descending order, then loops through the pages and outputs each character’s name/age.
Limits, Queuing and Handling Errors
Requests to data stores, like all network calls, may occasionally fail due to poor connectivity or other issues. As you’ve seen throughout this article, it’s important to wrap data store commands in
pcall()
and handle any resulting errors. Every data store error message contains an error code that you can cross-reference in the Articles/Datastore Errors|Data Store Errors and Limits
tables.In addition, there are limits applied to the data store model. If a game exceeds these limits, the Roblox engine will automatically throttle the game’s data store usage, causing data requests to take longer. These requests are placed into a queue, which is described further on the
Articles/Datastore Errors
article.Using Data Stores in Studio
By default, places simulated in Studio do not have access to data stores, so any request function like
GlobalDataStore/SetAsync|SetAsync()
or GlobalDataStore/GetAsync|GetAsync()
will cause an error if called from Studio.If desired, data stores can be enabled in Studio as follows:
- From the Home tab, open the Game Settings window.
- In the Options section, turn on Enable Studio Access to API Services.
- Click Save to register your changes.
Accessing data stores in Studio can be dangerous for live games because Studio accesses the same data stores as the client application. To avoid overwriting production data, you should not to enable this setting for live games — instead, enable it for a separate test version of the game.
If you are not editing a place through the Roblox website (for example a local
.rbxl
file), you will need to call DataModel/SetPlaceId|SetPlaceId()
in the Command Bar before an in-Studio game can access a data store.