StarterPlayer

Show Deprecated
Not Creatable
Service

A service which allows the defaults of properties in the Player object to be set. When a player enters the server, each property of the player object is set to the current value of the corresponding property in StarterPlayer.

Additionally, you may add four objects to this service:

  • A StarterPlayerScripts instance, with scripts that run once for each player.
  • A StarterCharacterScripts instance, with scripts to add to each player's character every time they spawn.
  • A Humanoid instance named StarterHumanoid, which will be used as the default humanoid for each player's character.
  • A Model instance named StarterCharacter, which will be used as the character model for all players

A typical structure may look something like this:

StarterPlayer Tree

Code Samples

Displaying a Humanoid's Health and Name

local humanoid = script.Parent
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Viewer
humanoid.HealthDisplayDistance = 0
humanoid.NameDisplayDistance = 100
Setting a Player's Replication Focus

local Players = game:GetService("Players")
local PLAYER_NAME = "polarpanda16"
local player = Players:WaitForChild(PLAYER_NAME)
local part = Instance.new("Part")
part.Parent = workspace
part.Name = "ReplicationFocusPart"
part.Anchored = true
player.ReplicationFocus = part
Setting Camera Zoom Distance

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75

Summary

Properties

Describes the current game's permission levels regarding custom avatar animations from the website.

HIDDEN

Sets whether the character will automatically jump when hitting an obstacle on a mobile device.

The maximum distance the player's default camera is allowed to zoom out in studs.

The minimum distance in studs the player's default camera is allowed to zoom in.

Changes the default camera's mode to either first or third person.

Determines the starting value of Humanoid.JumpHeight for Player.Character.

Determines the starting value of Humanoid.JumpPower for Player.Character.

Determines the starting value of Humanoid.WalkSpeed for Player.Character.

Sets how the default camera handles objects between the camera and the player.

Lets developer overwrite the default camera mode for each player if the player is on a computer.

Lets developer overwrite the player's movement mode if the player is on a computer.

Lets developer overwrite the default camera movement mode for each player if the player is on a mobile device.

Lets developer overwrite the player's movement mode if the player is on a touch device.

Determines if a player can toggle mouse lock by default.

Sets the distance at which this player will see other Humanoid's health bars. If set to 0, the health bars will not be displayed.

Whether or not the appearance of a player's character should be loaded.

Indicates whether characters spawning into an experience will have layered clothing accessories equipped on them.

NOT REPLICATED
NOT SCRIPTABLE

Sets the distance at which this player will see other Humanoid's names. If set to 0, names are hidden.

Determines if user-owned emotes are loaded when loading avatars.

Methods

ClearDefaults(): void  


Events

Properties

AllowCustomAnimations

Hidden
Roblox Script Security

The AllowCustomAnimations StarterPlayer property describes the current game's permission levels regarding custom avatar Animations from the website.

As such, this value cannot be changed from within the game. It can only be changed by changing the game's permission levels within the game's setting's page on the website.

This property is not intended for use in the game.

AutoJumpEnabled

The AutoJumpEnabled property sets whether the character will automatically jump when hitting an obstacle on a mobile device.

This property is copied from the StarterPlayer to a Player when they join the game. Following that. the value of this property is copied to Humanoid.AutoJumpEnabled property of the Player.Characters Humanoid on spawn. In other words, it is possible to set the auto-jump behavior on a per-character, per-player and per-game basis using these three properties.

Code Samples

Auto-Jump Toggle

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
local function update()
-- Update button text
if player.AutoJumpEnabled then
button.Text = "Auto-Jump is ON"
else
button.Text = "Auto-Jump is OFF"
end
-- Reflect the property in the player's character, if they have one
if player.Character then
local human = player.Character:FindFirstChild("Humanoid")
if human then
human.AutoJumpEnabled = player.AutoJumpEnabled
end
end
end
local function onActivated()
-- Toggle auto-jump
player.AutoJumpEnabled = not player.AutoJumpEnabled
-- Update everything else
update()
end
button.Activated:Connect(onActivated)
update()

CameraMaxZoomDistance

The CameraMaxZoomDistance StarterPlayer property sets the maximum distance in studs the camera can be from the character with the default cameras.

This property sets the default value of Player.CameraMaxZoomDistance for each player who joins the game. If this value is set to a lower value than StarterPlayer.CameraMinZoomDistance it will be increased to CameraMinZoomDistance.

Code Samples

Setting Camera Zoom Distance

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75

CameraMinZoomDistance

The CameraMinZoonDistance StarterPlayer property sets the minimum distance in studs the camera can be from the character with the default cameras.

This property sets the default value of Player.CameraMinZoomDistance for each player who joins the game. If this value is set to a higher value than StarterPlayer.CameraMaxZoomDistance it will be decreased to CameraMaxZoomDistance.

Code Samples

Setting Camera Zoom Distance

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75

CameraMode

The CameraMode StarterPlayer property sets whether cameras will be locked to first person or not when a player joins the game.

Sets the default value for Player.CameraMode for each player in the game.

The camera has two modes:

  1. First person
  2. Third person

The CameraMode Enum is used to set CameraMode, and determines when first and third person cameras should be used.

First-person

In first-person mode, the player's camera is zoomed all the way in. Unless there is a visible GUI present with the GuiButton.Modal property set to true, the mouse will be locked and the user's camera will turn as the mouse moves.

Third-person

In third-person mode, the character can be seen in the camera. While in third-person mode on Roblox:

  • You may right-click and drag to rotate your camera, or use the arrow keys at the bottom right-hand corner of the screen.
  • When you move your mouse, your camera does not change (unless you move the mouse to the end of the screen).
  • When you press any of the arrow keys, the user's character will face in the corresponding arrow key's direction.
  • You can zoom in and out freely.

Third-person is the default camera setting.

Code Samples

Playing in Third Person

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMode = Enum.CameraMode.Classic
Playing in First Person

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMode = Enum.CameraMode.LockFirstPerson

CharacterJumpHeight

CharacterJumpHeight determines the starting value of Humanoid.JumpHeight for a Player's Character. The value of this property defaults to 7.2 studs.

This property is only visible in the Properties window If StarterPlayer.CharacterUseJumpPower is set to false, as it would not be relevant otherwise.

Since this property is only relevant for characters being spawned in the future, changing it will not change any existing player characters. Changes to this property will only take effect when a player respawns.

CharacterJumpPower

CharacterJumpPower determines the starting value of Humanoid.JumpPower for a Player's Character. The value of this property defaults to 50 and when applied to the Players Humanoid it will be constrained between 0 and 1000.

This property is only visible in the Properties window If StarterPlayer.CharacterUseJumpPower is set to true, as it would not be relevant otherwise.

Since this property is only relevant for characters being spawned in the future, changing it will not change any existing player characters. Changes to this property will only take effect when a player respawns.

CharacterMaxSlopeAngle

CharacterMaxSlopeAngle determines the starting value of Humanoid.MaxSlopeAngle for a Player's Character. It defaults to 89°, so humanoids can climb pretty much any slope they want by default. When applied to the Player's Humanoid it will be constrained between 0 and 89.

Since this property is only relevant for characters being spawned in the future, changing it will not change any existing player characters. Changes to this property will only take effect when a player respawns.

CharacterUseJumpPower

CharacterUseJumpPower determines the starting value of Humanoid.UseJumpPower for a Player's Character. Toggling it will change which property is visible in the properties window: CharacterJumpHeight (false) or StarterPlayer.CharacterJumpPower (true). Defaults to true.

Since this property is only relevant for characters being spawned in the future, changing it will not change any existing player characters. Changes to this property will only take effect when a player respawns.

CharacterWalkSpeed

CharacterWalkSpeed determines the starting value of Humanoid.WalkSpeed for a Player's Character. This property defaults to 16.

Since this property is only relevant for characters being spawned in the future, changing it will not change any existing player characters. Changes to this property will only take effect when a player respawns.

DevCameraOcclusionMode

The DevCameraOcclusionMode StarterPlayer property sets how the default camera handles objects between the camera and the player.

This is the default property for players joining the game. It can be changed for individual players by settings the Player.DevComputerOcclusionMode.

The default value is Zoom (0): The camera will zoom in until there is nothing between the player and camera.

See DevCameraOcclusionMode for the different occlusion modes available. Sets how the default camera handles objects between the camera and the player.

Code Samples

Setting a Player's Camera Occlusion Mode

local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Set the player's camera occlusion mode to invisicam
player.DevCameraOcclusionMode = Enum.DevCameraOcclusionMode.Invisicam

DevComputerCameraMovementMode

The DevComputerCameraMovementMode StarterPlayer property lets the developer overwrite the player's camera mode if the player is on a computer.

This is the default property for players joining the game. It can be changed for individual players by settings the Player.DevComputerCameraMode.

If set to UserChoice then the player's camera movement mode will be determined by whatever the player set in the game settings. Otherwise, the mode will be set based on this property.

See DevComputerCameraMovementMode for the different camera modes available.

This property has no affect on players not on a computer.

Code Samples

Setting a Player's Camera Movement Mode (Desktop)

local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Set the player's camera movement mode on computers to classic
player.DevComputerCameraMode = Enum.DevComputerCameraMovementMode.Classic

DevComputerMovementMode

The DevComputerMovementMove StarterPlayer property lets the developer overwrite the player's movement mode if the player is on a computer.

This is the default property for players joining the game. It can be changed for individual players by settings the Player.DevComputerMovementMode.

If set to UserChoice then the player's movement mode will be determined by whatever the player set in the game settings. Otherwise, the mode will be set based on this property.

See DevComputerMovementMode for the different movement modes available. Lets developer overwrite the player's movement mode if the player is on a computer.

This property has no affect on players not on a computer.

Code Samples

Setting a Player's Movement Mode (Desktop)

local Players = game:GetService("Players")
game.Players.PlayerAdded:Connect(function(player)
-- Set the player's movement mode on mobile devices to a dynamic thumbstick
player.DevComputerMovementMode = Enum.DevComputerMovementMode.DynamicThumbstick
end)

DevTouchCameraMovementMode

The DevTouchCameraMovementMode StarterPlayer property lets the developer overwrite the player's camera mode if the player is on a touch device.

This is the default property for players joining the game. It can be changed for individual players by settings the Player.DevTouchCameraMode.

If set to UserChoice then the player's camera movement mode will be determined by whatever the player set in the game settings. Otherwise, the mode will be set based on this property.

See DevTouchCameraMovementMode for the different camera modes available.

This property has no affect players not on a mobile device.

Code Samples

Setting a Player's Camera Movement Mode (Touch)

local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Set the player's camera movement mode on mobile devices to classic
player.DevTouchCameraMovementMode = Enum.DevTouchCameraMovementMode.Classic

DevTouchMovementMode

The DevTouchMovementMode StarterPlayer property lets the developer overwrite the player's movement mode if the player is on a touch device.

This is the default property for players joining the game. It can be changed for individual players by settings the Player.DevTouchMovementMode.

If set to UserChoice then the player's movement mode will be determined by whatever the player set in the game settings. Otherwise, the mode will be set based on this property.

See DevTouchMovementMode for the different movement modes available. Lets developer overwrite the player's movement mode if the player is on a touch device.

This property has no affect on players not on a touch-enabled device.

Code Samples

Setting a Player's Movement Mode (Touch)

local Players = game:GetService("Players")
game.Players.PlayerAdded:Connect(function(player)
-- Set the player's movement mode on mobile devices to a dynamic thumbstick
player.DevTouchMovementMode = Enum.DevTouchMovementMode.DynamicThumbstick
end)

EnableDynamicHeads

Not Scriptable

EnableMouseLockOption

The EnableMouseLockOption StarterPlayer property determines if a player can toggle mouse lock by default.

Mouselock will lock the player's cursor to the center of the screen. Moving the mouse will rotate the Camera and Player will move relative to the current rotation of the camera.

This property sets the value of Player.DevEnableMouseLock.

Code Samples

Enabling a Player's Mouse Lock

local Players = game:GetService("Players")
local player = Players.LocalPlayer
while true do
player.DevEnableMouseLock = not player.DevEnableMouseLock
task.wait(5)
end

HealthDisplayDistance

The HealthDisplayDistance StarterPlayer property sets the distance in studs at which this player will see other Humanoid's health bars. If set to 0, the health bars will not be displayed. This property is set to 100 studs by default.

To change the display distance for a player once they join the game, you can set the Player.HealthDisplayDistance property.

If a Humanoid's health bar is visible, you can set the display type using Humanoid.DisplayDistanceType.

Code Samples

Hiding Player Health and Names

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0

HumanoidStateMachineMode

Not Browsable

LoadCharacterAppearance

The LoadCharacterAppearance StarterPlayer property sets whether or not the appearance of a player's character should be loaded.

Setting this to false results in the player having no clothes (including hats), body colors, body packages or anything else related to the appearance of the player's avatar. By default, this property is set to true.

Setting this to true results in the player loading the appearance corresponding to the player's Player.CharacterAppearanceId.

If Player:LoadCharacterWithHumanoidDescription() is used, it can be advantageous to set StarterPlayer.LoadCharacterAppearance to false as the player's avatar is not required as all asset IDs to equip on the character will come from the passed in HumanoidDescription.

Code Samples

Disabling a Player's Appearance

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CanLoadCharacterAppearance = false

LoadCharacterLayeredClothing

Not Replicated
Not Scriptable

Indicates whether characters spawning into an experience will have layered clothing accessories equipped on them (Although Workspace.MeshPartHeadsAndAccessories also need to be enabled in the Workspace).

NameDisplayDistance

Sets the distance at which this player will see other Humanoid's names. If set to 0, names are hidden.

The NameDisplayDistance StarterPlayer property sets the distance in studs at which this player will see other Humanoid's names. If set to 0, names are hidden. This property is set to 100 studs by default.

To change the display distance for a player once they join the game, you can set the Player.NameDisplayDistance property.

If a Humanoid's name is visible, you can set the display type using Humanoid.DisplayDistanceType.

Code Samples

Hiding Player Health and Names

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0

UserEmotesEnabled

This property determines if user-owned emotes are loaded when loading avatars. Setting this property to false disables loading. Developers can set the property in Studio directly or through the Game Settings menu.

When emote loading is disabled, the emotes UI will still work as long as developers choose to use the emotes feature by adding emotes within their game.

See also:

  • Avatar Emotes, an article detailing how to control, customize, and play avatar emotes

Methods

ClearDefaults

void
Roblox Script Security

Returns

void

Events