Chart Data Format
Chart data is stored inassets/data/songs/[id]/[id]-chart.json:
Chart Data Fields
Chart format version (currently “2.2.4”)
Scroll speed for each difficulty (controls note speed)
Array of song events (camera focus, animations, etc.)
Note data for each difficulty
Tool or person that generated this chart
Song Note Data
Each note is defined with minimal data:Note Fields
Time when the note should be hit (format depends on song’s
timeFormat)Note direction/lane (0-3 for opponent, 4-7 for player)
- 0/4 = Left
- 1/5 = Down
- 2/6 = Up
- 3/7 = Right
Hold note length in milliseconds (0 = regular note, >0 = sustain)
Note kind ID for special note types (e.g., “mine”, “hurt”)
Note Direction Mapping
Opponent strumline (left side):0= Left1= Down2= Up3= Right
4= Left5= Down6= Up7= Right
Note Types
Regular Notes
Standard notes that must be hit:Hold Notes (Sustains)
Notes that must be held down:l field defines the hold duration.
Hold note scoring:
- Player must hit the note head
- Player must hold the key for the sustain duration
- Releasing early breaks the hold
- Each sustain “segment” can award points
Special Note Kinds
Note kinds modify behavior:- Default (no
kfield): Standard note - Custom kinds defined in
assets/data/notekind/directory
- Change note appearance
- Modify hit behavior
- Award different points
- Trigger special effects
Song Events
Events trigger gameplay actions at specific times:Event Structure
Time when event triggers (in song’s time format)
Event kind/type identifier
Event-specific data (can be any JSON-serializable value)
Built-in Events
FocusCamera
Changes camera focus to a character:char: Character index (0 = player, 1 = opponent, 2 = girlfriend)duration: Optional tween duration in seconds
ZoomCamera
Changes camera zoom level:zoom: Target zoom levelduration: Tween duration in seconds
PlayAnimation
Plays animation on a character or prop:target: Character or prop nameanim: Animation nameforce: Whether to interrupt current animation
SetCameraBop
Controls camera bopping:intensity: Bop strength (zoom amount)rate: Bop every X beats (e.g., 4 = every 4 beats)
Scroll Speed
Controls how fast notes move:1.0= Default speed<1.0= Slower (more reaction time)>1.0= Faster (less reaction time)- Typical range: 0.8 - 3.0
- Higher values = notes approach faster
- Lower values = more time to react
- Does NOT affect timing windows
- Purely visual speed change
Chart Organization
Per-Difficulty Charts
Each difficulty has separate note data:- Easy: Fewer notes, simpler patterns, longer gaps
- Normal: Moderate note density, basic patterns
- Hard: Higher density, complex patterns, more sustains
Shared Events
Events are shared across all difficulties:Note Patterns
Single Notes
Basic rhythm:Chords
Multiple simultaneous notes:t: 1000).
Rolls
Rapid sequential notes:Holds (Sustains)
Long notes:Jacks
Repeated notes in same lane:Timing Precision
Chart timing uses the song’s time format:Milliseconds (Most Common)
Ticks
divisions: 96:
- 1 beat = 96 ticks
- 1/4 beat = 24 ticks
- 1/16 beat = 6 ticks
Step Alignment
Notes should align to musical steps: 4/4 time, 120 BPM:- 1 beat = 500ms
- 1 step (1/4 beat) = 125ms
- Quarter notes: 500ms apart
- Eighth notes: 250ms apart
- Sixteenth notes: 125ms apart
- Thirty-second notes: 62.5ms apart
Loading Charts
Charts are loaded via the Song system:Charting Best Practices
1. Follow the Music
Align notes to musical beats:- Use strong beats for emphasis
- Match note patterns to melody
- Use holds for sustained notes
2. Difficulty Progression
Easy:- Simple patterns
- Mostly single notes
- Clear beat alignment
- Minimal holds
- Moderate complexity
- Some chords (2 notes)
- Basic patterns
- Occasional holds
- Complex patterns
- Frequent chords
- Fast rolls
- Long holds
- Creative patterns
3. Playtest Extensively
- Test on different difficulties
- Check timing accuracy
- Verify event triggers
- Ensure patterns are fair
4. Use Events Effectively
- Camera focus on singing character
- Zoom for emphasis
- Animations at key moments
- Don’t overuse effects
5. Balance Opponent and Player
- Opponent notes (d: 0-3) during their sections
- Player notes (d: 4-7) during player sections
- Can overlap during duets
Example: Complete Chart
- Camera focus changes at 0ms and 8000ms
- Camera zoom at 12000ms
- Opponent notes (d: 0-3) from 1000-3000ms
- Player notes (d: 4-7) from 8000ms onward
- Various patterns: singles, holds, chords, rolls
