Skip to content

Project File

Lync projects define the Instance tree inside Roblox, as well as configuring the behavior for building to file, sourcemaps, Automated Downloads, Automated Jobs, and more.

Syntax

File Name

  • Default.Project.JSON
    • The default project to load when running Lync without the project file argument.
  • *.Project.JSON
    • For non-default projects.

Keys

  • name: string (Optional)
    • The name of the project for informational purposes.
  • port: number
    • The network port to serve the project on when using SERVE and OPEN modes.
  • experienceId: number
    • The experience ID to use in OPEN mode.
  • placeId: number
    • The place ID to use in OPEN mode.
  • collisionGroups: string (Optional)
    • The path to a file that stores collision group data.
  • globIgnorePaths: {string} (Optional)
    • An array of glob paths to ignore when mapping the project.
  • sourcemapEnabled: {RBXM: boolean, RBXMX: boolean} (Optional)
    • Controls which types of Model Files (RBXM/RBXMX) are parsed during sourcemap generation.
  • sources: Object (Optional)
  • jobs: Object (Optional)
  • tree: Object
    • The root Instance.

Example

json
{
	"name": "Example Project",
	"port": 34873,
	"experienceId": 0,
	"placeId": 0,
	"collisionGroups": "collisionGroups.json",
	"globIgnorePaths": [ "ignoredDirectory/**" ],
	"sourcemapEnabled": {
		"RBXM": true,
		"RBXMX": true
	},
	"sources": { ... },
	"jobs": { ... },

	"tree": {
		...
	}
}

Instance Definitions

Keys

  • $className: string (Optional)
    • Has no effect when $path is specified.
  • $clearOnSync: boolean (Optional)
    • When true, the associated Instance and its descendants will be destroyed in Studio when performing sync operations.
    • Useful for clearing unmapped content when modifications are made outside your active live sync session.
  • $path: (string | Object) (Optional)
    • A path to a file or directory that overrides the Instance Definition.
    • Use "$path": { "optional": "..." } when the file or directory could possibly be non-existant.
    • Use "$path": { "package": "...", "type": "..." } for Packages.
  • $properties: {[string]: any} (Optional)
    • Functions as instance[property] = value.
  • $attributes: {[string]: any} (Optional)
    • Functions as instance:SetAttribute(attribute, value).
  • $tags: {string} (Optional)
    • Functions as CollectionService:AddTag(instance, tag).

Values

Values not storable in JSON, like Enum, Color3, Vector3 and so on, should be represented as a single Lua string wrapped inside an array (e.g., [ "Value" ].)

Example

json
"Wood Brick": {
	"$className": "Part",
	"$properties": {
		"Color": [ "Color3.fromRGB(132, 66, 4)" ],
		"Material": [ "Enum.Material.Wood" ],
		"Transparency": 0,
		"Position": [ "Vector3.new(0, 10, 0)" ],
		"Anchored": true
	},
	"$attributes": {
		"ExampleAttribute": true
	},
	"$tags": [ "ExampleTag1", "ExampleTag2", "ExampleTag3" ]
}

Terrain

Keys

  • $terrainRegion: {[1]: string, [2]: Lua, [3]: boolean} (Optional)
    • Functions as Terrain:PasteRegion(region, corner, pasteEmptyCells).
  • $terrainMaterialColors: {[string]: Lua} (Optional)
    • Functions as Terrain:SetMaterialColor(material, value).

Example

json
"Workspace": {
	"Terrain": {
		"$terrainRegion": [ "Assets/TerrainRegion.rbxm", [ "Vector3int16.new(-32000, -32000, -32000)" ], true ],
		"$terrainMaterialColors": {
			"Grass": [ "Color3.new(0, 0.5, 0)" ]
		}
	}
}

Lync and Pronghorn released under LGPL 2.1