3.3.2 • Published 2 months ago

@rian8337/osu-rebalance-difficulty-calculator v3.3.2

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

About

The difficulty and performance calculator portion of my osu! module that uses the latest osu!lazer difficulty and performance algorithm.

Features

This module provides an osu! difficulty and performance calculator that uses the latest osu!lazer difficulty and performance algorithm for osu!standard gamemode.

An error margin should be expected from difficulty and performance calculator due to differences between C# and TypeScript.

Specific Requirements

This module has no specific requirements, however installed modules in installation may have specific requirements. It's advised to check them.

Installation

npm i @rian8337/osu-base @rian8337/osu-rebalance-difficulty-calculator

or

yarn add @rian8337/osu-base @rian8337/osu-rebalance-difficulty-calculator

Usage

Difficulty calculator

import { MapInfo } from "@rian8337/osu-base";
import {
    DroidDifficultyCalculator,
    MapStars,
    OsuDifficultyCalculator,
} from "@rian8337/osu-rebalance-difficulty-calculator";

const beatmapInfo = await MapInfo.getInformation(901854);

if (!beatmapInfo.title) {
    return console.log("Beatmap not found");
}

// Calculate osu!droid difficulty
const droidRating = new DroidDifficultyCalculator(beatmapInfo.map).calculate();

console.log(droidRating);

// Calculate osu!standard difficulty
const osuRating = new OsuDifficultyCalculator(beatmapInfo.map).calculate();

console.log(osuRating);

// Calculate both osu!droid and osu!standard difficulty
const rating = new MapStars(beatmapInfo.map);

// osu!droid difficulty
console.log(rating.droid);
// osu!standard difficulty
console.log(rating.osu);

Specifying difficulty calculation parameters

Parameters can be applied to alter the result of the calculation:

  • Mods: Modifications that will be considered when calculating the difficulty of a beatmap. Defaults to none.
  • Custom statistics: Used to apply a custom speed multiplier and force AR. Defaults to none.
import { MapInfo, MapStats, ModUtil } from "@rian8337/osu-base";
import { MapStars } from "@rian8337/osu-rebalance-difficulty-calculator";

const beatmapInfo = await MapInfo.getInformation(901854);

if (!beatmapInfo.title) {
    return console.log("Beatmap not found");
}

const mods = ModUtil.pcStringToMods("HDHR");

const stats = new MapStats({
    ar: 9,
    isForceAR: true,
    speedMultiplier: 1.5,
});

// Also available in `DroidDifficultyCalculator` and `OsuDifficultyCalculator` as a parameter of `calculate`
const rating = new MapStars(beatmapInfo.map, {
    mods: mods,
    stats: stats,
});

// osu!droid difficulty
console.log(rating.droid);
// osu!standard difficulty
console.log(rating.osu);

Performance calculator

import { MapInfo } from "@rian8337/osu-base";
import {
    DroidPerformanceCalculator,
    MapStars,
    OsuPerformanceCalculator,
} from "@rian8337/osu-rebalance-difficulty-calculator";

const beatmapInfo = await MapInfo.getInformation(901854);

if (!beatmapInfo.title) {
    return console.log("Beatmap not found");
}

const rating = new MapStars(beatmapInfo.map);

// osu!droid performance
const droidPerformance = new DroidPerformanceCalculator(
    rating.droid
).calculate();

console.log(droidPerformance);

// osu!standard performance
const osuPerformance = new OsuPerformanceCalculator(rating.osu).calculate();

console.log(osuPerformance);

Specifying performance calculation parameters

Parameters can be passed to alter the result of the calculation:

  • Combo: The maximum combo achieved. Defaults to the beatmap's maximum combo.
  • Accuracy: The accuracy achieved. Defaults to 100%.
  • Misses: The amount of misses achieved.
  • Tap penalty: Penalty given from three-finger detection. Only applied for osu!droid gamemode. Defaults to 1.
  • Custom statistics: Used to apply a custom speed multiplier and force AR. Defaults to none.
import { Accuracy, MapInfo, MapStats } from "@rian8337/osu-base";
import {
    OsuPerformanceCalculator,
    OsuDifficultyCalculator,
} from "@rian8337/osu-rebalance-difficulty-calculator";

const beatmapInfo = await MapInfo.getInformation(901854);

if (!beatmapInfo.title) {
    return console.log("Beatmap not found");
}

const rating = new OsuDifficultyCalculator(beatmapInfo.map).calculate();

const accuracy = new Accuracy({
    // Specify your misses here
    nmiss: 1,

    // The module provides a convenient way to specify accuracy based on the data that you have
    // Remove the codes below as you see fit

    // If you have hit data (amount of 300s, 100s, and 50s)
    n300: 1000,
    n100: 0,
    n50: 0,

    // If you have accuracy percentage
    // While this method is more convenient to use, the amount of 300s, 100s, and 50s will be estimated
    // This will lead to values being off when calculating for specific accuracies
    percent: 100,
    nobjects: beatmapInfo.objects,
});

const stats = new MapStats({
    ar: 9.5,
    isForceAR: true,
    speedMultiplier: 1.25,
});

const performance = new OsuPerformanceCalculator(rating).calculate({
    combo: 1250,
    accPercent: accuracy,
    // The tap penalty will only be used by `DroidPerformanceCalculator` and
    // can be properly obtained by checking a replay for three finger usage
    // However, a custom value can also be provided
    tapPenalty: 1.5,
    stats: stats,
});

console.log(performance);
4.0.0-beta.22

2 months ago

4.0.0-beta.21

2 months ago

4.0.0-beta.20

2 months ago

4.0.0-beta.19

2 months ago

4.0.0-beta.18

2 months ago

4.0.0-beta.17

2 months ago

4.0.0-beta.16

2 months ago

4.0.0-beta.15

6 months ago

4.0.0-beta.14

6 months ago

4.0.0-beta.13

7 months ago

4.0.0-beta.12

8 months ago

4.0.0-beta.11

11 months ago

4.0.0-beta.10

11 months ago

4.0.0-beta.8

12 months ago

4.0.0-beta.9

12 months ago

3.3.1

1 year ago

4.0.0-beta.7

1 year ago

3.3.0

1 year ago

4.0.0-beta.6

1 year ago

4.0.0-beta.5

1 year ago

4.0.0-beta.4

1 year ago

4.0.0-beta.3

1 year ago

4.0.0-beta.2

1 year ago

3.3.2

1 year ago

4.0.0-beta.1

1 year ago

3.2.1

1 year ago

3.2.0

1 year ago

3.1.1

1 year ago

3.1.0

1 year ago

3.0.0-beta.33

1 year ago

3.0.0-beta.34

1 year ago

3.0.0-beta.35

1 year ago

3.0.0

1 year ago

4.0.0-beta.0

1 year ago

3.0.0-beta.30

1 year ago

3.0.0-beta.32

1 year ago

3.0.0-beta.26

1 year ago

2.4.0

1 year ago

2.3.0

1 year ago

3.0.0-beta.20

1 year ago

3.0.0-beta.21

1 year ago

3.0.0-beta.22

1 year ago

3.0.0-beta.23

1 year ago

3.0.0-beta.24

1 year ago

3.0.0-beta.25

1 year ago

3.0.0-beta.19

2 years ago

3.0.0-beta.13

2 years ago

3.0.0-beta.14

2 years ago

3.0.0-beta.15

2 years ago

3.0.0-beta.16

2 years ago

3.0.0-beta.17

2 years ago

3.0.0-beta.18

2 years ago

2.2.0

2 years ago

3.0.0-beta.10

2 years ago

3.0.0-beta.11

2 years ago

3.0.0-beta.12

2 years ago

3.0.0-beta.1

2 years ago

3.0.0-beta.0

2 years ago

3.0.0-beta.3

2 years ago

3.0.0-beta.2

2 years ago

3.0.0-beta.5

2 years ago

3.0.0-beta.4

2 years ago

3.0.0-beta.7

2 years ago

3.0.0-beta.9

2 years ago

3.0.0-beta.8

2 years ago

2.1.4

2 years ago

2.1.3

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

2.1.2

2 years ago

2.1.1

2 years ago

2.0.0-alpha.32

2 years ago

2.0.0-alpha.31

2 years ago

2.0.2-beta.0

2 years ago

2.0.2-beta.1

2 years ago

2.1.0

2 years ago

2.1.0-beta.1

2 years ago

2.1.0-beta.0

2 years ago

2.1.0-beta.3

2 years ago

2.1.0-beta.2

2 years ago

2.1.0-beta.5

2 years ago

2.1.0-beta.4

2 years ago

2.1.1-beta.0

2 years ago

2.0.0-alpha.7

2 years ago

2.0.0-alpha.8

2 years ago

2.0.0-alpha.9

2 years ago

2.0.0-alpha.4

2 years ago

2.0.0-alpha.5

2 years ago

2.0.0-alpha.6

2 years ago

2.0.0-alpha.0

2 years ago

2.0.0-alpha.2

2 years ago

2.0.0-alpha.15

2 years ago

2.0.0-alpha.14

2 years ago

1.4.18-alpha.0

2 years ago

2.0.0-alpha.30

2 years ago

2.0.0-alpha.20

2 years ago

2.0.0-alpha.29

2 years ago

2.0.0-alpha.28

2 years ago

2.0.0-alpha.27

2 years ago

2.0.0-alpha.26

2 years ago

1.4.17

2 years ago

2.0.0-alpha.25

2 years ago

2.0.0-alpha.24

2 years ago

1.4.12-alpha.4

2 years ago

1.4.12-alpha.3

2 years ago

1.4.12-alpha.2

2 years ago

1.4.12-alpha.1

2 years ago

1.4.12-alpha.0

2 years ago

1.4.13-alpha.0

2 years ago

1.4.13

2 years ago

1.4.12

2 years ago

1.4.15

2 years ago

1.4.16

2 years ago

1.4.6

2 years ago

1.2.8

2 years ago

1.4.5

2 years ago

1.2.7

2 years ago

1.4.4

2 years ago

1.2.6

2 years ago

1.4.3

2 years ago

1.2.5

2 years ago

1.4.2

2 years ago

1.2.4

2 years ago

1.3.0

2 years ago

1.4.9-alpha.0

2 years ago

1.4.9-alpha.1

2 years ago

1.4.8

2 years ago

1.4.7

2 years ago

1.2.9

2 years ago

1.4.11-alpha.0

2 years ago

1.4.8-alpha.1

2 years ago

1.4.8-alpha.0

2 years ago

1.2.3

2 years ago

1.2.1

2 years ago

1.2.0

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago