Sonolus Wiki

19. Arcade Score

In this chapter, we will set up arcade score and arcade score UI.

Judgment Type Score Multiplier

Each judgment type can have their own score multipliers, typically set to 1 for Perfect and lower for Great and Good:

const preprocess = [
    // ...
    PerfectMultiplier.set(1),
    GreatMultiplier.set(0.75),
    GoodMultiplier.set(0.5),
]
const preprocess = [
    // ...
    PerfectMultiplier.set(1),
    GreatMultiplier.set(0.75),
    GoodMultiplier.set(0.5),
]

Consecutive Judgment Type Score Multiplier

Consecutive judgment type score multiplier refers to score multiplier that accumulates as you hit with equal or higher than the target judgment.

To explain with an example, we are going to set the consecutive Great score multiplier to accumulate 0.01 every 10, capped at 50. That means for every 10 consecutive Greats you hit, you get 0.01 additional score multiplier, up to 50 consecutive Greats (so you can get up to 0.05 increased score)

const preprocess = [
    // ...
    ConsecutiveGreatScore.set(0.01, 10, 50),
]
const preprocess = [
    // ...
    ConsecutiveGreatScore.set(0.01, 10, 50),
]

Primary Metric UI

There are primary metric bar and primary metric value UI for displaying a primary metric of player's choice, most commonly arcade score. Primary metric bar shows a progress bar showing percentage, while primary metric value shows the raw value.

It is recommended to stack them on top of each other to show both information at once:

const preprocess = [
    // ...
    UIPrimaryMetricBar.set(
        Subtract(ScreenAspectRatio, 0.05),
        0.95,
        1,
        1,
        0.75,
        0.15,
        0,
        1,
        HorizontalAlign.Left,
        true
    ),
    UIPrimaryMetricValue.set(
        Subtract(ScreenAspectRatio, 0.085),
        0.915,
        1,
        1,
        0,
        0.08,
        0,
        1,
        HorizontalAlign.Right,
        false
    ),
    // ...
]
const preprocess = [
    // ...
    UIPrimaryMetricBar.set(
        Subtract(ScreenAspectRatio, 0.05),
        0.95,
        1,
        1,
        0.75,
        0.15,
        0,
        1,
        HorizontalAlign.Left,
        true
    ),
    UIPrimaryMetricValue.set(
        Subtract(ScreenAspectRatio, 0.085),
        0.915,
        1,
        1,
        0,
        0.08,
        0,
        1,
        HorizontalAlign.Right,
        false
    ),
    // ...
]