Skip to main content

Properties

Argon supports most Roblox properties, here you can learn their syntax when written in project and data files!

Property Type Support Chart

Property TypeExample PropertyCLIPluginXMLBinary
AttributesInstance.Attributes
AxesArcHandles.Axes
BinaryStringBinaryStringValue.Value⏺️
BoolPart.Anchored
BrickColorPart.BrickColor
BytecodeN/A
CFrameCamera.CFrame
Color3Lighting.Ambient
Color3uint8Part.BrickColor
ColorSequenceBeam.Color
ContentDecal.Texture
EnumPart.Shape
FacesHandles.Faces
Float32Players.RespawnTime
Float64Sound.PlaybackLoudness
FontTextLabel.Font
Int32Frame.ZIndex
Int64Player.UserId
MaterialColorsTerrain.MaterialColors
NumberRangeParticleEmitter.Lifetime
NumberSequenceBeam.Transparency
OptionalCFrameModel.WorldPivotData
PhysicalPropertiesPart.CustomPhysicalProperties
ProtectedStringModuleScript.Source
RayRayValue.Value
RectImageButton.SliceCenter
RefModel.PrimaryPart
Region3N/A
Region3int16Terrain.MaxExtents
SecurityCapabilitiesFolder.SecurityCapabilities
SharedStringN/A
StringInstance.Name
TagsUIListLayout.Padding
UDimFrame.Size
UDim2Instance.UniqueId
Vector2ImageLabel.ImageRectSize
Vector2int16N/A
Vector3Part.Size
Vector3int16TerrainRegion.ExtentsMax
QDirStudio.Auto-Save Path
QFontStudio.Font

✅ Implemented | ❌ Unimplemented | ⏺️ Partially Implemented | ⛔ Never

Implicit vs Explicit Format

All property types have an implicit and explicit format. While most of the time it's easier to specify properties implicitly, sometimes you just have to use explicit property format e.g. to set instance Attributes.

Limitations

Not all properties can be applied by Argon when live-syncing due to the limitations of the Roblox Studio plugin API. Some common cases when you might face this problem are:

  • Binary data (Terrain, CSG parts)
  • Lighting.Technology

Attributes

Argon defines the "Attributes" property on any instance to have the Attributes type, allowing it to be specified implicitly.

For both implicit and explicit values, the format is an object where each field represents an attribute, where the key is the name of the attribute, and the value must be an explicit value.

{
"$properties": {
"Attributes": {
"Foo": { "Bool": true },
"Bar": { "Vector3": [1.0, 2.0, 3.0] }
}
}
}

The following types are supported for attribute values:

Axes

List of strings, each of which may be either X, Y, or Z. Each string sets the corresponding component.

{
"$properties": {
"Implicit": ["X", "Y", "Z"],
"Explicit": { "Axes": ["X", "Z"] }
}
}

BinaryString

For both implicit and explicit values, the format is a base64-encoded string.

{
"$properties": {
"Implicit": "SGVsbG8sIHdvcmxkIQ==",
"Explicit": { "BinaryString": "QXJnb24gaXMgY29vbCE=" }
}
}

Bool

For both implicit and explicit values, the format is a boolean value.

{
"$properties": {
"Implicit": true,
"Explicit": { "Bool": false }
}
}

BrickColor

For both implicit and explicit values, the format is an integer representing the Number of a BrickColor. Additionally for implicit values, the format is a string representing the Name of a BrickColor.

{
"$properties": {
"Implicit1": "Electric blue",
"Implicit2": 1032,
"Explicit": { "BrickColor": 1032 }
}
}

CFrame

For implicit values, the format is a flat list of components. For explicit values, the format is an object with position and orientation fields. The position field is a Vector3.

{
"$properties": {
"Implicit": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
"Explicit": {
"CFrame": {
"position": [1.0, 2.0, 3.0],
"orientation": [
[4.0, 5.0, 6.0],
[7.0, 8.0, 9.0],
[10.0, 11.0, 12.0]
]
}
}
}
}

Color3

For both implicit and explicit values, the format is a list of R, G and B components, respectively. Each component is a float in the range 0 - 1.

{
"$properties": {
"Implicit": [0.3, 0.6, 0.9],
"Explicit": {
"Color3": [0.25, 0.5, 0.75]
}
}
}

Color3uint8

For both implicit and explicit values, the format is a list of R, G and B components, respectively. Each component is an integer in the range 0 - 255.

{
"$properties": {
"Implicit": [0, 100, 200],
"Explicit": {
"Color3uint8": [55, 155, 255]
}
}
}

ColorSequence

For implicit values, the format is a flat list of ColorSequenceKeypoints. For explicit values, the format is an object with a keypoints field, which is an array of ColorSequenceKeypoints. Each ColorSequenceKeypoint is an object with time and color fields. The color field is a Color3.

{
"$properties": {
"Implicit": [
{ "time": 0, "color": [0, 0, 0] },
{ "time": 1, "color": [1, 1, 1] }
],
"Explicit": {
"ColorSequence": {
"keypoints": [
{ "time": 0, "color": [1, 0, 0] },
{ "time": 0.5, "color": [0, 1, 0] },
{ "time": 1, "color": [0, 0, 1] }
]
}
}
}
}

Content

For both implicit and explicit values, the format is a string.

{
"$properties": {
"Implicit": "rbxassetid://1234567890",
"Explicit": { "Content": "rbxassetid://0987654321" }
}
}

Enum

For implicit values, the format is a string corresponding to the name of the enum item. For explicit values, the format is an integer corresponding to the value of the enum item.

{
"$properties": {
"Implicit": "Ball",
"Explicit": { "Enum": 3 }
}
}

Faces

For both implicit and explicit values, the format is a list of strings, each of which may be either Right, Top, Back, Left, Bottom, or Front. Each string sets the corresponding component.

{
"$properties": {
"Implicit": ["Right", "Top", "Back", "Left", "Bottom", "Front"],
"Explicit": { "Faces": ["Right", "Top", "Front"] }
}
}

Float32

For both implicit and explicit values, the format is a float.

{
"$properties": {
"Implicit": 6.9,
"Explicit": { "Float32": 123.456 }
}
}

Float64

For both implicit and explicit values, the format is a float.

{
"$properties": {
"Implicit": 6.9,
"Explicit": { "Float64": 123.456 }
}
}

Font

For both implicit and explicit values, the format is an object with family, weight, and style fields. Each field is a string.

{
"$properties": {
"Implicit": {
"family": "rbxasset://fonts/families/Ubuntu.json",
"weight": "Bold",
"style": "Italic"
},
"Explicit": {
"Font": {
"family": "rbxasset://fonts/families/LegacyArial.json",
"weight": "Regular",
"style": "Normal"
}
}
}
}

Int32

For both implicit and explicit values, the format is an integer.

{
"$properties": {
"Implicit": 420,
"Explicit": { "Int32": 1337 }
}
}

Int64

For both implicit and explicit values, the format is an integer.

{
"$properties": {
"Implicit": 420,
"Explicit": { "Int64": 1337 }
}
}

MaterialColors

For both implicit and explicit values, the format is an object with material names as fields. Each field is a Color3uint8.

{
"$properties": {
"Implicit": {
"Grass": [10, 20, 30],
"Asphalt": [40, 50, 60],
"LeafyGrass": [255, 155, 55]
},
"Explicit": {
"MaterialColors": {
"Grass": [10, 20, 30],
"Asphalt": [40, 50, 60],
"LeafyGrass": [255, 155, 55]
}
}
}
}

NumberRange

For both implicit and explicit values, the format is a list of Min and Max components, respectively. Each component is a float.

{
"$properties": {
"Implicit": { "NumberRange": [0, 100] },
"Explicit": { "NumberRange": [12.34, 56.78] }
}
}

NumberSequence

For implicit values, the format is a flat list of NumberSequenceKeypoints. For explicit values, the format is an object with a keypoints field, which is an array of NumberSequenceKeypoints. Each NumberSequenceKeypoint is an object with time, value, and envelope fields.

{
"$properties": {
"Implicit": [
{ "time": 0.0, "value": 5.0, "envelope": 2.5 },
{ "time": 0.5, "value": 10.0, "envelope": 4.5 },
{ "time": 1.0, "value": 15.0, "envelope": 0.0 }
],
"Explicit": {
"NumberSequence": {
"keypoints": [
{ "time": 0, "value": 13, "envelope": 2 },
{ "time": 1, "value": 37, "envelope": 1 }
]
}
}
}
}

OptionalCFrame

For implicit values, the format is a flat list of components. For explicit values, the format is an object with position and orientation fields. The position field is a Vector3.

{
"$properties": {
"Implicit": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0],
"Explicit": {
"CFrame": {
"position": [1, 2, 3],
"orientation": [
[4, 5, 6],
[7, 8, 9],
[10, 11, 12]
]
}
}
}
}

PhysicalProperties

For both implicit and explicit values, there are two formats. The constant string Default, which represents the default PhysicalProperties value or an object with fields corresponding to each component.

{
"$properties": {
"Implicit1": "Default",
"Implicit2": {
"density": 0.5,
"friction": 1.0,
"elasticity": 0.0,
"frictionWeight": 50.0,
"elasticityWeight": 25.0
},
"Explicit1": { "PhysicalProperties": "Default" },
"Explicit2": {
"PhysicalProperties": {
"density": 0.5,
"friction": 1.0,
"elasticity": 0.0,
"frictionWeight": 50.0,
"elasticityWeight": 25.0
}
}
}
}

ProtectedString

For both implicit and explicit values, the format is a string.

{
"$properties": {
"Implicit": "print('Hello world!')",
"Explicit": { "ProtectedString": "print('Hello world!')" }
}
}

Ray

For both implicit and explicit values, the format is a list of origin and direction components. Each component is a Vector3.

{
"$properties": {
"Implicit": [
[1, 2, 3],
[4, 5, 6]
],
"Explicit": {
"Ray": [
[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0]
]
}
}
}

Rect

For both implicit and explicit values, the format is a list of all components. Each component is a float.

{
"$properties": {
"Explicit": [0.0, 5.0, 10.0, 15.0],
"Explicit": {
"Rect": [0, 5, 10, 15]
}
}
}

Ref

Not implemented yet.

Region3

For both implicit and explicit values, the format is a list of Min and Max components, respectively. Each component is a Vector3.

{
"$properties": {
"Implicit": [
[1, 2, 3],
[4, 5, 6]
],
"Explicit": {
"Region3": [
[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0]
]
}
}
}

Region3int16

For both implicit and explicit values, the format is a list of Min and Max components, respectively. Each component is a Vector3int16.

{
"$properties": {
"Implicit": [
[100, 200, 300],
[400, 500, 600]
],
"Explicit": {
"Region3int16": [
[100, 200, 300],
[400, 500, 600]
]
}
}
}

SharedString

For both implicit and explicit values, the format is a string.

{
"$properties": {
"Implicit": "Argon is cool!",
"Explicit": { "SharedString": "Argon is cool!" }
}
}

String

For both implicit and explicit values, the format is a string.

{
"$properties": {
"Implicit": "Hello, world!",
"Explicit": { "String": "Hello, world!" }
}
}

Tags

For both implicit and explicit values, the format is a list of strings, where each string is a tag.

{
"$properties": {
"Implicit": ["foo", "bar"],
"Explicit": { "Tags": ["foo", "bar", "baz"] }
}
}

UDim

For both implicit and explicit values, the format is a list of Scale and Offset components, respectively. Scale is a float, and Offset is an integer.

{
"$properties": {
"Implicit": [0.5, 500],
"Explicit": { "UDim": [1.0, 1000] }
}
}

UDim2

For both implicit and explicit values, the format is a list of X and Y components, respectively. Each component is a UDim.

{
"$properties": {
"Implicit": [
[0.4, 400],
[0.1, 50]
],
"Explicit": {
"UDim2": [
[-1.0, 100],
[1.0, -100]
]
}
}
}

Vector2

For both implicit and explicit values, the format is a list of X and Y components, respectively. Each component is a float.

{
"$properties": {
"Implicit": [-1.2, 3.4],
"Explicit": { "Vector2": [0.0, 50.0] }
}
}

Vector2int16

For both implicit and explicit values, the format is a list of X and Y components, respectively. Each component is an integer.

{
"$properties": {
"Implicit": [100, 500],
"Explicit": { "Vector2int16": [-300, 600] }
}
}

Vector3

For both implicit and explicit values, the format is a list of X, Y, and Z components, respectively. Each component is an float.

{
"$properties": {
"Implicit": [-1.2, 3.4, -5.6],
"Explicit": { "Vector3": [100.0, -200.0, 300.0] }
}
}

Vector3int16

For both implicit and explicit values, the format is a list of X, Y, and Z components, respectively. Each component is an integer.

{
"$properties": {
"Implicit": [-1500, 2500, 3500],
"Explicit": { "Vector3int16": [123, 456, -789] }
}
}

This page is based on Rojo's Properties as Argon stores properties in a very similar way.