Skip to content

TCLE File Structure

CocoaMix86 edited this page Dec 13, 2025 · 8 revisions

.TCL

field data type info
level_name string
difficulty string
description string
author string
bpm float
level_sections string[] Filled with SECTION_LINEAR, 1 per sublevel
rails_color float[4] RGBA order. Clamped between 0 and 1
rails_glow_color float[4] RGBA order. Clamped between 0 and 1
path_color float[4] RGBA order. Clamped between 0 and 1
joy_color float[4] RGBA order. Clamped between 0 and 1

Master

.master

field data type info
obj_type string SequinMaster
obj_name string
skybox_name string
intro_lvl_name string
groupings MasterLvlObject[]
isolate_tracks bool Used for testing WIP levels. Used in conjunction with the isolate field in MasterLvlObject
checkpoint_lvl_name string

MasterLvlObject

field data type info
lvl_name string only lvl_name OR gate_name should be filled in. Never both.
gate_name string
checkpoint bool
checkpoint_leader_lvl_name string
rest_lvl_name string
play_plus bool
isolate bool used for testing WIP levels. If .master isolate_tracks is true, then only build MasterLvlObject that have this field set to true.

Leaf

.leaf

field data type info
obj_type string SequinLeaf
obj_name string name of the leaf
seq_objs SequencerObject[]
beat_cnt uint
time_sig string only relevant for the editor

SequencerObject

field data type info
obj_name string
param_path string The object will have param_path OR param_path_hash in the JSON, never both.
param_path_hash string it's a uint encoded as a string. Does not start with 0x
trait_type string
data_points DataPoint[]
step bool
default float
footer string comma separated values, should be parsed into an array. Example: "2,1,2,1,2,'kIntensityScale','kIntensityScale',1,0,1,1,1,1,1,1,0,0,0"
editor_data var[] only relevant for the editor
enabled bool if false, this object should not be written into the level. Used for testing/previewing changes while working on the level.

DataPoint

field data type info
beat int
value float
interp string
ease string

Lvl

.lvl

field data type info
obj_type string SequinLevel
obj_name string
approach_beats uint
seq_objs SequencerObject[]
leaf_seq LvlLeafObject[]
loops LvlLoopObject[]
volume float
input_allowed bool Is the player allowed control during this lvl
tutorial_type string
start_angle_fracs float[3] typically all 1

LvlLeafObject

field data type info
beat_cnt uint
leaf_name string
main_path string this is usually default.path
sub_paths string[] names of tunnels applied to this leaf
pos float[3] default 0,0,0
rot_x float[3] default 1,0,0
rot_y float[3] default 0,1,0
rot_z float[3] default 0,0,1
scale float[3] default 1,1,1

LvlLoopObject

field data type info
samp_name string
beats_per_loop float

Gate

.gate

field data type info
obj_type string SequinGate
obj_name string
spn_name string
param_path string
pre_lvl_name string
post_lvl_name string
restart_lvl_name string
section_type string Changes how the boss sublevel displays in-game
random_type string
boss_patterns BossPattern[]

BossPattern

field data type info
lvl_name string
sentry_type string
bucket_num int
node_name_hash string should be parsed to uint to be written. Does not begin with 0x

Sample

.samp

field data type info
items SampleObject[]

SampleObject

field data type info
obj_type string Sample
obj_name string
mode string
path string
volume float
pitch float
pan float
offset int
channel_group string

Spawner

.spn

field data type info
items SpawnerObject[]

SpawnerObject

field data type info
obj_type string EntitySpawner
obj_name string
xfm_name string
constraint string
pos float[3] default 0,0,0
rot_x float[3] default 1,0,0
rot_y float[3] default 0,1,0
rot_z float[3] default 0,0,1
scale float[3] default 1,1,1
objlib_path string
bucket string

XFM

.xfm

field data type info
obj_type string Xfmer
xfm_name string
constraint string
pos float[3] default 0,0,0
rot_x float[3] default 1,0,0
rot_y float[3] default 0,1,0
rot_z float[3] default 0,0,1
scale float[3] default 1,1,1

Clone this wiki locally