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.
workspacegame:GetService("Workspace")game.Workspace
Notes
- Objects that require adornment, such as
ParticleEmittersandBillboardGuis, will be at the
(0, 0, 0) position when parented to Workspace without an adornee otherwise being set.
- The
Model:MakeJoints()andModel:BreakJoints()methods inherited from theModelclass are overridden byWorkspace:MakeJoints()andWorkspace:BreakJoints()which can only be used in plugins. - It is impossible to delete
Workspace. Workspaceautomatically cleans upBasePartsthat fall beneathFallenPartsDestroyHeight.- A client's current
Cameraobject can be accessed using theWorkspace.CurrentCameraproperty. - The
Terrainobject can be accessed using theWorkspace.Terrainproperty.
Inherits from: WorldRoot
Memory category: BaseParts
Tags: NotCreatable, Service
Properties
| Name | Type / Returns | Description |
|---|---|---|
| Workspace.AirDensity | float | The air density at ground level, used in the aerodynamic force model. |
| Workspace.AirTurbulenceIntensity | float | Controls the strength of turbulence present in the wind velocity field, affecting the aerodynamic force model. |
| Workspace.AllowThirdPartySales | boolean | Determines whether assets created by other users can be sold in the game. |
| Workspace.AuthorityMode | AuthorityMode | Sets the server authority mode. |
| Workspace.AvatarUnificationMode | AvatarUnificationMode | Enables the R6 to R15 adapter, allowing R15 avatars to join R6 experiences. |
| Workspace.ClientAnimatorThrottling | ClientAnimatorThrottlingMode | Specifies the animation throttling mode for the local client. |
| Workspace.CurrentCamera | Camera | The Camera object being used by the local player. |
| Workspace.DistributedGameTime | double | The amount of time, in seconds, that the game has been running. |
| Workspace.EnableSLIMAvatars | RolloutState | Controls whether SLIM rendering is used for avatars in the experience. |
| Workspace.FallenPartsDestroyHeight | float | Determines the height at which falling BaseParts and their ancestor Models are removed from Workspace. |
| Workspace.FallHeightEnabled | boolean | Controls whether parts that fall below Workspace.FallenPartsDestroyHeight are automatically destroyed. |
| Workspace.FilteringEnabled | boolean | Determines whether changes made from the client will replicate to the server or not. |
| Workspace.FluidForces | FluidForces | Determines whether the physics engine computes aerodynamic forces on BaseParts whose EnableFluidForces property is true. |
| Workspace.GlobalWind | Vector3 | Specifies the global wind vector for animated terrain grass, dynamic clouds, and particles. |
| Workspace.Gravity | float | Determines the acceleration due to gravity applied to falling BaseParts. |
| Workspace.IKControlConstraintSupport | IKControlConstraintSupport | Enables support for constraints for IKControls. If disabled, IKControls ignore physics constraints. |
| Workspace.ImprovedAnimationConstraint | RolloutState | Controls whether improved behavior is enabled for AnimationConstraints. |
| Workspace.ImprovedPhysicsReplication | RolloutState | Controls whether the experience uses the improved physics replication path between the server and clients. |
| Workspace.InsertPoint | Vector3 | The world position at which new objects are placed when inserted from the toolbox. |
| Workspace.InterpolationThrottling | InterpolationThrottlingMode | Deprecated setting that configured the interpolation throttling mode; it no longer takes effect. |
| Workspace.LayeredClothingCacheOptimizations | RolloutState | Controls whether layered clothing cache optimizations are enabled. |
| Workspace.LuauTypeCheckMode | LuauTypeCheckMode | Sets the Luau type checking mode for scripts in the experience. |
| Workspace.MeshPartHeadsAndAccessories | MeshPartHeadsAndAccessories | Sets whether character Heads and Accessories should be downloaded as MeshParts. |
| Workspace.MeshStreamingAndImprovedLods | RolloutState | Controls whether the experience uses the new mesh streaming and improved LOD system. |
| Workspace.ModelStreamingBehavior | ModelStreamingBehavior | Controls how Models are replicated in experiences when instance streaming is enabled. |
| Workspace.NextGenerationReplication | RolloutState | When true, enables an alternate replication system that alters and improves how properties are replicated under the hood. |
| Workspace.NextGenerationReplicationAlias | RolloutState | |
| Workspace.PathfindingUseImprovedSearch | PathfindingUseImprovedSearch | Controls whether an improved search algorithm is used by PathfindingService. |
| Workspace.PhysicsSteppingMethod | PhysicsSteppingMethod | Sets how the solver will advance the physics simulation forward in time. |
| Workspace.PlayerCharacterDestroyBehavior | PlayerCharacterDestroyBehavior | Controls 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.PlayerScriptsUseInputActionSystem | RolloutState | Controls whether the built-in player scripts are updated to use the Input Action System. |
| Workspace.PlayerScriptsUseInputActionSystemAlias | RolloutState | |
| Workspace.PredictiveStreamingMode | PredictiveStreamingMode | Controls whether the engine can make predictive streaming decisions. |
| Workspace.PrimalPhysicsSolver | PrimalPhysicsSolver | Controls whether the experimental Primal Physics Solver is enabled. |
| Workspace.RejectCharacterDeletions | RejectCharacterDeletions | Controls whether the server rejects attempts by clients to delete player characters from the workspace. |
| Workspace.RenderingCacheOptimizations | RenderingCacheOptimizationMode | Controls whether rendering cache optimizations are enabled. |
| Workspace.ReplicateInstanceDestroySetting | ReplicateInstanceDestroySetting | Controls how Instance:Destroy() calls are replicated from the server to clients. |
| Workspace.Retargeting | AnimatorRetargetingMode | Controls whether animation retargeting is enabled for character animations. |
| Workspace.SandboxedInstanceMode | SandboxedInstanceMode | Controls whether sandboxed instance mode (script capabilities) is enabled. |
| Workspace.SignalBehavior | SignalBehavior | Configures when the engine resumes event handlers. |
| Workspace.SignalBehaviorAlias | SignalBehavior | |
| Workspace.StreamingEnabled | boolean | Whether content streaming is enabled for the place. |
| Workspace.StreamingEnabledAlias | boolean | |
| Workspace.StreamingIntegrityMode | StreamingIntegrityMode | Determines whether streaming integrity mode is active. |
| Workspace.StreamingMinRadius | int | Minimum distance that content will be streamed to players with high priority. |
| Workspace.StreamingTargetRadius | int | Maximum distance that content will be streamed to players. |
| Workspace.StreamOutBehavior | StreamOutBehavior | Configures how the engine decides when to stream content away from players. |
| Workspace.Terrain | Terrain | A reference to the Terrain object parented to the Workspace. |
| Workspace.TouchesUseCollisionGroups | boolean | Determines whether parts in different groups set to not collide will ignore collisions and touch events. |
| Workspace.UseFixedSimulation | RolloutState | When 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.UseFixedSimulationAlias | RolloutState | |
| Workspace.UseNewLuauTypeSolver | RolloutState | Controls whether the new Luau type solver is used for type inference. |
Inherited from Model
| Name | Type / Returns | Description |
|---|---|---|
| Model.LevelOfDetail | ModelLevelOfDetail | Sets the level of detail on the model for experiences with instance streaming enabled. |
| Model.ModelStreamingMode | ModelStreamingMode | Controls the model streaming behavior on Models when instance streaming is enabled. |
| Model.PrimaryPart | BasePart | The primary part of the Model, or nil if not explicitly set. |
| Model.Scale | float | Editor-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.WorldPivot | CFrame | Determines where the pivot of a Model which does not have a set Model.PrimaryPart is located. |
Inherited from PVInstance
| Name | Type / Returns | Description |
|---|---|---|
| PVInstance.Origin | CFrame | Editor-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 Offset | CFrame | Editor-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
| Name | Type / Returns | Description |
|---|---|---|
| Instance.Archivable | boolean | Determines if an Instance and its descendants can be cloned using Instance:Clone(), and can be saved/published. |
| Instance.archivable | boolean | |
| Instance.Capabilities | SecurityCapabilities | The set of capabilities allowed to be used for scripts inside this container. |
| Instance.IsInSandbox | boolean | Indicates whether the instance is inside a sandboxed container. |
| Instance.Name | string | A non-unique identifier of the Instance. |
| Instance.Parent | Instance | Determines the hierarchical parent of the Instance. |
| Instance.PredictionMode | PredictionMode | Reflects the client-side prediction mode applied to the instance under server-authoritative physics. |
| Instance.RobloxLocked | boolean | A deprecated property that used to protect CoreGui objects. |
| Instance.Sandboxed | boolean | When enabled, the instance can only access abilities in its Capabilities list. |
| Instance.UniqueId | UniqueId | A unique identifier for the instance. |
Inherited from Object
| Name | Type / Returns | Description |
|---|---|---|
| Object.ClassName | string | A read-only string representing the class this Object belongs to. |
| Object.className | string |
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.
| Field | Value |
|---|---|
| type | float |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | AirProperties |
| serialization | {"can_load":true,"can_save":true} |
| capabilities | ["Physics","Environment"] |
| simulationAccess | true |
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:
(0, 0.4]: Low intensity turbulence(0.4, 0.7]: Moderate intensity turbulence(0.7, 1]: High intensity turbulence
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.
| Field | Value |
|---|---|
| type | float |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | AirProperties |
| serialization | {"can_load":true,"can_save":true} |
| capabilities | ["Physics","Environment"] |
| simulationAccess | true |
Workspace.AllowThirdPartySales
This Workspace property determines whether assets created by other uses can be sold in the game.
| Field | Value |
|---|---|
| type | boolean |
| tags | ["NotReplicated"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| serialization | {"can_load":true,"can_save":true} |
| capabilities | ["Monetization"] |
Workspace.AuthorityMode
Sets the server authority mode. See AuthorityMode for options.
| Field | Value |
|---|---|
| type | AuthorityMode |
| security | {"read":"RobloxScriptSecurity","write":"RobloxScriptSecurity"} |
| thread safety | ReadSafe |
| category | Server 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.
| Field | Value |
|---|---|
| type | AvatarUnificationMode |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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:
| Field | Value |
|---|---|
| type | ClientAnimatorThrottlingMode |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | Camera |
| tags | ["NotReplicated"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Data |
| 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.
| Field | Value |
|---|---|
| type | double |
| tags | ["NotReplicated"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Data |
| 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.
| Field | Value |
|---|---|
| type | RolloutState |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Streaming |
| 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.
| Field | Value |
|---|---|
| type | float |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | boolean |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | boolean |
| tags | ["Hidden","NotReplicated","Deprecated"] |
| security | {"read":"None","write":"PluginSecurity"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | FluidForces |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | Vector3 |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| serialization | {"can_load":true,"can_save":true} |
| capabilities | ["Basic"] |
| simulationAccess | true |
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.
| Field | Value |
|---|---|
| type | float |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| serialization | {"can_load":true,"can_save":true} |
| capabilities | ["Basic"] |
| simulationAccess | true |
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.
| Field | Value |
|---|---|
| type | IKControlConstraintSupport |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | RolloutState |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | RolloutState |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | Vector3 |
| tags | ["NotReplicated"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Data |
| 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.
| Field | Value |
|---|---|
| type | InterpolationThrottlingMode |
| tags | ["Hidden","NotReplicated","Deprecated"] |
| security | {"read":"None","write":"PluginSecurity"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | RolloutState |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | LuauTypeCheckMode |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Scripting |
| 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.
| Field | Value |
|---|---|
| type | MeshPartHeadsAndAccessories |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | RolloutState |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| serialization | {"can_load":true,"can_save":true} |
Workspace.ModelStreamingBehavior
This ModelStreamingBehavior property controls how Models are replicated in experiences when instance streaming is enabled.
| Field | Value |
|---|---|
| type | ModelStreamingBehavior |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Streaming |
| 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.
| Field | Value |
|---|---|
| type | RolloutState |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| serialization | {"can_load":true,"can_save":true} |
Workspace.NextGenerationReplicationAlias
| Field | Value |
|---|---|
| type | RolloutState |
| tags | ["NotReplicated","NotScriptable"] |
| security | {"read":"RobloxEngineSecurity","write":"RobloxEngineSecurity"} |
| thread safety | ReadSafe |
| category | Server 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.
| Field | Value |
|---|---|
| type | PathfindingUseImprovedSearch |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | PhysicsSteppingMethod |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | PlayerCharacterDestroyBehavior |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | RolloutState |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| serialization | {"can_load":true,"can_save":true} |
Workspace.PlayerScriptsUseInputActionSystemAlias
| Field | Value |
|---|---|
| type | RolloutState |
| tags | ["NotReplicated","NotScriptable"] |
| security | {"read":"RobloxEngineSecurity","write":"RobloxEngineSecurity"} |
| thread safety | ReadSafe |
| category | Server 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.
| Field | Value |
|---|---|
| type | PredictiveStreamingMode |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Streaming |
| 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.
| Field | Value |
|---|---|
| type | PrimalPhysicsSolver |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | RejectCharacterDeletions |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Networking |
| 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.
| Field | Value |
|---|---|
| type | RenderingCacheOptimizationMode |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | ReplicateInstanceDestroySetting |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | AnimatorRetargetingMode |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | SandboxedInstanceMode |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Permissions |
| 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:
- Input processing (resumes once per input to be processed, see
UserInputService) RunService.PreRender- Legacy waiting script resumption such as
wait(),spawn(), anddelay() RunService.PreAnimationRunService.PreSimulationRunService.PostSimulation- Waiting script resumption such as
task.wait(),task.spawn(), andtask.delay() RunService.HeartbeatDataModel.BindToClose
For more information, see Deferred Events.
| Field | Value |
|---|---|
| type | SignalBehavior |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| serialization | {"can_load":false,"can_save":false} |
Workspace.SignalBehaviorAlias
| Field | Value |
|---|---|
| type | SignalBehavior |
| tags | ["NotReplicated","NotScriptable"] |
| security | {"read":"RobloxEngineSecurity","write":"RobloxEngineSecurity"} |
| thread safety | ReadSafe |
| category | Server 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
| Field | Value |
|---|---|
| type | boolean |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Streaming |
| serialization | {"can_load":true,"can_save":true} |
Workspace.StreamingEnabledAlias
| Field | Value |
|---|---|
| type | boolean |
| tags | ["NotReplicated","NotScriptable"] |
| security | {"read":"RobloxEngineSecurity","write":"RobloxEngineSecurity"} |
| thread safety | ReadSafe |
| category | Server 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.
| Field | Value |
|---|---|
| type | StreamingIntegrityMode |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Streaming |
| 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
Workspace.StreamingEnabledwhich controls whether content streaming is enabledWorkspace.StreamingTargetRadiusWorkspace.StreamingIntegrityMode
| Field | Value |
|---|---|
| type | int |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Streaming |
| 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
Workspace.StreamingEnabledwhich controls whether content streaming is enabledWorkspace.StreamingMinRadiusWorkspace.StreamingIntegrityMode
| Field | Value |
|---|---|
| type | int |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Streaming |
| 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
Workspace.StreamingEnabledwhich controls whether content streaming is enabledWorkspace.StreamingMinRadiusWorkspace.StreamingTargetRadiusWorkspace.StreamingIntegrityMode
| Field | Value |
|---|---|
| type | StreamOutBehavior |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Streaming |
| serialization | {"can_load":true,"can_save":true} |
Workspace.Terrain
This property is a reference to the Terrain object parented to the Workspace.

See Environmental Terrain for more information.
| Field | Value |
|---|---|
| type | Terrain |
| tags | ["ReadOnly","NotReplicated"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | boolean |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| 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.
| Field | Value |
|---|---|
| type | RolloutState |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| serialization | {"can_load":true,"can_save":true} |
Workspace.UseFixedSimulationAlias
| Field | Value |
|---|---|
| type | RolloutState |
| tags | ["NotReplicated","NotScriptable"] |
| security | {"read":"RobloxEngineSecurity","write":"RobloxEngineSecurity"} |
| thread safety | ReadSafe |
| category | Server 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.
| Field | Value |
|---|---|
| type | RolloutState |
| tags | ["NotScriptable"] |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Scripting |
| serialization | {"can_load":true,"can_save":true} |
Methods
| Name | Type / Returns | Description |
|---|---|---|
| Workspace:ApplyRecommendedStreamingSettings | boolean | Applies Roblox's recommended instance streaming settings to the Workspace. |
| Workspace:BreakJoints | () | Goes through all BaseParts given, breaking any joints connected to these parts. |
| Workspace:GetNumAwakeParts | int | Returns the number of BaseParts that are deemed physically active, due to being recently under the influence of physics. |
| Workspace:GetPhysicsThrottling | int | Returns an integer, between 0 and 100, representing the percentage of real time that physics simulation is currently being throttled to. |
| Workspace:GetRealPhysicsFPS | double | Returns the number of frames per second that physics is currently being simulated at. |
| Workspace:GetServerTimeNow | double | Returns 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:PGSIsEnabled | boolean | Returns 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
| Name | Type / Returns | Description |
|---|---|---|
| WorldRoot:ArePartsTouchingOthers | boolean | Returns true if any of the given BasePart are touching any other parts. |
| WorldRoot:Blockcast | RaycastResult? | 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:CollisionGroupsAreCollidable | boolean | Returns whether the two groups will collide in this world. |
| WorldRoot:CollisionGroupSetCollidable | () | Sets the collision status between two groups in this world. |
| WorldRoot:FindPartOnRay | Tuple | Returns the first BasePart or Terrain cell intersecting with the given Ray. |
| WorldRoot:findPartOnRay | Tuple | |
| WorldRoot:FindPartOnRayWithIgnoreList | Tuple | Returns 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:FindPartOnRayWithWhitelist | Tuple | Returns 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:FindPartsInRegion3 | List | Returns an array of BaseParts in the given Region3. |
| WorldRoot:findPartsInRegion3 | List | |
| WorldRoot:FindPartsInRegion3WithIgnoreList | List | Returns an array of BaseParts in the given Region3 that aren't in, or a descendant of an entry in, the given ignore list. |
| WorldRoot:FindPartsInRegion3WithWhiteList | List | Returns an array of BaseParts in the given Region3 that are in, or descendant of an entry in, the given inclusion list. |
| WorldRoot:GetMaxCollisionGroups | int | Returns the maximum number of collision groups in this world. |
| WorldRoot:GetPartBoundsInBox | List | Returns an array of parts whose bounding boxes overlap a given box. |
| WorldRoot:GetPartBoundsInRadius | List | Returns an array of parts whose bounding boxes overlap a given sphere. |
| WorldRoot:GetPartsInPart | List | Returns an array of parts whose occupied space is shared with the given part. |
| WorldRoot:GetRegisteredCollisionGroups | Array | Returns 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:IsCollisionGroupRegistered | boolean | Checks if a collision group is registered in this world. |
| WorldRoot:IsRegion3Empty | boolean | Returns a bool indicating whether there are no BaseParts within the given Region3. |
| WorldRoot:IsRegion3EmptyWithIgnoreList | boolean | Returns 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:Raycast | RaycastResult? | 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:Shapecast | RaycastResult? | Casts the shape of a given BasePart in a direction and returns a RaycastResult if the shape hits a BasePart or Terrain cell. |
| WorldRoot:Spherecast | RaycastResult? | 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
| Name | Type / Returns | Description |
|---|---|---|
| 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:GetBoundingBox | Tuple | Returns a description of a volume that contains all parts of a Model. |
| Model:GetExtentsSize | Vector3 | Returns 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:GetModelCFrame | CFrame | This value historically returned the CFrame of a central position in the model. |
| Model:GetModelSize | Vector3 | Returns the Vector3 size of the Model. |
| Model:GetPersistentPlayers | List | Returns 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:GetPrimaryPartCFrame | CFrame | Returns the CFrame of the model's Model.PrimaryPart. This function will throw an error if no primary part exists for the Model. |
| Model:GetScale | float | Returns 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
| Name | Type / Returns | Description |
|---|---|---|
| PVInstance:GetPivot | CFrame | Gets 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
| Name | Type / Returns | Description |
|---|---|---|
| Instance:AddTag | () | Applies a tag to the instance. |
| Instance:children | Instances | Returns an array of the object's children. |
| Instance:ClearAllChildren | () | This method destroys all of an instance's children. |
| Instance:Clone | Instance | Create a copy of an instance and all its descendants, ignoring instances that are not Archivable. |
| Instance:clone | Instance | |
| 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:FindFirstAncestor | Instance? | Returns the first ancestor of the Instance whose Instance.Name is equal to the given name. |
| Instance:FindFirstAncestorOfClass | Instance? | Returns the first ancestor of the Instance whose Object.ClassName is equal to the given className. |
| Instance:FindFirstAncestorWhichIsA | Instance? | Returns the first ancestor of the Instance for whom Object:IsA() returns true for the given className. |
| Instance:FindFirstChild | Instance? | Returns the first child of the Instance found with the given name. |
| Instance:findFirstChild | Instance | |
| Instance:FindFirstChildOfClass | Instance? | Returns the first child of the Instance whose ClassName is equal to the given class name. |
| Instance:FindFirstChildWhichIsA | Instance? | Returns the first child of the Instance for whom Object:IsA() returns true for the given className. |
| Instance:FindFirstDescendant | Instance? | Returns the first descendant found with the given Instance.Name. |
| Instance:GetActor | Actor? | Returns the Actor associated with the Instance, if any. |
| Instance:GetAttribute | Variant | Returns the value which has been assigned to the given attribute name. |
| Instance:GetAttributeChangedSignal | RBXScriptSignal | Returns an event that fires when the given attribute changes. |
| Instance:GetAttributes | Dictionary | Returns a dictionary of the instance's attributes. |
| Instance:GetChildren | Instances | Returns an array containing all of the instance's children. |
| Instance:getChildren | Instances | |
| Instance:GetDebugId | string | Returns a coded string of the debug ID used internally by Roblox. |
| Instance:GetDescendants | Instances | Returns an array containing all of the descendants of the instance. |
| Instance:GetFullName | string | Returns a string describing the instance's ancestry. |
| Instance:GetStyled | Variant | Returns the styled or explicitly modified value of the specified property, or else the default property value if it hasn't been styled/modified. |
| Instance:GetStyledPropertyChangedSignal | RBXScriptSignal | Returns an event that fires when the given style property changes on the instance. |
| Instance:GetTags | Array | Gets an array of all tags applied to the instance. |
| Instance:HasTag | boolean | Check whether the instance has a given tag. |
| Instance:IsAncestorOf | boolean | Returns true if an Instance is an ancestor of the given descendant. |
| Instance:IsDescendantOf | boolean | Returns true if an Instance is a descendant of the given ancestor. |
| Instance:isDescendantOf | boolean | |
| Instance:IsPropertyModified | boolean | Returns true if the value stored in the specified property is not equal to the code-instantiated default. |
| Instance:QueryDescendants | Instances | Returns 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:WaitForChild | Instance | Returns 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
| Name | Type / Returns | Description |
|---|---|---|
| Object:GetPropertyChangedSignal | RBXScriptSignal | Get an event that fires when a given property of the object changes. |
| Object:IsA | boolean | Returns true if an object's class matches or inherits from a given class. |
| Object:isA | boolean |
Workspace:ApplyRecommendedStreamingSettings
Applies the current recommended instance streaming settings to the Workspace. Only settings that differ from their recommended values are changed.
Returns
| Type | Description |
|---|---|
| boolean | true if one or more streaming properties were changed; false if every value already matched its recommended setting. |
| Field | Value |
|---|---|
| security | PluginSecurity |
| thread safety | Unsafe |
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:
JointInstancessuch asWeldsWeldConstraints
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
| Name | Type | Default | Description |
|---|---|---|---|
| objects | Instances | An array of BaseParts for whom joints are to be broken. |
Returns
| Type | Description |
|---|---|
| () |
| Field | Value |
|---|---|
| tags | ["Deprecated"] |
| security | PluginSecurity |
| thread safety | Unsafe |
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
| Type | Description |
|---|---|
| int | The number of awake parts. |
| Field | Value |
|---|---|
| security | None |
| thread safety | Safe |
| 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
| Type | Description |
|---|---|
| int | The percentage of real time that physics simulation is currently being throttled to. |
| Field | Value |
|---|---|
| security | None |
| thread safety | Safe |
| 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
| Type | Description |
|---|---|
| double | Returns the number of frames per second that physics is currently being simulated at. |
| Field | Value |
|---|---|
| security | None |
| thread safety | Safe |
| 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:
- It is monotonic; its value will never decrease.
- It moves at the same rate as the local clock to within 0.6%.
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
DistributedGameTime, a game-time clockos.time()DateTime
Returns
| Type | Description |
|---|---|
| double | The estimated Unix timestamp on the server. |
| Field | Value |
|---|---|
| security | None |
| thread safety | Safe |
| 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.
- Glue, Studs, Inlets, Universal, Weld, and Smooth surfaces will all create Weld instances.
- Spheres will not surface-weld to anything. The rounded sides of cylinders will not surface-weld, but the flat end sides will.
- Hinge and Motor surfaces will still create
RotateandRotatePjoint instances, regardless of part shape.
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
| Name | Type | Default | Description |
|---|---|---|---|
| objects | Instances | An array of BaseParts for whom joints are to be made. | |
| jointType | JointCreationMode | The JointCreationMode to be used. Passing in Enum.JointCreationMode.All or Enum.JointCreationMode.Surface has the same behavior which equates to Join Always. |
Returns
| Type | Description |
|---|---|
| () |
| Field | Value |
|---|---|
| security | None |
| thread safety | Unsafe |
| 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.
- Smooth surfaces will not create joints
- Glue surfaces will create a
Gluejoint - Weld will create a
Weldjoint with any surface except for Unjoinable - Studs, Inlet, or Universal will each create a
Snapjoint with either of other the other two surfaces (e.g. Studs with Inlet and Universal) - Hinge and Motor surfaces create
RotateandRotateVjoint instances
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
| Name | Type | Default | Description |
|---|---|---|---|
| objects | Instances | An array of parts for whom joints are to be made. |
Returns
| Type | Description |
|---|---|
| () |
| Field | Value |
|---|---|
| tags | ["Deprecated"] |
| security | PluginSecurity |
| thread safety | Unsafe |
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
| Type | Description |
|---|---|
| boolean | True if the PGS solver is enabled. |
| Field | Value |
|---|---|
| security | None |
| thread safety | Unsafe |
| 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
| Name | Type | Default | Description |
|---|---|---|---|
| objects | Instances | An array of BaseParts for whom joints are to be broken. |
Returns
| Type | Description |
|---|---|
| () |
| Field | Value |
|---|---|
| security | None |
| thread safety | Unsafe |
| 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
| Type | Description |
|---|---|
| () |
| Field | Value |
|---|---|
| security | PluginSecurity |
| thread safety | Unsafe |
Events
| Name | Type / Returns | Description |
|---|---|---|
| Workspace.PersistentLoaded | Fires when persistent models have been sent to the specified player. |
Inherited from Instance
| Name | Type / Returns | Description |
|---|---|---|
| Instance.AncestryChanged | Fires when the Instance.Parent property of this object or one of its ancestors is changed. | |
| Instance.AttributeChanged | Fires whenever an attribute is changed on the Instance. | |
| Instance.ChildAdded | Fires after an object is parented to this Instance. | |
| Instance.childAdded | ||
| Instance.ChildRemoved | Fires after a child is removed from this Instance. | |
| Instance.DescendantAdded | Fires after a descendant is added to the Instance. | |
| Instance.DescendantRemoving | Fires immediately before a descendant of the Instance is removed. | |
| Instance.Destroying | Fires immediately before (or is deferred until after) the instance is destroyed via Instance:Destroy(). | |
| Instance.StyledPropertiesChanged | Fires whenever any style property is changed on the instance, including when a property is set to nil. |
Inherited from Object
| Name | Type / Returns | Description |
|---|---|---|
| Object.Changed | Fires 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
| Name | Type | Default | Description |
|---|---|---|---|
| player | Player | The player who has received all current persistent models and part-less atomic models. |
| Field | Value |
|---|---|
| security | None |