Class
DataModel
NotCreatable
The root of Roblox's parent-child hierarchy. Its direct children are services,
such as Workspace and Lighting, that act as the fundamental
components of a Roblox game.
The Data Model (commonly known as game
after the global variable used to access it) is the root of Roblox's
parent-child hierarchy. Its direct children are services, such as
Workspace and Lighting, that act as the fundamental components
of a Roblox game.
Properties 17#
CreatorIdint64 | Describes the ID of the user or group that owns the place.ReadSafeReadOnlyNotReplicated |
CreatorTypeCreatorType | Describes the CreatorType of the place, whether the place is owned
by a user or a group.ReadSafeReadOnlyNotReplicated |
GameIdint64 | Describes the ID of the experience that the place running on the server belongs to.ReadSafeReadOnlyNotReplicated |
GearGenreSettingGearGenreSetting | Not functional. Historically described the gear permissions of the place as set on the Roblox website.ReadSafeDeprecatedReadOnlyNotReplicated |
GenreGenre | Not functional. Historically described the Genre of the place as
set on the Roblox website.ReadSafeDeprecatedReadOnlyNotReplicated |
JobIdstring | A unique identifier for the running game server instance.ReadSafeReadOnlyNotReplicated |
lightingInstance | Refers to the game's Lighting service.ReadSafeDeprecatedReadOnlyNotReplicated |
MatchmakingTypeMatchmakingType | Represents how players in the server are handled by matchmaking.ReadSafeReadOnlyNotReplicated |
PlaceIdint64 | Describes the ID of the place running on the server.ReadSafeReadOnlyNotReplicated |
PlaceVersionint | Describes the version of the place the server is running on.ReadSafeReadOnlyNotReplicated |
PrivateServerIdstring | Describes the private server ID of the server, if the server is a private
server or a reserved server.ReadSafeReadOnlyNotReplicated |
PrivateServerOwnerIdint64 | Describes the UserId of the Player that owns
the private server if the server is private.ReadSafeReadOnlyNotReplicated |
RunServiceRunService | A reference to the RunService service.ReadSafeReadOnlyNotReplicated |
VIPServerIdstring | A string that could identify the current server as a private server.ReadSafeDeprecatedHiddenReadOnlyNotReplicated |
VIPServerOwnerIdint64 | The UserId of the account who owns the private
server.ReadSafeDeprecatedHiddenReadOnlyNotReplicated |
WorkspaceWorkspace | A reference to the Workspace service.ReadSafeReadOnlyNotReplicated |
workspaceWorkspace | ReadSafeDeprecatedReadOnlyNotReplicated |
CreatorId: int64#
ReadOnlyNotReplicatedReadSafe
This property describes the ID of the user or group that owns the place.
If the DataModel.CreatorType property is User then CreatorId
will be the Player.UserId of the place's owner. If the
DataModel.CreatorType is Group then CreatorId will be the ID
of the group that owns the place.
CreatorType: CreatorType#
ReadOnlyNotReplicatedReadSafe
This property describes the CreatorType of the place, whether the
place is owned by a user or a group. If User, then the
DataModel.CreatorId property will describe the
UserId of the account that owns the game. If
Group, then it will describe the group ID.
GameId: int64#
ReadOnlyNotReplicatedReadSafe
This property describes the ID of the experience that the place running on the server belongs to.
See Also#
DataModel.PlaceId, which describes the ID of the place running on the serverDataModel.JobId, which is a unique identifier for the server game instance runningTeleportService, which is a service that can be used to transportPlayersbetween games
GearGenreSetting: GearGenreSetting#
ReadOnlyNotReplicatedDeprecatedReadSafeDeprecated
Deprecated. This property is deprecated and is no longer functional. It should not be used.
This property, along with DataModel.Genre, no longer functions
correctly and attempting to read it may throw an error.
Genre: Genre#
ReadOnlyNotReplicatedReadSafeDeprecated
Deprecated. This property is deprecated and is no longer functional. It should not be used.
This property is broken and should not be used.
This property historically described the Genre of the place as set
on the Roblox website.
This property, along with DataModel.GearGenreSetting, no longer
functions correctly due to genres existing on the Roblox website that are
not reflected in the Genre enum. As a result, attempting to read
this property may throw an error.
JobId: string#
ReadOnlyNotReplicatedReadSafe
This property is a unique identifier for the running game server instance. It is a universally unique identifier (UUID), meaning that no two servers, past or present, will ever have the same ID.
Defaults to an empty string in Studio.
See Also#
TeleportService:GetPlayerPlaceInstanceAsync()which can be used to retrieve theDataModel.JobIdof a user's current server.TeleportService:TeleportToPlaceInstance()which can be used to teleport aPlayerto a specific server.DataModel.PrivateServerIddescribes the ID of the private server the game server instance belongs to.HttpService:GenerateGUID(), a function that can be used to generate your own UUIDs.
lighting: Instance#
ReadOnlyNotReplicatedDeprecatedReadSafeDeprecated
Deprecated. This item has been superseded by
game:GetService("Lighting"), which
should be used instead.
This property was once used to get the game's Lighting service.
MatchmakingType: MatchmakingType#
ReadOnlyNotReplicatedReadSafe
This property represents how players in the server are handled by
matchmaking. Players with different
MatchmakingTypes cannot be in or
teleport to the same server.
Note that this property is only valid on the server DataModel and
it will be the MatchmakingType.Default value for all clients, so
only reference this property inside of a server‑side Script.
PlaceId: int64#
ReadOnlyNotReplicatedReadSafe
This property describes the ID of the place running on the server.
If the place has not been published to Roblox, this ID will correspond with the template being used.
See Also#
DataModel.GameId, which describes the ID of the experience that the current place belongs toDataModel.JobId, which is a unique identifier for the server game instance runningTeleportService, which is a service that can be used to transportPlayersbetween places
PlaceVersion: int#
ReadOnlyNotReplicatedReadSafe
This property describes the version of the place the server is running on.
This version number corresponds with the version number shown under the Version History section of the place's settings. It is not the current version of the Roblox client. This property is 0 for all unpublished experiences.
When a server instance is created for a place, it uses the place's current version. If the place is later updated while this server is running, the server will remain at its current version.
This property can be used to display a ScreenGui showing the
current version of the game to Players to assist with
debugging.
PrivateServerId: string#
ReadOnlyNotReplicatedReadSafe
This property describes the private server ID of the server, if the server is a private server.
If the server is not a private server, then this property will be an empty string.
Private servers#
Private servers refer to the following:
- Private servers that users can purchase from the games page
- Reserved servers, private servers created by the developer using
TeleportService:ReserveServerAsync()
PrivateServerId vs JobId#
The PrivateServerId of a server is different from the
DataModel.JobId. The JobId is the unique
identifier of the current server instance.
Private servers (private or reserved servers) can have multiple server
instances associated with them over time. This is because, although only
one server instance can be running at once for a private server, new
server instances can open and close as players join and leave the game.
For example, no server instance is running when nobody is playing in the
server. The PrivateServerId will be consistent across all of these server
instances, and the DataModel.JobId will be unique for each one.
See also:
DataModel.PrivateServerOwnerId, a property describing the owner of a private serverTeleportService:ReserveServerAsync(), a function which creates a reserved server
PrivateServerOwnerId: int64#
ReadOnlyNotReplicatedReadSafe
This property describes the UserId of the
Player that owns the
private server if
the server is private.
If the server is a standard or reserved server then this property will be
set to 0.
This property could be used to identify if a Player is the owner
of the private server, for example:
local Players = game:GetService("Players")
-- is this a private server?
if game.PrivateServerId ~= "" and game.PrivateServerOwnerId ~= 0 then
-- listen for new players being added
Players.PlayerAdded:Connect(function(player)
-- check if the player is the server owner
if player.UserId == game.PrivateServerOwnerId then
print("The private server owner has joined the game")
end
end)
endSee also:
DataModel.PrivateServerId, a property describing the unique ID of private andreserved servers
RunService: RunService#
ReadOnlyNotReplicatedReadSafe
A reference to the RunService service. Always points to
RunService and is never nil. You can also retrieve it with
GetService(), for example
game:GetService("RunService").
VIPServerId: string#
HiddenReadOnlyNotReplicatedDeprecatedReadSafeDeprecated
Deprecated. This property has been deprecated. Use DataModel.PrivateServerId
instead.
This property was string that could identify the current server as a private server.
VIPServerOwnerId: int64#
HiddenReadOnlyNotReplicatedDeprecatedReadSafeDeprecated
Deprecated. This property has been deprecated. Use
DataModel.PrivateServerOwnerId instead.
This property indicates the UserId of the account
who owns the private server.
Workspace: Workspace#
ReadOnlyNotReplicatedReadSafe
workspace: Workspace#
ReadOnlyNotReplicatedDeprecatedReadSafeDeprecated
Deprecated. This deprecated property is a variant of DataModel.Workspace which
should be used instead.
Methods 10#
| BindToClose | Binds a function to be called before the server shuts down. |
| GetJobsInfo | Returns a table containing basic information about the jobs performed by the task scheduler.PluginSecurity security |
| GetMessage | [OBSOLETE]: This function will always return a blank string.Deprecated |
| GetObjects | Returns an array of Instances associated with the given
content URL.PluginSecurity securityDeprecated |
| GetRemoteBuildMode | This method is no longer useful and will always return false.Deprecated |
| IsGearTypeAllowed | Returns whether gear of the given GearType is permitted to be added
to Players' StarterGears.Deprecated |
| IsLoaded | Returns true if the client has finished loading the game for the first time. |
| SavePlace | Saves the current place.DeprecatedYields |
| SetPlaceId | Sets the DataModel.PlaceId of the current game instance.PluginSecurity security |
| SetUniverseId | Sets the DataModel.GameId of the current game instance to the
given universeId.PluginSecurity security |
BindToClose(function: Function): ()#
Binds a function to be called before the server shuts down. If the bound
function accepts a parameter, it passes CloseReason specifying the
reason for the server shutdown.
You can bind multiple functions by calling
BindToClose() repeatedly. Bound functions
are called in parallel and run at the same time.
The experience server waits 30 seconds for all bound functions to stop running before it shuts down. After 30 seconds, the server shuts down even if functions are still running. Teleports are disabled during moderation shutdowns.
To verify that the current session is not in Roblox Studio, use
RunService:IsStudio(). This prevents bound functions from
completing their run in offline testing sessions.
When you use DataStoreService, you should also use BindToClose
to bind a function saving all unsaved data to
DataStores. This prevents data loss if the server
shuts down unexpectedly.
See also:
CloseReasonfor reasons for the experience server shutdown.PluginGui:BindToClose(), which binds a function to aPluginGuiclose button.
| Name | Type | Default | Description |
|---|---|---|---|
function | Function | A function called before the experience server shuts down. If the
bound function accepts a parameter, it passes CloseReason
specifying the reason for the server shutdown. |
Returns
()
GetJobsInfo(): Array#
PluginSecurity security
Returns a table containing basic information about the jobs performed by the task scheduler.
In computing, a task scheduler is a system responsible for executing key tasks at the appropriate intervals.
You can also find live task scheduler statistics in the Task Scheduler window in Roblox Studio.
The first entry in the table returned is a reference dictionary containing the statistics (or headings) available. It is in the following format:
{
["name"] = "name",
["averageDutyCycle"] = "averageDutyCycle",
["averageStepsPerSecond"] = "averageStepsPerSecond",
["averageStepTime"] = "averageStepTime",
["averageError"] = "averageError",
["isRunning"] = "isRunning",
}The subsequent entries in the table returned are dictionaries containing the above statistics for jobs performed by the task scheduler. For example:
{
["name"] = "Heartbeat",
["averageDutyCycle"] = 0,
["averageStepsPerSecond"] = 0,
["averageStepTime"] = 0,
["averageError"] = 0,
["isRunning"] = false,
}See also:
Returns
Array— A table containing information about the jobs performed by the task scheduler, see above for the format.
GetMessage(): string#
DeprecatedDeprecated
Deprecated. This item is deprecated since the system was phased out a very long time ago, and recently the APIs for setting this message were removed.
This function will always return a blank string. It was originally used to set the message displayed on screen while the game was loading.
This system was phased out a very long time ago, and recently the APIs for setting this message were removed.
Returns
string
GetObjects(url: ContentId): Instances#
PluginSecurity securityDeprecated
Deprecated. This item is deprecated. Do not use it for new work.
This method returns an array of Instances associated with
the given content URL. It can be used to insert content from the Roblox
library. It's not possible to insert Sounds using this
method as they do not have an Instance associated with them and
have only a content URL.
Unlike InsertService:LoadAsset(), DataModel:GetObjects() does
not require an asset to be "trusted," meaning that an asset doesn't need
to be owned by the logged in user, or created by Roblox, to be inserted.
However, if the asset is not owned by the logged in user it must be freely
available.
Due to this function's security context it can only be used by plugins or
the command bar. For an alternative that can be used in
Scripts and LocalScripts, see
InsertService:LoadAsset().
| Name | Type | Default | Description |
|---|---|---|---|
url | ContentId | The given content URL. |
Returns
Instances— An array ofInstancesassociated with the content URL.
GetRemoteBuildMode(): boolean#
DeprecatedDeprecated
Deprecated. This item is deprecated. Use RunService:IsServer() to see if your
code is running on the server.
This method is no longer useful and will always return false. Use
RunService:IsServer() to see if your code is running on the
server.
Returns
boolean
IsGearTypeAllowed(gearType: GearType): boolean#
DeprecatedDeprecated
Deprecated. This property is deprecated and is no longer functional. It should not be used.
Currently this function only returns the correct value on the client
This function returns whether gear of the given GearType is
permitted to be added to Players'
StarterGears. For example:
local meleeWeaponsAllowed = game:IsGearTypeAllowed(Enum.GearType.MeleeWeapons)Whether gear of a specific GearType is permitted in the game is
determined in a place's settings page under 'Permissions'. Note, all of a
gear's associated GearTypes must be enabled for it to be
permitted in a place.
Returns
boolean— Whether gear of the givenGearTypeis permitted in the game.
IsLoaded(): boolean#
When all initial Instances in the game have finished
replicating to the client, this function returns true.
Unless they are parented to ReplicatedFirst,
LocalScripts do not run until the game has loaded. The
following snippet, run from a LocalScript in
ReplicatedFirst yields until the game has loaded:
if not game:IsLoaded() then
game.Loaded:Wait()
endSee also:
- Replication order for a more detailed summary of the loading process.
DataModel.Loaded, an event that fires when the game has loadedInstance:WaitForChild(), a function which can be used to wait for an individualInstanceto replicate without having to wait for the whole game to finish loading.
Returns
boolean— Whether the client has finished loading the game for the first time.
SavePlace(saveFilter: SaveFilter = SaveAll): boolean#
YieldsDeprecatedDeprecated
Deprecated. This item is deprecated. Do not use it for new work.
This function was used by an ancient data persistence method to save the current place.
Note:
- In order for this method to work the save place API has to be enabled for the current place.
| Name | Type | Default | Description |
|---|---|---|---|
saveFilter | SaveFilter | SaveAll |
Returns
boolean
SetPlaceId(placeId: int64): ()#
PluginSecurity security
This function sets the DataModel.PlaceId of the game instance to
the given placeId.
| Name | Type | Default | Description |
|---|---|---|---|
placeId | int64 | The ID to set the DataModel.PlaceId to. |
Returns
()
SetUniverseId(universeId: int64): ()#
PluginSecurity security
This function sets the DataModel.GameId of the current game
instance to the given universeId. This is useful when testing local
.rbxl files that have not been published to Roblox.
To access the DataStoreService in an unpublished place, both
DataModel:SetUniverseId() and DataModel:SetPlaceId() must
be set.
| Name | Type | Default | Description |
|---|---|---|---|
universeId | int64 | The ID to set the DataModel.GameId to. |
Returns
()
Events 5#
| AllowedGearTypeChanged | Fires when SetGearSettings is called with a different value for
allowedGenres.Deprecated |
| GraphicsQualityChangeRequest | Fires when the user prompts and increase or decrease in graphics quality using the hotkeys. |
| ItemChanged | Fires when a property of any object in the DataModel is changed.Deprecated |
| Loaded | Fires on the client when the game finishes loading for the first time. |
| ServerRestartScheduled | Fires on the server when the server has been scheduled to restart. Provides the scheduled restart time, source, and custom attributes. |
AllowedGearTypeChanged()#
DeprecatedDeprecated
Deprecated. This item is deprecated . Do not use it for new work.
This event fires when SetGearSettings is called with a different value for
allowedGenres.
GraphicsQualityChangeRequest(betterQuality: boolean)#
Fires when the user prompts an increase or decrease in graphics quality using the hotkeys.
This event fires under the following conditions:
- If the user presses F10, this event fires with a
betterQualityargument oftrue. - If the user presses ShiftF10, this event fires
with a
betterQualityargument offalse.
This event does not provide the current graphics quality level or cover all updates to the graphics quality. For example, changes made in the core GUI escape menu are not registered.
You can retrieve a user's SavedQualitySetting using
UserGameSettings with the following snippet:
UserSettings():GetService("UserGameSettings").SavedQualityLevelIf the user's graphics settings are set to automatic then the
SavedQualitySetting will be
Automatic. There is currently no way
for developers to reliably get the current graphics quality level of a
user's machine.
| Name | Type | Default | Description |
|---|---|---|---|
betterQuality | boolean | Whether the user has prompted an increase (true) or a decrease (false) in graphics quality. |
ItemChanged(object: Instance, descriptor: string)#
DeprecatedDeprecated
Deprecated. This function has been superseded by Object.Changed, which should
be used in new work instead.
This event fires when a property of any object in the DataModel is
changed.
| Name | Type | Default | Description |
|---|---|---|---|
object | Instance | ||
descriptor | string |
Loaded()#
This event fires on the client when all initial Instances
in the game have finished replicating to the client.
Unless they are parented to ReplicatedFirst,
LocalScripts do not run until the game has loaded. The
following snippet, run from a LocalScript in
ReplicatedFirst yields until the game has loaded:
if not game:IsLoaded() then
game.Loaded:Wait()
endSee also:
- Replication order for a more detailed summary of the loading process.
DataModel.Loaded, an event that fires when the game has loadedInstance:WaitForChild(), a function which can be used to wait for an individualInstanceto replicate without having to wait for the whole game to finish loading.
ServerRestartScheduled(restartTime: DateTime, source: CloseReason, attributes: Dictionary)#
Fires when the server has been scheduled to restart, for example when you restart servers from the Creator Hub or Open Cloud to release an experience update, or when Roblox needs to restart servers for infrastructure maintenance.
You can use this event to inform players on the server of the impending restart. You could then let them save their progress or teleport them to updated servers at the most convenient time for your game.
| Name | Type | Default | Description |
|---|---|---|---|
restartTime | DateTime | A DateTime indicating when the server is scheduled to shut
down. The actual restart may happen slightly after this projected
time, but not before. | |
source | CloseReason | An CloseReason describing what triggered the restart. The value
will be CloseReason.DeveloperUpdate for experience updates, and
CloseReason.RobloxMaintenance for server maintenance updates. | |
attributes | Dictionary | A dictionary of developer-supplied metadata associated with the restart. If no attributes are provided, then this will be an empty table. |
Callbacks 1#
| OnClose | Invoked before the game is shut down. When this callback returns, or the timeout period is hit, the game finishes shutting down.Deprecated |
OnClose(): Tuple#
DeprecatedDeprecated
Deprecated. This function is deprecated. It is recommended to use
DataModel:BindToClose() instead.
Invoked before the game is shut down. When this callback returns, or the timeout period is hit, the game finishes shutting down.
Returns
Tuple
Inherited members#
Inherited from Instance 58
Properties (10)
Archivable, archivable, Capabilities, IsInSandbox, Name, Parent, PredictionMode, RobloxLocked, Sandboxed, UniqueId
Methods (39)
AddTag, children, ClearAllChildren, Clone, clone, Destroy, destroy, FindFirstAncestor, FindFirstAncestorOfClass, FindFirstAncestorWhichIsA, FindFirstChild, findFirstChild, FindFirstChildOfClass, FindFirstChildWhichIsA, FindFirstDescendant, GetActor, GetAttribute, GetAttributeChangedSignal, GetAttributes, GetChildren, getChildren, GetDebugId, GetDescendants, GetFullName, GetStyled, GetStyledPropertyChangedSignal, GetTags, HasTag, IsAncestorOf, IsDescendantOf, isDescendantOf, IsPropertyModified, QueryDescendants, Remove, remove, RemoveTag, ResetPropertyToDefault, SetAttribute, WaitForChild