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.