nise/mari/readme.md
2024-03-06 23:46:21 +01:00

1.2 KiB

mari

osu! utility lib in kotlin to manipulate replays and judgement data in a safe and performant way.

This module allows nise.moe to juggle a ton of replays and data around.

Usage

Compress / decompress judgement data

The Judgement data class ought to represent the way a player has played a specific beatmap. It contains the hit error, distance, etc for each hit object. The structure is based off the Circleguard Investigations.judgements return type.

You can use CompressJudgements.compress and CompressJudgements.decompress to losslessly store and retrieve judgement data. According to my estimates, the compressed data is about 33% the size of the original data.

Decode a replay

This method is fundamentally written with the assumption that it'll be used on user-provided replays. It is thus designed to be safe and to not crash on invalid replays.

OsuReplay allows you to safely decode an .osr file. Once you've parsed the file, you can instantiate a new class:

val replay = OsuReplay(replayFile.bytes)

If everything goes well, you can then start reading the replay data.

println(replay.playerName) // mrekk