39 min read

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

Workspace

Inherits from: WorldRoot → Model → PVInstance → Instance → Object

The core job of Workspace is to hold objects that exist in the 3D world, effectively BaseParts and Attachments. While such objects are descendant of Workspace, they will be active. For BaseParts, this means they will be rendered, and physically interact with other parts and the world. For Attachments, this means that objects adorned to them, such as ParticleEmitters, Beams, and BillboardGuis, will render.

Understanding this behavior is important, as it means objects can be removed from Workspace when they are not needed. For example, map Models can be removed when a different map is being played on. Objects that are not immediately needed in the 3D world are generally stored in ReplicatedStorage or ServerStorage.

In its role as the holder of active 3D objects, Workspace includes a number of useful functions related to parts, their positions, and joints between them.

Accessing the Workspace

Workspace can be accessed several ways, all of which are valid.

Notes

(0, 0, 0) position when parented to Workspace without an adornee otherwise being set.

Inherits from: WorldRoot

Memory category: BaseParts

Tags: NotCreatable, Service

Properties

NameType / ReturnsDescription
Workspace.AirDensityfloatThe air density at ground level, used in the aerodynamic force model.
Workspace.AirTurbulenceIntensityfloatControls the strength of turbulence present in the wind velocity field, affecting the aerodynamic force model.
Workspace.AllowThirdPartySalesbooleanDetermines whether assets created by other users can be sold in the game.
Workspace.AuthorityModeAuthorityModeSets the server authority mode.
Workspace.AvatarUnificationModeAvatarUnificationModeEnables the R6 to R15 adapter, allowing R15 avatars to join R6 experiences.
Workspace.ClientAnimatorThrottlingClientAnimatorThrottlingModeSpecifies the animation throttling mode for the local client.
Workspace.CurrentCameraCameraThe Camera object being used by the local player.
Workspace.DistributedGameTimedoubleThe amount of time, in seconds, that the game has been running.
Workspace.EnableSLIMAvatarsRolloutStateControls whether SLIM rendering is used for avatars in the experience.
Workspace.FallenPartsDestroyHeightfloatDetermines the height at which falling BaseParts and their ancestor Models are removed from Workspace.
Workspace.FallHeightEnabledbooleanControls whether parts that fall below Workspace.FallenPartsDestroyHeight are automatically destroyed.
Workspace.FilteringEnabledbooleanDetermines whether changes made from the client will replicate to the server or not.
Workspace.FluidForcesFluidForcesDetermines whether the physics engine computes aerodynamic forces on BaseParts whose EnableFluidForces property is true.
Workspace.GlobalWindVector3Specifies the global wind vector for animated terrain grass, dynamic clouds, and particles.
Workspace.GravityfloatDetermines the acceleration due to gravity applied to falling BaseParts.
Workspace.IKControlConstraintSupportIKControlConstraintSupportEnables support for constraints for IKControls. If disabled, IKControls ignore physics constraints.
Workspace.ImprovedAnimationConstraintRolloutStateControls whether improved behavior is enabled for AnimationConstraints.
Workspace.ImprovedPhysicsReplicationRolloutStateControls whether the experience uses the improved physics replication path between the server and clients.
Workspace.InsertPointVector3The world position at which new objects are placed when inserted from the toolbox.
Workspace.InterpolationThrottlingInterpolationThrottlingModeDeprecated setting that configured the interpolation throttling mode; it no longer takes effect.
Workspace.LayeredClothingCacheOptimizationsRolloutStateControls whether layered clothing cache optimizations are enabled.
Workspace.LuauTypeCheckModeLuauTypeCheckModeSets the Luau type checking mode for scripts in the experience.
Workspace.MeshPartHeadsAndAccessoriesMeshPartHeadsAndAccessoriesSets whether character Heads and Accessories should be downloaded as MeshParts.
Workspace.MeshStreamingAndImprovedLodsRolloutStateControls whether the experience uses the new mesh streaming and improved LOD system.
Workspace.ModelStreamingBehaviorModelStreamingBehaviorControls how Models are replicated in experiences when instance streaming is enabled.
Workspace.NextGenerationReplicationRolloutStateWhen true, enables an alternate replication system that alters and improves how properties are replicated under the hood.
Workspace.NextGenerationReplicationAliasRolloutState
Workspace.PathfindingUseImprovedSearchPathfindingUseImprovedSearchControls whether an improved search algorithm is used by PathfindingService.
Workspace.PhysicsSteppingMethodPhysicsSteppingMethodSets how the solver will advance the physics simulation forward in time.
Workspace.PlayerCharacterDestroyBehaviorPlayerCharacterDestroyBehaviorControls whether the engine automatically calls Destroy() on a player's character when it is replaced and on the Player object when the player leaves.
Workspace.PlayerScriptsUseInputActionSystemRolloutStateControls whether the built-in player scripts are updated to use the Input Action System.
Workspace.PlayerScriptsUseInputActionSystemAliasRolloutState
Workspace.PredictiveStreamingModePredictiveStreamingModeControls whether the engine can make predictive streaming decisions.
Workspace.PrimalPhysicsSolverPrimalPhysicsSolverControls whether the experimental Primal Physics Solver is enabled.
Workspace.RejectCharacterDeletionsRejectCharacterDeletionsControls whether the server rejects attempts by clients to delete player characters from the workspace.
Workspace.RenderingCacheOptimizationsRenderingCacheOptimizationModeControls whether rendering cache optimizations are enabled.
Workspace.ReplicateInstanceDestroySettingReplicateInstanceDestroySettingControls how Instance:Destroy() calls are replicated from the server to clients.
Workspace.RetargetingAnimatorRetargetingModeControls whether animation retargeting is enabled for character animations.
Workspace.SandboxedInstanceModeSandboxedInstanceModeControls whether sandboxed instance mode (script capabilities) is enabled.
Workspace.SignalBehaviorSignalBehaviorConfigures when the engine resumes event handlers.
Workspace.SignalBehaviorAliasSignalBehavior
Workspace.StreamingEnabledbooleanWhether content streaming is enabled for the place.
Workspace.StreamingEnabledAliasboolean
Workspace.StreamingIntegrityModeStreamingIntegrityModeDetermines whether streaming integrity mode is active.
Workspace.StreamingMinRadiusintMinimum distance that content will be streamed to players with high priority.
Workspace.StreamingTargetRadiusintMaximum distance that content will be streamed to players.
Workspace.StreamOutBehaviorStreamOutBehaviorConfigures how the engine decides when to stream content away from players.
Workspace.TerrainTerrainA reference to the Terrain object parented to the Workspace.
Workspace.TouchesUseCollisionGroupsbooleanDetermines whether parts in different groups set to not collide will ignore collisions and touch events.
Workspace.UseFixedSimulationRolloutStateWhen true, enables RunService:BindToSimulation() which calls a function at a fixed frequency, updates physics stepping logic, and makes the RobloxGlobals.time() function return the fixed stepped frame time.
Workspace.UseFixedSimulationAliasRolloutState
Workspace.UseNewLuauTypeSolverRolloutStateControls whether the new Luau type solver is used for type inference.

Inherited from Model

NameType / ReturnsDescription
Model.LevelOfDetailModelLevelOfDetailSets the level of detail on the model for experiences with instance streaming enabled.
Model.ModelStreamingModeModelStreamingModeControls the model streaming behavior on Models when instance streaming is enabled.
Model.PrimaryPartBasePartThe primary part of the Model, or nil if not explicitly set.
Model.ScalefloatEditor-only property used to scale the model around its pivot. Setting this property will move the scale as though Model:ScaleTo() was called on it.
Model.WorldPivotCFrameDetermines where the pivot of a Model which does not have a set Model.PrimaryPart is located.

Inherited from PVInstance

NameType / ReturnsDescription
PVInstance.OriginCFrameEditor-only property that reads and sets the world CFrame of the PVInstance's pivot, moving the entire instance when changed from the Studio Properties window.
PVInstance.Pivot OffsetCFrameEditor-only property that displays and edits the pivot's CFrame relative to the instance, moving only the pivot and leaving the instance in place.

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

Workspace.AirDensity

The ground level (Y of 0) air density in RMU/stud³ units (see Roblox Units), used to calculate the aerodynamic force if Workspace.FluidForces is Experimental. The default corresponds to realistic sea level air density at standard temperature and pressure. Air density decays as the Y altitude increases, reaching 5% of its ground level value at 100,000 studs. Below Y of 0, the air density is fixed at the input value.

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryAirProperties
serialization{"can_load":true,"can_save":true}
capabilities["Physics","Environment"]
simulationAccesstrue

Workspace.AirTurbulenceIntensity

Controls the intensity of turbulence by determining the magnitude of fluctuations in wind velocities. Ranges from 0 to 1, with a value of 0 disabling turbulence and a value of 1 providing the most intense turbulence. The values of AirTurbulenceIntensity roughly correspond to the following levels:

The magnitude of the fluctuations at a fixed intensity scale linearly with the magnitude of the global wind, except in the case that the global wind is zero. When the global wind is zero, the magnitude of the fluctuations scale exponentially with AirTurbulenceIntensity, allowing low and high intensity turbulence to exist with wind velocities that still average out to zero.

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryAirProperties
serialization{"can_load":true,"can_save":true}
capabilities["Physics","Environment"]
simulationAccesstrue

Workspace.AllowThirdPartySales

This Workspace property determines whether assets created by other uses can be sold in the game.

FieldValue
typeboolean
tags["NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}
capabilities["Monetization"]

Workspace.AuthorityMode

Sets the server authority mode. See AuthorityMode for options.

FieldValue
typeAuthorityMode
security{"read":"RobloxScriptSecurity","write":"RobloxScriptSecurity"}
thread safetyReadSafe
categoryServer Authority
serialization{"can_load":true,"can_save":true}

Workspace.AvatarUnificationMode

When AvatarUnificationMode.Enabled, R15 avatars can join R6 experiences via the R6 to R15 adapter. R15 characters receive invisible adapter parts with R6-compatible names welded to their corresponding R15 parts, preserving R6-like scale and movement while enabling R15 features such as layered clothing and animatable heads. Only relevant when the experience's avatar type is set to R6.

FieldValue
typeAvatarUnificationMode
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}

Workspace.ClientAnimatorThrottling

Specifies the ClientAnimatorThrottlingMode to use for the local client.

When enabled, animations on remotely-simulated Model instances will begin to throttle. The throttler calculates throttling intensity using:

FieldValue
typeClientAnimatorThrottlingMode
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}
capabilities["Animation"]

Workspace.CurrentCamera

The Camera object being used by the local player.

How to use CurrentCamera

When looking for a client's Camera object, use this property rather than looking for a child of Workspace named "Camera".

When you set this property, all other Camera objects in the Workspace are destroyed, including the previous CurrentCamera. If you set this property to nil or to a camera that is not a descendant of the Workspace (or the CurrentCamera is otherwise destroyed), a new Camera will be created and assigned. Avoid these scenarios, as destroying the camera can have unintended consequences.

For more information, see Script the camera.

FieldValue
typeCamera
tags["NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["Basic"]

Workspace.DistributedGameTime

The amount of time, in seconds, that the game has been running.

Despite the title, this value is currently not 'Distributed' across the client and the server. Instead, on the server it represents how long the server has been running. On the client, it represents how long the client has been connected to the server.

Developers should not rely on the above behavior, and it is possible this property will be synchronized across clients and the server in the future.

Those looking for the time since the program started running should use the 'time' function instead. See below for a comparison between DistributedGameTime and its alternatives.

FieldValue
typedouble
tags["NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["Basic"]

Code samples: View on Creator Hub (Workspace-DistributedGameTime).

Workspace.EnableSLIMAvatars

This RolloutState property controls whether a SLIM model is generated for avatar characters in the experience. When enabled and instance streaming is active, avatars render using SLIM in the same way that setting Model.LevelOfDetail to SLIM works for other models.

When set to Enabled, avatars use SLIM rendering. When set to Disabled, avatars use the traditional rendering approach. Default follows the current engine-wide rollout state.

This property cannot be set through developer-facing Luau and must be set in Studio through the Properties window, Command Bar, or a plugin.

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

Workspace.FallenPartsDestroyHeight

This property determines the height at which the engine automatically removes falling BaseParts and their ancestor Models from Workspace by parenting them to nil. This is to prevent parts that have fallen off the map from continuing to fall forever.

If a part removed due to this behavior is the last part in a Model, that model will also be removed. This applies to all model ancestors of the part.

This property is clamped between -50,000 and 50,000 because BaseParts do not simulate or render properly at a great distance from the origin due to floating point inaccuracies.

This property can be read by scripts, but can only be set by plugins, the command bar, or the properties window in Studio.

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

Workspace.FallHeightEnabled

When false, the kill plane defined by Workspace.FallenPartsDestroyHeight is disabled and falling parts are not automatically removed. Defaults to true.

This property can be read by scripts but can only be set by plugins, the command bar, or the properties window in Studio.

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

Workspace.FilteringEnabled

Deprecated. This property is discontinued.

This property is discontinued and no longer takes effect.

FieldValue
typeboolean
tags["Hidden","NotReplicated","Deprecated"]
security{"read":"None","write":"PluginSecurity"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":false,"can_save":false}
capabilities["Basic"]

Workspace.FluidForces

With this property enabled, the physics engine computes aerodynamic forces on BaseParts whose EnableFluidForces property is true. The default, Default, disables aerodynamic forces. Note that this property cannot be set through developer-facing Luau and instead must be toggled in Studio.

FieldValue
typeFluidForces
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}

Workspace.GlobalWind

This property specifies the direction and strength that wind blows through the experience, affecting terrain grass, dynamic clouds, and particles. See the Global Wind article for details.

FieldValue
typeVector3
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}
capabilities["Basic"]
simulationAccesstrue

Workspace.Gravity

Determines the acceleration due to gravity applied to falling BaseParts. This value is measured in studs per second squared and by default is set to 196.2 studs/second2. By changing this value, developers can simulate the effects of lower or higher gravity in game.

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

Code samples: View on Creator Hub (Low-Gravity-Button).

Workspace.IKControlConstraintSupport

Enables support for constraints for IKControls. The Default value is the same as Enabled. If disabled, IKControls ignore physics constraints. See IKControl for additional details.

FieldValue
typeIKControlConstraintSupport
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}

Workspace.ImprovedAnimationConstraint

When enabled, AnimationConstraints use separate strength and damping settings for linear and angular motion. Default follows the default for this feature.

FieldValue
typeRolloutState
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}

Workspace.ImprovedPhysicsReplication

When enabled, the experience uses the improved physics replication path. Default follows the default for this feature.

FieldValue
typeRolloutState
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}

Workspace.InsertPoint

Stores the world-space position used when inserting new objects into the workspace via the Studio IDE.

FieldValue
typeVector3
tags["NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":false,"can_save":false}

Workspace.InterpolationThrottling

Deprecated. This property should not be used for new work.

This property has Physics read security and Plugin write security. It is hidden in the Studio Properties window. Do not use it for new work.

FieldValue
typeInterpolationThrottlingMode
tags["Hidden","NotReplicated","Deprecated"]
security{"read":"None","write":"PluginSecurity"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":false,"can_save":false}
capabilities["Physics"]

Workspace.LayeredClothingCacheOptimizations

Controls whether the engine caches layered clothing rendering data to improve performance for experiences with many characters wearing layered clothing. Default follows the current engine-wide rollout state.

FieldValue
typeRolloutState
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}
capabilities["AvatarAppearance"]

Workspace.LuauTypeCheckMode

Controls the Luau type checking mode applied to scripts in the experience. See LuauTypeCheckMode for the available modes.

FieldValue
typeLuauTypeCheckMode
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryScripting
serialization{"can_load":true,"can_save":true}
capabilities["PluginOrOpenCloud"]

Workspace.MeshPartHeadsAndAccessories

Sets whether character Heads and Accessories should be downloaded as MeshParts. The Default value is the same as Enabled. If this feature is enabled, built-in avatars will use MeshParts for the character's head and accessories.

FieldValue
typeMeshPartHeadsAndAccessories
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}

Workspace.MeshStreamingAndImprovedLods

This RolloutState property determines whether the experience uses the new mesh streaming and Wild Mesh Simplifier LOD system. When set to Enabled, mesh requests fetch the lowest quality LOD first and stream in higher detail over time. When set to Disabled, the legacy mesh loading behavior is used. Default follows the current engine-wide rollout state.

FieldValue
typeRolloutState
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}

Workspace.ModelStreamingBehavior

This ModelStreamingBehavior property controls how Models are replicated in experiences when instance streaming is enabled.

FieldValue
typeModelStreamingBehavior
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryStreaming
serialization{"can_load":true,"can_save":true}

Workspace.NextGenerationReplication

When true, enables an alternate replication system that alters and improves how properties are replicated under the hood; note that when true, you should not rely on the ordering of property replication and remote events.

FieldValue
typeRolloutState
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}

Workspace.NextGenerationReplicationAlias

FieldValue
typeRolloutState
tags["NotReplicated","NotScriptable"]
security{"read":"RobloxEngineSecurity","write":"RobloxEngineSecurity"}
thread safetyReadSafe
categoryServer Authority
serialization{"can_load":false,"can_save":false}

Workspace.PathfindingUseImprovedSearch

When Enabled, PathfindingService uses an improved pathfinding algorithm. Default follows the current engine-wide rollout state.

FieldValue
typePathfindingUseImprovedSearch
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}

Workspace.PhysicsSteppingMethod

Sets how the solver will advance the physics simulation forward in time. This option cannot be set through developer-facing Luau and must be set from the PhysicsSteppingMethod property of Workspace within Studio. See Adaptive Timestepping for details.

Note that when assemblies of different simulation rates become connected via Constraints or collisions, the combined mechanism will default to the highest simulation rate for stability.

FieldValue
typePhysicsSteppingMethod
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}

Workspace.PlayerCharacterDestroyBehavior

When enabled, the engine automatically calls Destroy() on a player's old character when it is replaced (for example, on respawn) and on the Player object itself when the player leaves the server.

FieldValue
typePlayerCharacterDestroyBehavior
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}

Workspace.PlayerScriptsUseInputActionSystem

Controls whether the built-in player scripts are updated to use the Input Action System. When enabled, the player scripts live under StarterPlayer (controlled by StarterPlayer.CreateDefaultPlayerModule) and the server is able to process player inputs.

FieldValue
typeRolloutState
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}

Workspace.PlayerScriptsUseInputActionSystemAlias

FieldValue
typeRolloutState
tags["NotReplicated","NotScriptable"]
security{"read":"RobloxEngineSecurity","write":"RobloxEngineSecurity"}
thread safetyReadSafe
categoryServer Authority
serialization{"can_load":false,"can_save":false}

Workspace.PredictiveStreamingMode

When enabled, the engine can prepare content for anticipated changes to a player's replication focus. This includes movement along likely paths, predicted spawn locations, and large changes in focus position. Default currently behaves like Disabled.

FieldValue
typePredictiveStreamingMode
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryStreaming
serialization{"can_load":true,"can_save":true}

Workspace.PrimalPhysicsSolver

The Primal Physics Solver is an experimental constraint solver that can improve accuracy in complex setup. Setting this property to Experimental enables it.

FieldValue
typePrimalPhysicsSolver
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}

Workspace.RejectCharacterDeletions

When enabled, the server ignores client requests to delete player character objects from the workspace, preventing exploits that attempt to abuse this replication path. Default is currently equivalent to Enabled.

FieldValue
typeRejectCharacterDeletions
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryNetworking
serialization{"can_load":true,"can_save":true}

Workspace.RenderingCacheOptimizations

Controls whether the engine caches rendering state data to reduce redundant per-frame work. When enabled, the renderer can skip recomputing state for static objects, improving frame rates in scenes with many parts.

FieldValue
typeRenderingCacheOptimizationMode
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}
capabilities["Physics"]

Workspace.ReplicateInstanceDestroySetting

Determines the replication behavior when Instance:Destroy() is called on the server. When Enabled, the engine uses improved replication semantics for instance destruction.

FieldValue
typeReplicateInstanceDestroySetting
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}

Workspace.Retargeting

Sets the animation retargeting mode. Retargeting adapts animations to character rigs of different proportions, allowing a single animation to play correctly on characters of varying sizes and shapes.

FieldValue
typeAnimatorRetargetingMode
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}
capabilities["Animation"]

Workspace.SandboxedInstanceMode

When set to Experimental, the engine enables sandboxed instance mode, which lets you use script capabilities.

FieldValue
typeSandboxedInstanceMode
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryPermissions
serialization{"can_load":true,"can_save":true}

Workspace.SignalBehavior

This property determines whether event handlers will be resumed immediately when the event fires, or deferred and then resumed at a later resumption point. Resumption points currently include:

For more information, see Deferred Events.

FieldValue
typeSignalBehavior
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":false,"can_save":false}

Workspace.SignalBehaviorAlias

FieldValue
typeSignalBehavior
tags["NotReplicated","NotScriptable"]
security{"read":"RobloxEngineSecurity","write":"RobloxEngineSecurity"}
thread safetyReadSafe
categoryServer Authority
serialization{"can_load":false,"can_save":false}

Workspace.StreamingEnabled

This property determines whether in-experience content streaming is enabled for the place. This property is not scriptable and therefore must be set on the Workspace object in Studio.

See also

FieldValue
typeboolean
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryStreaming
serialization{"can_load":true,"can_save":true}

Workspace.StreamingEnabledAlias

FieldValue
typeboolean
tags["NotReplicated","NotScriptable"]
security{"read":"RobloxEngineSecurity","write":"RobloxEngineSecurity"}
thread safetyReadSafe
categoryServer Authority
serialization{"can_load":false,"can_save":false}

Workspace.StreamingIntegrityMode

If instance streaming is enabled, an experience may behave in unintended ways if a player's character moves into a region of the world that has not been streamed to their client. The streaming integrity feature offers a way to avoid those potentially problematic situations.

FieldValue
typeStreamingIntegrityMode
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryStreaming
serialization{"can_load":true,"can_save":true}

Workspace.StreamingMinRadius

This property indicates the radius around the player's character or the current ReplicationFocus in which content will be streamed in at the highest priority. Defaults to 64 studs.

Care should be taken when increasing the default minimum radius since doing so will require more memory and more server bandwidth at the expense of other components.

See also

FieldValue
typeint
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryStreaming
serialization{"can_load":true,"can_save":true}

Workspace.StreamingTargetRadius

This property controls the maximum distance away from the player's character or the current ReplicationFocus in which content will be streamed in. Defaults to 1024 studs.

Note that the engine is allowed to retain previously loaded content beyond the target radius, memory permitting.

See also

FieldValue
typeint
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryStreaming
serialization{"can_load":true,"can_save":true}

Workspace.StreamOutBehavior

This property controls where content will be unloaded from the ReplicationFocus based on device memory conditions, or based on the streaming radius.

See also

FieldValue
typeStreamOutBehavior
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryStreaming
serialization{"can_load":true,"can_save":true}

Workspace.Terrain

This property is a reference to the Terrain object parented to the Workspace.

Terrain object within the Workspace hierarchy

See Environmental Terrain for more information.

FieldValue
typeTerrain
tags["ReadOnly","NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":false,"can_save":false}

Workspace.TouchesUseCollisionGroups

This property determines whether parts in different groups set to not collide will ignore collisions and touch events. By default, the value of this property is set to false.

When this property is enabled, parts in different groups set to not collide will also ignore the CanTouch property, similar to how BasePart.CanCollide is ignored. For more information on the behavior of CanTouch, please visit its property page.

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

Workspace.UseFixedSimulation

When true, enables RunService:BindToSimulation() which calls a function at a fixed frequency. Also updates physics stepping logic such that character controller updates and joint transforms are performed at a fixed frequency rather than once per frame, as well as makes the RobloxGlobals.time() function return the fixed stepped frame time.

FieldValue
typeRolloutState
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}

Workspace.UseFixedSimulationAlias

FieldValue
typeRolloutState
tags["NotReplicated","NotScriptable"]
security{"read":"RobloxEngineSecurity","write":"RobloxEngineSecurity"}
thread safetyReadSafe
categoryServer Authority
serialization{"can_load":false,"can_save":false}

Workspace.UseNewLuauTypeSolver

This RolloutState property controls whether the new Luau type solver is used for type inference and type checking in scripts. The new type solver provides improved accuracy and performance for type analysis. Note that Workspace.LuauTypeCheckMode controls the mode (strict, nonstrict, etc.) while this property controls which solver implementation is active. Default follows the current engine-wide rollout state.

FieldValue
typeRolloutState
tags["NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryScripting
serialization{"can_load":true,"can_save":true}

Methods

NameType / ReturnsDescription
Workspace:ApplyRecommendedStreamingSettingsbooleanApplies Roblox's recommended instance streaming settings to the Workspace.
Workspace:BreakJoints()Goes through all BaseParts given, breaking any joints connected to these parts.
Workspace:GetNumAwakePartsintReturns the number of BaseParts that are deemed physically active, due to being recently under the influence of physics.
Workspace:GetPhysicsThrottlingintReturns an integer, between 0 and 100, representing the percentage of real time that physics simulation is currently being throttled to.
Workspace:GetRealPhysicsFPSdoubleReturns the number of frames per second that physics is currently being simulated at.
Workspace:GetServerTimeNowdoubleReturns the server's Unix time in seconds.
Workspace:JoinToOutsiders()Creates joints between the specified Parts and any touching parts depending on the parts' surfaces and the specified joint creation mode.
Workspace:MakeJoints()Goes through all BaseParts given. If any part's side has a SurfaceType that can make a joint it will create a joint with any adjacent parts.
Workspace:PGSIsEnabledbooleanReturns true if the game has the PGS Physics solver enabled.
Workspace:UnjoinFromOutsiders()Breaks all joints between the specified BaseParts and other BaseParts.
Workspace:ZoomToExtents()Positions and zooms the Workspace.CurrentCamera to show the extent of BaseParts currently in the Workspace.

Inherited from WorldRoot

NameType / ReturnsDescription
WorldRoot:ArePartsTouchingOthersbooleanReturns true if any of the given BasePart are touching any other parts.
WorldRoot:BlockcastRaycastResult?Casts a block shape in a given direction and returns a RaycastResult if the shape hits a BasePart or Terrain cell.
WorldRoot:BulkMoveTo()Moves an array of BaseParts to an array of CFrames.
WorldRoot:CollisionGroupsAreCollidablebooleanReturns whether the two groups will collide in this world.
WorldRoot:CollisionGroupSetCollidable()Sets the collision status between two groups in this world.
WorldRoot:FindPartOnRayTupleReturns the first BasePart or Terrain cell intersecting with the given Ray.
WorldRoot:findPartOnRayTuple
WorldRoot:FindPartOnRayWithIgnoreListTupleReturns the first BasePart or Terrain cell intersecting with the given Ray that isn't in, nor is a descendant of an object in, the given ignore list.
WorldRoot:FindPartOnRayWithWhitelistTupleReturns the first BasePart or Terrain cell intersecting with the given Ray that is in, or is a descendant of an object in, the given inclusion list.
WorldRoot:FindPartsInRegion3ListReturns an array of BaseParts in the given Region3.
WorldRoot:findPartsInRegion3List
WorldRoot:FindPartsInRegion3WithIgnoreListListReturns an array of BaseParts in the given Region3 that aren't in, or a descendant of an entry in, the given ignore list.
WorldRoot:FindPartsInRegion3WithWhiteListListReturns an array of BaseParts in the given Region3 that are in, or descendant of an entry in, the given inclusion list.
WorldRoot:GetMaxCollisionGroupsintReturns the maximum number of collision groups in this world.
WorldRoot:GetPartBoundsInBoxListReturns an array of parts whose bounding boxes overlap a given box.
WorldRoot:GetPartBoundsInRadiusListReturns an array of parts whose bounding boxes overlap a given sphere.
WorldRoot:GetPartsInPartListReturns an array of parts whose occupied space is shared with the given part.
WorldRoot:GetRegisteredCollisionGroupsArrayReturns a table with info on all of this world's collision groups.
WorldRoot:IKMoveTo()Moves the specified part to the specified location via inverse kinematics rather than moving it there directly, to ensure any joints, constraints, or collisions that part is participating in remain physically satisfied.
WorldRoot:IsCollisionGroupRegisteredbooleanChecks if a collision group is registered in this world.
WorldRoot:IsRegion3EmptybooleanReturns a bool indicating whether there are no BaseParts within the given Region3.
WorldRoot:IsRegion3EmptyWithIgnoreListbooleanReturns a boolean indicating whether there are no BaseParts within the given Region3, ignoring any BaseParts that are descendants of the objects within the given ignore list.
WorldRoot:RaycastRaycastResult?Casts a ray using an origin, direction, and optional RaycastParams, then returns a RaycastResult if an eligible object or terrain intersects the ray.
WorldRoot:RegisterCollisionGroup()Registers a new collision group in this world with the given name.
WorldRoot:RenameCollisionGroup()Renames specified collision group in this world.
WorldRoot:ShapecastRaycastResult?Casts the shape of a given BasePart in a direction and returns a RaycastResult if the shape hits a BasePart or Terrain cell.
WorldRoot:SpherecastRaycastResult?Casts a spherical shape in a given direction and returns a RaycastResult if the shape hits a BasePart or Terrain cell.
WorldRoot:StepPhysics()Advances the simulation for parts in the world forward based on a specified time increment and an optional set of BaseParts.
WorldRoot:UnregisterCollisionGroup()Unregisters the collision group for the given name in this world.

Inherited from Model

NameType / ReturnsDescription
Model:AddPersistentPlayer()Sets this model to be persistent for the specified player. ModelStreamingMode must be set to PersistentPerPlayer for behavior to be changed as a result of addition.
Model:BreakJoints()Breaks connections between BaseParts, including surface connections with any adjacent parts, WeldConstraints and all Welds and other JointInstances.
Model:breakJoints()
Model:GetBoundingBoxTupleReturns a description of a volume that contains all parts of a Model.
Model:GetExtentsSizeVector3Returns the size of the smallest bounding box that contains all of the BaseParts in the Model, aligned with the Model.PrimaryPart if it is set.
Model:GetModelCFrameCFrameThis value historically returned the CFrame of a central position in the model.
Model:GetModelSizeVector3Returns the Vector3 size of the Model.
Model:GetPersistentPlayersListReturns all the Player objects that this model object is persistent for. Behavior varies based on whether this method is called from a Script or a LocalScript.
Model:GetPrimaryPartCFrameCFrameReturns the CFrame of the model's Model.PrimaryPart. This function will throw an error if no primary part exists for the Model.
Model:GetScalefloatReturns the canonical scale of the model, which defaults to 1 for newly created models and will change as it is scaled via Model:ScaleTo().
Model:MakeJoints()Goes through all BaseParts in the Model. If any part's side has a SurfaceType that can make a joint it will create a joint with any adjacent parts.
Model:makeJoints()
Model:move()
Model:MoveTo()Moves the PrimaryPart to the given position. If a primary part has not been specified, the root part of the model will be used.
Model:moveTo()
Model:RemovePersistentPlayer()Makes this model no longer persistent for the specified player. ModelStreamingMode must be set to PersistentPerPlayer for behavior to be changed as a result of removal.
Model:ResetOrientationToIdentity()Resets the rotation of the model's parts to the previously set identity rotation, which is done through the Model:SetIdentityOrientation() method.
Model:ScaleTo()Sets the scale factor of the model, adjusting the sizing and location of all descendant Instances such that they have that scale factor relative to their initial sizes and locations when scale factor was 1.
Model:SetIdentityOrientation()Sets the identity rotation of the given model, allowing you to reset the rotation of the entire model later, through the use of the ResetOrientationToIdentity method.
Model:SetPrimaryPartCFrame()Sets the BasePart.CFrame of the model's Model.PrimaryPart. All other parts in the model will also be moved and will maintain their orientation and offset respective to the Model.PrimaryPart.
Model:TranslateBy()Shifts a Model by the given Vector3 offset, preserving the model's orientation. If another BasePart or Terrain already exists at the new position then the Model will overlap said object.

Inherited from PVInstance

NameType / ReturnsDescription
PVInstance:GetPivotCFrameGets the pivot of a PVInstance.
PVInstance:PivotTo()Transforms the PVInstance along with all of its descendant PVInstances such that the pivot is now located at the specified CFrame.

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

Workspace:ApplyRecommendedStreamingSettings

Applies the current recommended instance streaming settings to the Workspace. Only settings that differ from their recommended values are changed.

Returns

TypeDescription
booleantrue if one or more streaming properties were changed; false if every value already matched its recommended setting.
FieldValue
securityPluginSecurity
thread safetyUnsafe

Workspace:BreakJoints

Deprecated. This method is deprecated. Do not use it for new work.

Goes through all BaseParts given, breaking any joints connected to these parts. This function will break any of the following types of joints:

Unlike Model:MakeJoints(), this function requires an array of BaseParts as a parameter. This array is given as follows:

local Workspace = game:GetService("Workspace")

Workspace:BreakJoints({part1, part2, part3})

Note, this function cannot be used in developer-facing Luau and will only function in plugins.

Parameters

NameTypeDefaultDescription
objectsInstancesAn array of BaseParts for whom joints are to be broken.

Returns

TypeDescription
()
FieldValue
tags["Deprecated"]
securityPluginSecurity
thread safetyUnsafe

Workspace:GetNumAwakeParts

Returns the number of BaseParts that are deemed physically active, due to being recently under the influence of physics.

This function provides a measure of how many BaseParts are being influenced by, or recently under the influence of, physical forces.

local Workspace = game:GetService("Workspace")

print(Workspace:GetNumAwakeParts())

In order to ensure good performance, the engine sets BaseParts in which physics are not being applied to a "sleeping" state. BaseParts with BasePart.Anchored set to true, for example, will always be sleeping as physics doesn't apply to them. When a force is applied to a non‑anchored BasePart, an "awake" state will be applied. Whilst a BasePart is awake, the physics engine will perform continuous calculations to ensure physical forces interact correctly with the part. Once the BasePart is no longer subject to physical forces, it will revert to a "sleeping" state.

Returns

TypeDescription
intThe number of awake parts.
FieldValue
securityNone
thread safetySafe
capabilities["Basic"]

Workspace:GetPhysicsThrottling

Returns an integer, between 0 and 100, representing the percentage of real time that physics simulation is currently being throttled to. Physics throttling occurs when the physics engine detects it cannot keep up with the game in real time. When physics is being throttled, it will update less frequently causing BaseParts to appear to move slower.

Objects associated with Humanoids are exempt from physics throttling.

See also

Returns

TypeDescription
intThe percentage of real time that physics simulation is currently being throttled to.
FieldValue
securityNone
thread safetySafe
capabilities["Basic"]

Workspace:GetRealPhysicsFPS

Returns the number of frames per second that physics is currently being simulated at.

Using GetRealPhysicsFPS to combat exploiters

A common use of this function is to detect if exploiters are increasing their local physics frame rate to move faster. This is generally done by comparing the result returned by a client's GetRealPhysicsFPS to a maximum that will not be breached in normal circumstances (usually 65 or 70). If this limit is breached, developers can use the Player:Kick() function to remove that Player from the game. It is important to remember that, although this practice may be effective sometimes, client-side anti-exploiter measures are never 100% reliable.

Returns

TypeDescription
doubleReturns the number of frames per second that physics is currently being simulated at.
FieldValue
securityNone
thread safetySafe
capabilities["Basic"]

Code samples: View on Creator Hub (Workspace-GetRealPhysicsFPS1).

Workspace:GetServerTimeNow

This method returns the client's best approximation of the current time on the server. It is useful for creating synchronized experiences, as every client will get roughly the same results regardless of their timezone or local clock.

This method returns a Unix timestamp, similar to os.time(), that you can use with os.date() or DateTime.fromUnixTimestamp(). The timestamp is smoothed so that:

This method is useful for making sure an event starts at the right real-world time and for periodic adjustments to keep a series of events in sync. For benchmarking or other use cases that require higher precision, consider os.clock().

This method relies on the server, so calling it from a client that isn't connected will throw an error. Also note that this method is not suitable for things like timed rewards, as it is not secure compared to tracking such timers on the server.

See also

Returns

TypeDescription
doubleThe estimated Unix timestamp on the server.
FieldValue
securityNone
thread safetySafe
capabilities["Basic"]

Workspace:JoinToOutsiders

This function creates joints between the specified Parts and any touching parts depending on the parts' surfaces and the specified joint creation mode.

This function creates joints between the specified Parts and any planar touching surfaces, depending on the parts' surfaces and the specified joint creation mode.

The first parameter is an array of BaseParts. Joints will only be created between the parts in the array and not in the array. Joints will not be created between the parts in the array.

The second parameter is a JointCreationMode that determines how joints will be created. Passing in either enum value, Enum.JointCreationMode.All or Enum.JointCreationMode.Surface, has the same behavior which equates to Join Always

This function is used by the Roblox Studio Move tool when the user finishes moving a selection. In conjunction with Plugin:GetJoinMode() and Workspace:UnjoinFromOutsiders() it can be used to retain join functionality when developing custom studio build tools. See the snippets below for an example.

local Workspace = game:GetService("Workspace")

-- Finished moving a selection; make joints
local function finishedMovingParts(parts)
	local joinMode = Plugin:GetJoinMode()
	Workspace:JoinToOutsiders(parts, joinMode)
end
local Workspace = game:GetService("Workspace")

-- Started moving a selection; break joints
local function startMovingParts(parts)
	Workspace:UnjoinFromOutsiders(parts)
end

Parameters

NameTypeDefaultDescription
objectsInstancesAn array of BaseParts for whom joints are to be made.
jointTypeJointCreationModeThe JointCreationMode to be used. Passing in Enum.JointCreationMode.All or Enum.JointCreationMode.Surface has the same behavior which equates to Join Always.

Returns

TypeDescription
()
FieldValue
securityNone
thread safetyUnsafe
capabilities["Physics"]

Workspace:MakeJoints

Deprecated. This method is deprecated. Do not use it for new work.

Deprecated

SurfaceType based joining is deprecated, do not use MakeJoints for new projects. WeldConstraints and HingeConstraints should be used instead.

Goes through all Parts given. If any part's side has a SurfaceType that can make a joint it will create a joint with any adjacent parts.

Joints will be created between the specified Parts and any planar touching surfaces, depending on the parts' surfaces.

Unlike Model:MakeJoints(), this function requires an array of parts as a parameter. This array is given as follows:

local Workspace = game:GetService("Workspace")

Workspace:MakeJoints({part1, part2, part3})

Joints are broken if enough force is applied to them due to an Explosion, unless a ForceField object is parented to the BasePart or ancestor Model. For this reason, they are often used to make simple destructible buildings and other models.

Parameters

NameTypeDefaultDescription
objectsInstancesAn array of parts for whom joints are to be made.

Returns

TypeDescription
()
FieldValue
tags["Deprecated"]
securityPluginSecurity
thread safetyUnsafe

Workspace:PGSIsEnabled

Returns true if the game has the PGS Physics solver enabled.

As Workspace.PGSPhysicsSolverEnabled cannot be accessed by scripts, the PGSIsEnabled function allows developers to tell which physics solver the game is using.

Returns

TypeDescription
booleanTrue if the PGS solver is enabled.
FieldValue
securityNone
thread safetyUnsafe
capabilities["Basic"]

Workspace:UnjoinFromOutsiders

Breaks all joints between the specified BaseParts and other BaseParts.

This function requires an array of BaseParts. Note, joints will not be broken between these BaseParts (each other), only between these BaseParts and other BaseParts not in the array.

This function is used by the Roblox Studio Move tool when the user starts moving a selection. In conjunction with Plugin:GetJoinMode() and Workspace:JoinToOutsiders() it can be used to retain join functionality when developing custom Studio build tools. See the snippets below for an example.

local Workspace = game:GetService("Workspace")

-- Finished moving a selection; make joints
local function finishedMovingParts(parts)
	local joinMode = Plugin:GetJoinMode()
	Workspace:JoinToOutsiders(parts, joinMode)
end
local Workspace = game:GetService("Workspace")

-- Started moving a selection; break joints
local function startMovingParts(parts)
	Workspace:UnjoinFromOutsiders(parts)
end

Parameters

NameTypeDefaultDescription
objectsInstancesAn array of BaseParts for whom joints are to be broken.

Returns

TypeDescription
()
FieldValue
securityNone
thread safetyUnsafe
capabilities["Physics"]

Workspace:ZoomToExtents

Positions and zooms the Workspace.CurrentCamera to show the extent of BaseParts currently in the Workspace. It exhibits similar behavior to the "focus" command but it shows the extents of the Workspace rather than the currently selected object.

This function cannot be used in developer-facing Luau but will function in the Command Bar or plugins.

Returns

TypeDescription
()
FieldValue
securityPluginSecurity
thread safetyUnsafe

Events

NameType / ReturnsDescription
Workspace.PersistentLoadedFires when persistent models have been sent to the specified player.

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.

Workspace.PersistentLoaded

This event fires every time a player has been sent all current persistent models and part-less atomic models. The player parameter indicates which player has received all applicable instances.

Note that experience loading happens before persistent loading, and firing of the DataModel.Loaded event does not indicate that all persistent models are present.

Parameters

NameTypeDefaultDescription
playerPlayerThe player who has received all current persistent models and part-less atomic models.
FieldValue
securityNone