Lime Studios Beatmap format

From Project Arrhythmia Wiki
Jump to navigation Jump to search
Nchansprite teach.png

Proofreading needed
This article needs to be proofread to improve its quality, grammar, and layout. Reason:

  • Add more alternative key names
  • Figure out the LSB upgrading code from PA Legacy that, if the version is less than 3.7.43 and Integer shape is equal to "4", then it changes it to "5".

Lime Studios Beatmap (or .lsb) is a JSON level format used in Project Arrhythmia until version 20.10.5. It is the level format used in the [legacy Beta].

JSON structure

  • Object root obj
    • Object ed (note): Information only relevant for the editor.
      • Floating Point timeline_pos: Does nothing.
      • Object Array markers: List of timeline notes/markers.
        • Object (any number of this object)
          • Boolean ("True" or "False") active: Whether to display the note.
          • String name: Arbitrary name to display.
          • String desc: Arbitrary description of a note (in seconds).
          • Integer col: Colour of the note.
          • Floating Point t (note): Placement of the note on the timeline.
    • Object Array prefab_objects: List of collapsed instances of prefabs listed in Object Array prefabs (jump).
      • Object (any number of this object)
        • String id: Unique ID of the prefab instance.
        • String pid: ID of the prefab from Object Array prefabs (jump) that this is an instance of.
        • Floating Point st (note): Placement of the instance on the timeline (in seconds).
        • Object ed (note): Information only relevant to the editor.
          • Integer layer: Which timeline layer/tab it is in.
          • Integer bin: What horizontal line of the timeline to draw this instance on.
        • Object e: Instance offset (was never exposed in the editor).
    • Object level_data: Some data about the level that is not in metadata.lsb.
      • String level_version: Version of Project Arrhythmia this level was last saved in (e.g. "4.0.17").
      • Integer background_color: Seems to be deprecated.
      • Boolean ("True" or "False") follow_player: Seems to be deprecated.
      • Boolean ("True" or "False") show_intro: Seems to be deprecated.
    • Object Array prefabs: List of prefab templates imported into the level.
      • Object (any number of this object)
        • String name: Arbitrary name of the prefab.
        • Integer type: Number of the prefab type from the Prefab type table.
        • String id: Unique ID of the imported prefab template.
        • Floating Point offset: Prefab's spawn offset (in seconds).
        • Object Array objects : List of objects conforming to the Gameplay object type below.
    • Object Array themes: List of themes imported into the level.
      • Object (any number of this object)
        • Integer id: Unique ID of the theme.
        • String name: Arbitrary name of the theme.
        • String gui: Colour used for GUI elements (checkpoints, player's trail, progress bar; in "#RRGGBB").
        • String bg: Colour used for the background (in "#RRGGBB").
        • String Array players (4 long): Colours used for different players (in "#RRGGBB").
        • String Array objs (9 long): Colours used for object palette (in "#RRGGBB").
        • String Array bgs (9 long): Colours used for 3D-background palette (in "#RRGGBB").
    • Object Array checkpoints: List of checkpoints in the level.
      • Object (any number of this object)
        • Boolean ("True" or "False") active: Whether the checkpoint is activated.
        • String name: Arbitrary name of the checkpoint.
        • Floating Point t (note): Placement of the checkpoint on the timeline (in seconds).
        • Object pos: Object, conforming to 2-component keyframe. Spawns the players in that position.
    • Object Array beatmap_objects: List of objects conforming to the Gameplay object type below.
    • Object Array bg_objects (note): List of 3D-background objects.
      • Object (any number of this object)
        • Boolean ("True" or "False") active: Whether the 3D-background should be shown.
        • String name: An arbitrary name for the object.
        • Integer kind: Does nothing. Presumably would be the shape type.
        • String text: Does nothing. Presumably would be the text information if Integer kind corresponded to type of text.
        • Object Array points: Does nothing. Function unknown.
          • Object (4 of this object)
            • Floating Point x (note): X-component.
            • Floating Point y (note): Y-component.
        • Object pos: Object, conforming to 2-component keyframe.
        • Object size: Object, conforming to 2-component keyframe.
        • Floating Point rot: Rotation of the shape (in degrees).
        • Integer color: 3D-background colour palette index.
        • Integer layer: How close the shape is to the camera.
        • Boolean ("True" or "False") fade: Whether the shape should fade into distance.
        • Integer shape: 3D-background shape type category. Refer to Shape types table. Treated as 0 if not present.
        • Integer so (note): 3D-background shape type item. Refer to Shape types table. Treated as 0 if not present.
        • Unknown node type r_set (note)
    • Object events: Global level events/effects timeline.
      • Object Array pos: List of objects conforming to 2-component keyframe.
      • Object Array zoom: List of objects conforming to 1-component keyframe.
      • Object Array rot: List of objects conforming to 1-component keyframe.
      • Object Array shake: List of objects conforming to 2-component keyframe.
      • Object Array theme: List of objects conforming to 1-component keyframe (theme).
      • Object Array chroma: List of objects conforming to 1-component keyframe.
      • Object Array bloom: List of objects conforming to 1-component keyframe.
      • Object Array vignette: List of vignette keyframes.
        • Object (any number of this object)
          • Floating Point t (note): Time, in seconds.
          • Floating Point x (note): Intensity.
          • Floating Point y (note): Smoothness.
          • Integer z (note): Round (0 = off, 1 = on).
          • Floating Point x2: Round (amount).
          • Floating Point y2: X-coordinate (from bottom left, max: 1.00).
          • Floating Point z2: Y-coordinate (from bottom left, max: 1.00).
          • String ct (note): Easing type to use; optional.
      • Object Array lens: List of objects conforming to 1-component keyframe.
      • Object Array grain: List of grain keyframes.
        • Object (any number of this object)
          • Floating Point t (note): Time, in seconds.
          • Integer x (note): Intensity.
          • Integer y (note): Colored (0 = off, 1 = on).
          • Integer z: Size of grains.
          • String ct (note): Easing type to use; optional.

Gameplay object structure

  • Object gameplay object
    • String id: Unique ID of the object instance.
    • String pid: ID of the prefab from Object Array prefabs_objects (jump) that this is an instance of.
      (empty or not present if the object does not belong to a prefab.)
    • String piid: ID of a specific unwrapping of an instance of Object Array prefabs_objects (jump) that this is an instance of.
      (When the user hits "Collapse prefab", the game checks for all gameplay objects with the matching String piid and updates all instances with these objects.)
    • Integer pt (note): Parent inheritence options.
      (A binary representation of 3 booleans, where the first one (left most) is position, second one is scale, and the third one is rotation. E.g. 111 has position, scale, and rotation inheritance on.)
    • Floating Point Array po (3 long): Parent inheritence offsets in seconds.
      • Floating Point Position.
      • Floating Point Scale.
      • Floating Point Rotation.
    • String p (note): ID of this object's parent.
      (empty or not present if the object does not belong to a prefab.)
    • Integer d: Z-order of the object. Lower values are closer to the camera.
    • Floating Point st (note): Start time of the object. In prefabs it is added to the prefab instance's start time.
    • String name: An arbitrary name of the object.
    • Integer ot: Object type. Refer to Gameplay Object type table.
    • Boolean ("True" or "False") empty: Legacy; fallback if Integer ot wasn't found. Makes the object invisible, basically acting as an "empty" object type.
    • Boolean ("True" or "False") h (note): Legacy; fallback if Integer ot wasn't found. Makes the object a helper type, basically acting as a "helper" object type.
    • Integer shape: Object's shape type category. Refer to Shape types table. Treated as 0 if not present.
    • Integer so (note): Object's shape type item. Refer to Shape types table. Treated as 0 if not present.
    • Integer akt: Auto-kill type. Refer to Auto-kill type table.
    • Floating Point ako: Time of auto-kill. Either relative or absolute depending on Integer akt.
    • Boolean ("True" or "False") ak: Legacy; fallback if Integer akt wasn't found. If "True", object is deleted with the last keyframe. If "False" or not present, object is never deleted.
    • Object o (note): Coordinates of the origin point of the shape, where (0, 0) is centre, and (1, 1) is upper-right corner of the shape.
      • Floating Point x (note): X-coordinate.
      • Floating Point y (note): Y-coordinate.
    • Object ed (note): Information only relevant for the editor.
      • Boolean ("True" or "False") shrink: Whether the object should take least space possible on the timeline.
      • Integer bin: What horizontal line of the timeline to draw this object on.
      • Integer layer: Which timeline layer/tab it is in.
    • Object e (note): Object's events.

Keyframe object structure

Keyframes in level events are never randomised, so Integer r, Floating Point rx, and Floating Point ry are ignored.

  • Object 1-component keyframe
    • Floating Point t (note): Time, in seconds.
    • Floating Point Integer x (note): X-component.
      For themes: must be an Integer equal to the ID of a theme from Object Array themes (jump.)
      For colours: must be an Integer that is a valid palette array index (0–8).
    • Integer r: Random type from Random Type table.
    • Floating Point rx: Random x-component.
    • String ct (note): Easing curve to use for this keyframe. Must match one of the names in Ease Type table.


  • Object 2-component keyframe
    • Floating Point t (note): Time, in seconds.
    • Floating Point x (note): X-component.
    • Floating Point y (note): Y-component.
    • Integer r: Random type from Random Type table.
    • Boolean ("True" or "False") is_random: Legacy (< 3.8.49; fallback if Integer r wasn't found. Translates to Integer r with value `1` if True, and `0` if False.
    • Floating Point rx (note): Random x-component.
    • Floating Point ry (note): Random y-component.
    • String ct (note): Easing curve to use for this keyframe. Must match one of the names in Ease Type table.

Enum tables

Prefab type

Value of Integer type Corresponds to
0 Bombs
1 Bullets
2 Beams
3 Spinners
4 Pulses
5 Characters
6 Misc 1
7 Misc 2
8 Misc 3
9 Misc 4

Gameplay object type

Value of Integer ot Corresponds to
0 Normal
1 Helper
2 Decoration
3 Empty

Shape types

Value of Integer shape Value of Integer so (note) Corresponds to
0 0 Rectangle Filled
1 Rectangle Outline
2 Rectangle Thin-Outline
1 0 Ellipse Filled
1 Ellipse Outline
2 Ellipse-half Filled
3 Ellipse-half Outline
4 Ellipse Thin-Outline
5 Ellipse-quarter Filled
6 Ellipse-quarter Outline
7 Ellipse-eighth Filled
8 Ellipse-eighth Outline
2 0 Triangle Filled
1 Triangle Outline
2 Triangle-right Filled
3 Triangle-right Outline
3 0 Arrow
1 Arrow-notail
4 Text
5 0 Hexagon Filled
1 Hexagon Outline
2 Hexagon Thin-Outline
3 Hexagon-half Filled
4 Hexagon-half Outline
5 Hexagon-half Thin-Outline

Auto-kill Type

Value of Integer akt Corresponds to
0 No auto-kill (legacy)
1 Last Keyframe
2 Last Keyframe with Offset
3 Fixed
4 Song Time

Random Type

Value of Integer r Corresponds to
0 None
1 Range
2 Range with Random Interval set to 1 (legacy)
3 Either position
4 Multiplier

Ease Type

Group Values of String ct (note)
Linear
Instant
Sine InSine
OutSine
InOutSine
Elastic InElastic
OutElastic
InOutElastic
Back InBack
OutBack
InOutBack
Bounce InBounce
OutBounce
InOutBounce
Quad InQuad
OutQuad
InOutQuad
Circ InCirc
OutCirc
InOutCirc
Expo InExpo
OutExpo
InOutExpo