Roblox UtilitiesDevlHub Roblox Documentation

Class

DataModel

NotCreatable
Memory category
Instances

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#

CreatorIdint64Describes the ID of the user or group that owns the place.ReadSafeReadOnlyNotReplicated
CreatorTypeCreatorTypeDescribes the CreatorType of the place, whether the place is owned by a user or a group.ReadSafeReadOnlyNotReplicated
GameIdint64Describes the ID of the experience that the place running on the server belongs to.ReadSafeReadOnlyNotReplicated
GearGenreSettingGearGenreSettingNot functional. Historically described the gear permissions of the place as set on the Roblox website.ReadSafeDeprecatedReadOnlyNotReplicated
GenreGenreNot functional. Historically described the Genre of the place as set on the Roblox website.ReadSafeDeprecatedReadOnlyNotReplicated
JobIdstringA unique identifier for the running game server instance.ReadSafeReadOnlyNotReplicated
lightingInstanceRefers to the game's Lighting service.ReadSafeDeprecatedReadOnlyNotReplicated
MatchmakingTypeMatchmakingTypeRepresents how players in the server are handled by matchmaking.ReadSafeReadOnlyNotReplicated
PlaceIdint64Describes the ID of the place running on the server.ReadSafeReadOnlyNotReplicated
PlaceVersionintDescribes the version of the place the server is running on.ReadSafeReadOnlyNotReplicated
PrivateServerIdstringDescribes the private server ID of the server, if the server is a private server or a reserved server.ReadSafeReadOnlyNotReplicated
PrivateServerOwnerIdint64Describes the UserId of the Player that owns the private server if the server is private.ReadSafeReadOnlyNotReplicated
RunServiceRunServiceA reference to the RunService service.ReadSafeReadOnlyNotReplicated
VIPServerIdstringA string that could identify the current server as a private server.ReadSafeDeprecatedHiddenReadOnlyNotReplicated
VIPServerOwnerIdint64The UserId of the account who owns the private server.ReadSafeDeprecatedHiddenReadOnlyNotReplicated
WorkspaceWorkspaceA reference to the Workspace service.ReadSafeReadOnlyNotReplicated
workspaceWorkspaceReadSafeDeprecatedReadOnlyNotReplicated

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#

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#

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 to
  • DataModel.JobId, which is a unique identifier for the server game instance running
  • TeleportService, which is a service that can be used to transport Players between 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:

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:

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:

Luau
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)
end

See also:

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

This property is a reference to the Workspace service. It always points to Workspace and will never be nil.

workspace: Workspace#

ReadOnlyNotReplicatedDeprecatedReadSafeDeprecated

Deprecated. This deprecated property is a variant of DataModel.Workspace which should be used instead.

Methods 10#

BindToCloseBinds a function to be called before the server shuts down.
GetJobsInfoReturns 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
GetObjectsReturns an array of Instances associated with the given content URL.PluginSecurity securityDeprecated
GetRemoteBuildModeThis method is no longer useful and will always return false.Deprecated
IsGearTypeAllowedReturns whether gear of the given GearType is permitted to be added to Players' StarterGears.Deprecated
IsLoadedReturns true if the client has finished loading the game for the first time.
SavePlaceSaves the current place.DeprecatedYields
SetPlaceIdSets the DataModel.PlaceId of the current game instance.PluginSecurity security
SetUniverseIdSets 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:

NameTypeDefaultDescription
functionFunctionA 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:

Luau
{
    ["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:

Luau
{
    ["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().

NameTypeDefaultDescription
urlContentIdThe given content URL.
Returns
  • Instances — An array of Instances associated 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:

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

NameTypeDefaultDescription
gearTypeGearTypeThe given GearType.
Returns
  • boolean — Whether gear of the given GearType is 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:

Luau
if not game:IsLoaded() then
    game.Loaded:Wait()
end

See also:

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.
NameTypeDefaultDescription
saveFilterSaveFilterSaveAll
Returns
  • boolean

SetPlaceId(placeId: int64): ()#

PluginSecurity security

This function sets the DataModel.PlaceId of the game instance to the given placeId.

NameTypeDefaultDescription
placeIdint64The 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.

NameTypeDefaultDescription
universeIdint64The ID to set the DataModel.GameId to.
Returns
  • ()

Events 5#

AllowedGearTypeChangedFires when SetGearSettings is called with a different value for allowedGenres.Deprecated
GraphicsQualityChangeRequestFires when the user prompts and increase or decrease in graphics quality using the hotkeys.
ItemChangedFires when a property of any object in the DataModel is changed.Deprecated
LoadedFires on the client when the game finishes loading for the first time.
ServerRestartScheduledFires 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 betterQuality argument of true.
  • If the user presses ShiftF10, this event fires with a betterQuality argument of false.

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:

Luau
UserSettings():GetService("UserGameSettings").SavedQualityLevel

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

NameTypeDefaultDescription
betterQualitybooleanWhether 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.

NameTypeDefaultDescription
objectInstance
descriptorstring

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:

Luau
if not game:IsLoaded() then
    game.Loaded:Wait()
end

See also:

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.

NameTypeDefaultDescription
restartTimeDateTimeA DateTime indicating when the server is scheduled to shut down. The actual restart may happen slightly after this projected time, but not before.
sourceCloseReasonAn CloseReason describing what triggered the restart. The value will be CloseReason.DeveloperUpdate for experience updates, and CloseReason.RobloxMaintenance for server maintenance updates.
attributesDictionaryA dictionary of developer-supplied metadata associated with the restart. If no attributes are provided, then this will be an empty table.

Callbacks 1#

OnCloseInvoked 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 ServiceProvider 7
Inherited from Instance 58
Inherited from Object 6
Properties (2)

ClassName, className

Events (1)

Changed