Lime Studios Beatmap format
Jump to navigation
Jump to search
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 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
- root obj
- ed (note): Information only relevant for the editor.
- timeline_pos: Does nothing.
- markers: List of timeline notes/markers.
- (any number of this object)
- active: Whether to display the note.
- name: Arbitrary name to display.
- desc: Arbitrary description of a note (in seconds).
- col: Colour of the note.
- t (note): Placement of the note on the timeline.
- (any number of this object)
- prefab_objects: List of collapsed instances of prefabs listed in prefabs (jump).
- (any number of this object)
- id: Unique ID of the prefab instance.
- pid: ID of the prefab from prefabs (jump) that this is an instance of.
- st (note): Placement of the instance on the timeline (in seconds).
- ed (note): Information only relevant to the editor.
- layer: Which timeline layer/tab it is in.
- bin: What horizontal line of the timeline to draw this instance on.
- e: Instance offset (was never exposed in the editor).
- pos: Object, conforming to 2-component keyframe.
- sca: Object, conforming to 2-component keyframe (does not seem to work properly).
- rot: Object, conforming to 1-component keyframe.
- (any number of this object)
- level_data: Some data about the level that is not in metadata.lsb.
- level_version: Version of Project Arrhythmia this level was last saved in (e.g.
"4.0.17"
). - background_color: Seems to be deprecated.
- follow_player: Seems to be deprecated.
- show_intro: Seems to be deprecated.
- level_version: Version of Project Arrhythmia this level was last saved in (e.g.
- prefabs: List of prefab templates imported into the level.
- (any number of this object)
- name: Arbitrary name of the prefab.
- type: Number of the prefab type from the Prefab type table.
- id: Unique ID of the imported prefab template.
- offset: Prefab's spawn offset (in seconds).
- objects : List of objects conforming to the Gameplay object type below.
- (any number of this object)
- themes: List of themes imported into the level.
- (any number of this object)
- id: Unique ID of the theme.
- name: Arbitrary name of the theme.
- gui: Colour used for GUI elements (checkpoints, player's trail, progress bar; in "#RRGGBB").
- bg: Colour used for the background (in "#RRGGBB").
- players (4 long): Colours used for different players (in "#RRGGBB").
- objs (9 long): Colours used for object palette (in "#RRGGBB").
- bgs (9 long): Colours used for 3D-background palette (in "#RRGGBB").
- (any number of this object)
- checkpoints: List of checkpoints in the level.
- (any number of this object)
- active: Whether the checkpoint is activated.
- name: Arbitrary name of the checkpoint.
- t (note): Placement of the checkpoint on the timeline (in seconds).
- pos: Object, conforming to 2-component keyframe. Spawns the players in that position.
- (any number of this object)
- beatmap_objects: List of objects conforming to the Gameplay object type below.
- bg_objects (note): List of 3D-background objects.
- (any number of this object)
- active: Whether the 3D-background should be shown.
- name: An arbitrary name for the object.
- kind: Does nothing. Presumably would be the shape type.
- text: Does nothing. Presumably would be the text information if kind corresponded to type of text.
- points: Does nothing. Function unknown.
- (4 of this object)
- x (note): X-component.
- y (note): Y-component.
- (4 of this object)
- pos: Object, conforming to 2-component keyframe.
- size: Object, conforming to 2-component keyframe.
- rot: Rotation of the shape (in degrees).
- color: 3D-background colour palette index.
- layer: How close the shape is to the camera.
- fade: Whether the shape should fade into distance.
- shape: 3D-background shape type category. Refer to Shape types table. Treated as
0
if not present. - so (note): 3D-background shape type item. Refer to Shape types table. Treated as
0
if not present. - r_set (note)
- (any number of this object)
- events: Global level events/effects timeline.
- pos: List of objects conforming to 2-component keyframe.
- zoom: List of objects conforming to 1-component keyframe.
- rot: List of objects conforming to 1-component keyframe.
- shake: List of objects conforming to 2-component keyframe.
- theme: List of objects conforming to 1-component keyframe (theme).
- chroma: List of objects conforming to 1-component keyframe.
- bloom: List of objects conforming to 1-component keyframe.
- vignette: List of vignette keyframes.
- (any number of this object)
- t (note): Time, in seconds.
- x (note): Intensity.
- y (note): Smoothness.
- z (note): Round (0 = off, 1 = on).
- x2: Round (amount).
- y2: X-coordinate (from bottom left, max: 1.00).
- z2: Y-coordinate (from bottom left, max: 1.00).
- ct (note): Easing type to use; optional.
- (any number of this object)
- lens: List of objects conforming to 1-component keyframe.
- grain: List of grain keyframes.
- (any number of this object)
- t (note): Time, in seconds.
- x (note): Intensity.
- y (note): Colored (0 = off, 1 = on).
- z: Size of grains.
- ct (note): Easing type to use; optional.
- (any number of this object)
- ed (note): Information only relevant for the editor.
Gameplay object structure
- gameplay object
- id: Unique ID of the object instance.
- pid: ID of the prefab from prefabs_objects (jump) that this is an instance of.
(empty or not present if the object does not belong to a prefab.) - piid: ID of a specific unwrapping of an instance of 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 piid and updates all instances with these objects.) - 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.) - po (3 long): Parent inheritence offsets in seconds.
- Position.
- Scale.
- Rotation.
- p (note): ID of this object's parent.
(empty or not present if the object does not belong to a prefab.) - d: Z-order of the object. Lower values are closer to the camera.
- st (note): Start time of the object. In prefabs it is added to the prefab instance's start time.
- name: An arbitrary name of the object.
- ot: Object type. Refer to Gameplay Object type table.
- empty: Legacy; fallback if ot wasn't found. Makes the object invisible, basically acting as an "empty" object type.
- h (note): Legacy; fallback if ot wasn't found. Makes the object a helper type, basically acting as a "helper" object type.
- shape: Object's shape type category. Refer to Shape types table. Treated as
0
if not present. - so (note): Object's shape type item. Refer to Shape types table. Treated as
0
if not present. - akt: Auto-kill type. Refer to Auto-kill type table.
- ako: Time of auto-kill. Either relative or absolute depending on akt.
- ak: Legacy; fallback if akt wasn't found. If
"True"
, object is deleted with the last keyframe. If"False"
or not present, object is never deleted. - 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.
- x (note): X-coordinate.
- y (note): Y-coordinate.
- ed (note): Information only relevant for the editor.
- shrink: Whether the object should take least space possible on the timeline.
- bin: What horizontal line of the timeline to draw this object on.
- layer: Which timeline layer/tab it is in.
- e (note): Object's events.
- pos: List of objects conforming to 2-component keyframe.
- sca: List of objects conforming to 2-component keyframe.
- rot: List of objects conforming to 1-component keyframe.
- col: List of objects conforming to 1-component keyframe (colour).
Keyframe object structure
Keyframes in level events are never randomised, so r, rx, and ry are ignored.
- 1-component keyframe
- t (note): Time, in seconds.
- x (note): X-component.
For themes: must be an Integer equal to the ID of a theme from themes (jump.)
For colours: must be an Integer that is a valid palette array index (0–8). - r: Random type from Random Type table.
- rx: Random x-component.
- ct (note): Easing curve to use for this keyframe. Must match one of the names in Ease Type table.
- 2-component keyframe
- t (note): Time, in seconds.
- x (note): X-component.
- y (note): Y-component.
- r: Random type from Random Type table.
- is_random: Legacy (< 3.8.49; fallback if r wasn't found. Translates to r with value `1` if True, and `0` if False.
- rx (note): Random x-component.
- ry (note): Random y-component.
- 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 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 ot | Corresponds to |
---|---|
0 | Normal |
1 | Helper |
2 | Decoration |
3 | Empty |
Shape types
Value of shape | Value of 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 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 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 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 |