18 min read

Source: Roblox Creator Hub · CC BY 4.0 · View source · Code samples: MIT Imported 2026-10-03. Formatting adapted for this site.

StarterPlayer

Inherits from: Instance → Object

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:

Inherits from: Instance

Memory category: Instances

Tags: NotCreatable, Service

Properties

NameType / ReturnsDescription
StarterPlayer.AllowCustomAnimationsbooleanDescribes the current game's permission levels regarding custom avatar animations from the website.
StarterPlayer.AutoJumpEnabledbooleanSets whether the character will automatically jump when hitting an obstacle on a mobile device.
StarterPlayer.AvatarJointUpgradeRolloutStateControls whether avatars spawn with AnimationConstraint joints for physical simulation.
StarterPlayer.CameraMaxZoomDistancefloatThe maximum distance the player's default camera is allowed to zoom out in studs.
StarterPlayer.CameraMinZoomDistancefloatThe minimum distance in studs the player's default camera is allowed to zoom in.
StarterPlayer.CameraModeCameraModeChanges the default camera's mode to either first or third person.
StarterPlayer.CharacterBreakJointsOnDeathbooleanDetermines the starting value of Humanoid.BreakJointsOnDeath for Player.Character.
StarterPlayer.CharacterJumpHeightfloatDetermines the starting value of Humanoid.JumpHeight for Player.Character.
StarterPlayer.CharacterJumpPowerfloatDetermines the starting value of Humanoid.JumpPower for Player.Character.
StarterPlayer.CharacterMaxSlopeAnglefloatDetermines the starting value of Humanoid.MaxSlopeAngle for Player.Character.
StarterPlayer.CharacterUseJumpPowerbooleanDetermines the starting state of Humanoid.UseJumpPower for Player.Character.
StarterPlayer.CharacterWalkSpeedfloatDetermines the starting value of Humanoid.WalkSpeed for Player.Character.
StarterPlayer.ClassicDeathbooleanControls whether the character uses the classic death behavior when the Humanoid's health reaches zero.
StarterPlayer.CreateDefaultPlayerModulebooleanControls how the default player module and related scripts are handled.
StarterPlayer.DevCameraOcclusionModeDevCameraOcclusionModeSets how the default camera handles objects between the camera and the player.
StarterPlayer.DevComputerCameraMovementModeDevComputerCameraMovementModeLets you overwrite the player's camera mode on a computer.
StarterPlayer.DevComputerMovementModeDevComputerMovementModeLets you overwrite the player's movement mode on a computer.
StarterPlayer.DevTouchCameraMovementModeDevTouchCameraMovementModeLets you overwrite the player's camera mode on a touch-enabled device.
StarterPlayer.DevTouchMovementModeDevTouchMovementModeLets you overwrite the player's movement mode on a touch-enabled device.
StarterPlayer.EnableDynamicHeadsLoadDynamicHeadsSets the use of dynamic heads. When true, enables the use of avatar heads with facial animation data.
StarterPlayer.EnableMouseLockOptionbooleanDetermines if a player can toggle mouse lock by default.
StarterPlayer.HealthDisplayDistancefloatSets the distance at which this player will see other Humanoid health bars. If set to 0, the health bars will not be displayed.
StarterPlayer.LoadCharacterAppearancebooleanWhether or not the appearance of a player's character should be loaded.
StarterPlayer.LoadCharacterLayeredClothingLoadCharacterLayeredClothingIndicates whether characters spawning into an experience will have layered clothing accessories equipped on them.
StarterPlayer.LuaCharacterControllerCharacterControlModeSets the character controller mode used by the player's character.
StarterPlayer.NameDisplayDistancefloatSets the distance at which this player will see other Humanoid names.
StarterPlayer.UserEmotesEnabledbooleanDetermines if user-owned emotes are loaded when loading avatars.

Inherited from Instance

NameType / ReturnsDescription
Instance.ArchivablebooleanDetermines if an Instance and its descendants can be cloned using Instance:Clone(), and can be saved/published.
Instance.archivableboolean
Instance.CapabilitiesSecurityCapabilitiesThe set of capabilities allowed to be used for scripts inside this container.
Instance.IsInSandboxbooleanIndicates whether the instance is inside a sandboxed container.
Instance.NamestringA non-unique identifier of the Instance.
Instance.ParentInstanceDetermines the hierarchical parent of the Instance.
Instance.PredictionModePredictionModeReflects the client-side prediction mode applied to the instance under server-authoritative physics.
Instance.RobloxLockedbooleanA deprecated property that used to protect CoreGui objects.
Instance.SandboxedbooleanWhen enabled, the instance can only access abilities in its Capabilities list.
Instance.UniqueIdUniqueIdA unique identifier for the instance.

Inherited from Object

NameType / ReturnsDescription
Object.ClassNamestringA read-only string representing the class this Object belongs to.
Object.classNamestring

StarterPlayer.AllowCustomAnimations

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

FieldValue
typeboolean
tags["Hidden"]
security{"read":"None","write":"RobloxScriptSecurity"}
thread safetyReadSafe
categoryCharacter
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

StarterPlayer.AutoJumpEnabled

This 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 character's 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.

FieldValue
typeboolean
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryMobile
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

Code samples: View on Creator Hub (Auto-Jump-Toggle).

StarterPlayer.AvatarJointUpgrade

This property controls the rollout state of new AnimationConstraint joints in avatars. When disabled, avatars spawn with legacy Motor6Ds connecting their limbs. When enabled, avatars spawn with AnimationConstraints and BallSocketConstraints connecting their limbs. This makes it easier to write scripts that enable physical simulation, like arm strength and ragdoll falling down.

FieldValue
typeRolloutState
tags["NotReplicated"]
security{"read":"RobloxScriptSecurity","write":"RobloxScriptSecurity"}
thread safetyReadSafe
categoryCharacter
serialization{"can_load":false,"can_save":false}
capabilities["Players"]

StarterPlayer.CameraMaxZoomDistance

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

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryCamera
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

Code samples: View on Creator Hub (setting-camera-zoom-distance).

StarterPlayer.CameraMinZoomDistance

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

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryCamera
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

Code samples: View on Creator Hub (setting-camera-zoom-distance).

StarterPlayer.CameraMode

Sets the default value for Player.CameraMode for each player in the game. The camera has two modes:

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 (default), the character can be seen in the camera. While in third person mode on Roblox:

FieldValue
typeCameraMode
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryCamera
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

Code samples: View on Creator Hub (playing-in-first-person).

StarterPlayer.CharacterBreakJointsOnDeath

This property determines the starting value of Humanoid.BreakJointsOnDeath for a player's Player.Character.

Note that AvatarJointUpgrade must be enabled for this property to take effect.

FieldValue
typeboolean
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryCharacter
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

StarterPlayer.CharacterJumpHeight

This property determines the starting value of Humanoid.JumpHeight for a player's Player.Character in studs, with a default of 7.2.

This property is only visible in the Properties window If 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.

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryCharacter Jump Settings
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

StarterPlayer.CharacterJumpPower

This property determines the starting value of Humanoid.JumpPower for a player's Player.Character, with a default of 50, minimum of 0, and maximum of 1000.

This property is only visible in the Properties window If 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.

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryCharacter Jump Settings
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

StarterPlayer.CharacterMaxSlopeAngle

This property determines the starting value of Humanoid.MaxSlopeAngle for a player's Player.Character in degrees. It defaults to 89, so humanoids can climb pretty much any slope they want by default.

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.

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryCharacter
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

StarterPlayer.CharacterUseJumpPower

This property determines the starting value of Humanoid.UseJumpPower for a player's Player.Character. Toggling it will change which property is visible in the Properties window (CharacterJumpHeight if false or CharacterJumpPower if 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.

FieldValue
typeboolean
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryCharacter Jump Settings
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

StarterPlayer.CharacterWalkSpeed

This property determines the starting value of Humanoid.WalkSpeed for a player's Player.Character with a default of 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.

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryCharacter
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

StarterPlayer.ClassicDeath

When enabled, the character uses the classic death behavior (joints break apart and parts scatter). When disabled, characters spawn with Humanoid.BreakJointsOnDeath = false, and will ragdoll when they die.

FieldValue
typeboolean
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryCharacter
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

StarterPlayer.CreateDefaultPlayerModule

This property is only visible when Workspace.PlayerScriptsUseInputActionSystem is enabled. When set to true (default), the PlayerModule injection point occurs at StarterPlayer. When set to false, the default camera and control scripts will not be added to the place.

FieldValue
typeboolean
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryControls
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

StarterPlayer.DevCameraOcclusionMode

Defines how the default camera scripts handle objects between the camera and the camera subject. Applies to all players as they join the experience and can't be changed for individual players.

The default value is Zoom (0). See DevCameraOcclusionMode for a list of available modes.

FieldValue
typeDevCameraOcclusionMode
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryCamera
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

StarterPlayer.DevComputerCameraMovementMode

This property lets you overwrite the player's camera mode on a computer.

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

This property does not affect players who are not on a computer.

FieldValue
typeDevComputerCameraMovementMode
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryCamera
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

StarterPlayer.DevComputerMovementMode

This property lets you overwrite the player's movement mode on a computer.

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

This property does not affect players who are not on a computer.

FieldValue
typeDevComputerMovementMode
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryControls
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

StarterPlayer.DevTouchCameraMovementMode

This property lets you overwrite the player's camera mode on a touch-enabled device.

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

This property does not affect players who are not on a touch-enabled device.

FieldValue
typeDevTouchCameraMovementMode
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryCamera
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

StarterPlayer.DevTouchMovementMode

Lets you overwrite the player's movement mode on a touch-enabled device.

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

This property does not affect players who are not on a touch-enabled device.

FieldValue
typeDevTouchMovementMode
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryControls
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

StarterPlayer.EnableDynamicHeads

Sets the use of dynamic heads. When true, enables the use of avatar heads with facial animation data.

FieldValue
typeLoadDynamicHeads
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryCharacter
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

StarterPlayer.EnableMouseLockOption

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

Note that shift-lock related APIs are in the process of being deprecated, so it's recommended to use UserInputService.MouseBehavior instead to lock the mouse.

FieldValue
typeboolean
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryControls
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

Code samples: View on Creator Hub (enabling-a-player-s-mouse-lock).

StarterPlayer.HealthDisplayDistance

This property sets the distance in studs at which this player will see other Humanoid 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 health bar is visible, you can set the display type using Humanoid.DisplayDistanceType.

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

Code samples: View on Creator Hub (hiding-player-health-and-names).

StarterPlayer.LoadCharacterAppearance

This 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:LoadCharacterWithHumanoidDescriptionAsync() 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.

FieldValue
typeboolean
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryCharacter
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

Code samples: View on Creator Hub (disabling-a-player-s-appearance).

StarterPlayer.LoadCharacterLayeredClothing

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

This property also gates the WrapLayer.AutoSkin feature. When set to Disabled, the automatic skinning transfer pipeline for WrapLayers does not run, and WrapLayer.AutoSkin has no effect. For more information, see Automatic Skinning Transfer.

FieldValue
typeLoadCharacterLayeredClothing
tags["NotReplicated","NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryCharacter
serialization{"can_load":false,"can_save":false}
capabilities["Players"]

StarterPlayer.LuaCharacterController

Determines which character controller implementation drives the player's character movement. Accepts a value from CharacterControlMode: Default, Legacy, NoCharacterController, or LuaCharacterController.

FieldValue
typeCharacterControlMode
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryControls
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

StarterPlayer.NameDisplayDistance

Sets the distance at which this player will see other Humanoid 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 name is visible, you can set the display type using Humanoid.DisplayDistanceType.

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

Code samples: View on Creator Hub (hiding-player-health-and-names).

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

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.

FieldValue
typeboolean
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryCharacter
serialization{"can_load":true,"can_save":true}
capabilities["Players"]

Methods

Inherited from Instance

NameType / ReturnsDescription
Instance:AddTag()Applies a tag to the instance.
Instance:childrenInstancesReturns an array of the object's children.
Instance:ClearAllChildren()This method destroys all of an instance's children.
Instance:CloneInstanceCreate a copy of an instance and all its descendants, ignoring instances that are not Archivable.
Instance:cloneInstance
Instance:Destroy()Sets the Instance.Parent property to nil, locks the Instance.Parent property, disconnects all connections, and calls Destroy() on all children.
Instance:destroy()
Instance:FindFirstAncestorInstance?Returns the first ancestor of the Instance whose Instance.Name is equal to the given name.
Instance:FindFirstAncestorOfClassInstance?Returns the first ancestor of the Instance whose Object.ClassName is equal to the given className.
Instance:FindFirstAncestorWhichIsAInstance?Returns the first ancestor of the Instance for whom Object:IsA() returns true for the given className.
Instance:FindFirstChildInstance?Returns the first child of the Instance found with the given name.
Instance:findFirstChildInstance
Instance:FindFirstChildOfClassInstance?Returns the first child of the Instance whose ClassName is equal to the given class name.
Instance:FindFirstChildWhichIsAInstance?Returns the first child of the Instance for whom Object:IsA() returns true for the given className.
Instance:FindFirstDescendantInstance?Returns the first descendant found with the given Instance.Name.
Instance:GetActorActor?Returns the Actor associated with the Instance, if any.
Instance:GetAttributeVariantReturns the value which has been assigned to the given attribute name.
Instance:GetAttributeChangedSignalRBXScriptSignalReturns an event that fires when the given attribute changes.
Instance:GetAttributesDictionaryReturns a dictionary of the instance's attributes.
Instance:GetChildrenInstancesReturns an array containing all of the instance's children.
Instance:getChildrenInstances
Instance:GetDebugIdstringReturns a coded string of the debug ID used internally by Roblox.
Instance:GetDescendantsInstancesReturns an array containing all of the descendants of the instance.
Instance:GetFullNamestringReturns a string describing the instance's ancestry.
Instance:GetStyledVariantReturns the styled or explicitly modified value of the specified property, or else the default property value if it hasn't been styled/modified.
Instance:GetStyledPropertyChangedSignalRBXScriptSignalReturns an event that fires when the given style property changes on the instance.
Instance:GetTagsArrayGets an array of all tags applied to the instance.
Instance:HasTagbooleanCheck whether the instance has a given tag.
Instance:IsAncestorOfbooleanReturns true if an Instance is an ancestor of the given descendant.
Instance:IsDescendantOfbooleanReturns true if an Instance is a descendant of the given ancestor.
Instance:isDescendantOfboolean
Instance:IsPropertyModifiedbooleanReturns true if the value stored in the specified property is not equal to the code-instantiated default.
Instance:QueryDescendantsInstancesReturns an array containing all descendants of the instance that match the selector string.
Instance:Remove()Sets the object's Parent to nil, and does the same for all its descendants.
Instance:remove()
Instance:RemoveTag()Removes a tag from the instance.
Instance:ResetPropertyToDefault()Resets a property to its default value.
Instance:SetAttribute()Sets the attribute with the given name to the given value.
Instance:WaitForChildInstanceReturns the child of the Instance with the given name. If the child does not exist, it will yield the current thread until it does.

Inherited from Object

NameType / ReturnsDescription
Object:GetPropertyChangedSignalRBXScriptSignalGet an event that fires when a given property of the object changes.
Object:IsAbooleanReturns true if an object's class matches or inherits from a given class.
Object:isAboolean

Events

Inherited from Instance

NameType / ReturnsDescription
Instance.AncestryChangedFires when the Instance.Parent property of this object or one of its ancestors is changed.
Instance.AttributeChangedFires whenever an attribute is changed on the Instance.
Instance.ChildAddedFires after an object is parented to this Instance.
Instance.childAdded
Instance.ChildRemovedFires after a child is removed from this Instance.
Instance.DescendantAddedFires after a descendant is added to the Instance.
Instance.DescendantRemovingFires immediately before a descendant of the Instance is removed.
Instance.DestroyingFires immediately before (or is deferred until after) the instance is destroyed via Instance:Destroy().
Instance.StyledPropertiesChangedFires whenever any style property is changed on the instance, including when a property is set to nil.

Inherited from Object

NameType / ReturnsDescription
Object.ChangedFires immediately after a property of the object changes, with some limitations.