Chart Feature
prpr not only supports the official Phigros, 'pec', and 'rpe' chart format, but also added some unique features. These chart features can only be used in prpr and other clients that built on top of prpr. These features include:
The configuration of chart features need to be saved in extra.json
which can be found in the root directory of the zip file. In order to use the chart features, you need to edit the JSON file manually. If you don't know what JSON is, see JSON Tutorial.
BPM Config
Before making any configurations, you need to set the BPM of the song/track in extra.json
. For example:
{
"bpm": [
{ "time": [0, 0, 1], "bpm" : 200.0 },
{ "time": [10, 1, 2], "bpm" : 250.0 }
],
...
}
This shows that the song has an initial BPM of 200
, the BPM then changes to 250
at the 10.5 beat.
Animation variables
Animation variables are often used in charts. For example, in RPE, the X coordinate change event is actually the X coordinate as an animation variable.
There are 2 formats for prpr’s animation variables. The first is for a constant value, which means that the variable will not change and will always have the same value. This format is applied just for the ease of filling up the fields. The second format is the same as the one in RPE and is composed of multiple Event
. The format of a single Event
is shown below:
{
"startTime": [0, 0, 1],
"endTime": [0, 0, 1],
"easingType": 2,
"easingLeft": 0.0,
"easingRight": 1.0,
"start": ...,
"end": ...
}
where startTime
and endTime
are the event’s start time and end time respectively; easingType
is the type of easing; easingLeft
and easingRight
are optional, it represents the start and end position of the ease.
start
and end
represent the values at the beginning and end of the time. The type of the value here depends on the type of the animation variable itself, which can be any of the following types:
float
: a single decimal.vec2
: 2 decimal representing a 2D vector, represented as an array.color
: 4 integers (0-255) that represents a color, the format is[R, G, B, A]
.
For example, the following animation variable will vary linearly from 0
to 1
over a given time period:
[
{
"startTime": [2, 0, 1],
"endTime": [4, 0, 1],
"easingType": 2,
"start": 0.0,
"end": 0.1
}
]