Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Qua SV de-/normalization, "BPM does not affect SV" and SV factor computation #80

Merged
merged 5 commits into from
Mar 14, 2020

Conversation

YaLTeR
Copy link
Member

@YaLTeR YaLTeR commented Mar 12, 2020

pr with quaver changes soon tm

SV de-/normalization

Adds SV normalization and denormalization routines to Qua. Normalized means "BPM does not affect SV", denormalized means "BPM affects SV".

Additionally, a new .qua field is added, BPMDoesNotAffectScrollVelocity. When this is set to true, SVs are assumed to be normalized in the .qua itself. If this flag is set before serializing, the .qua will be saved with normalized SVs. cc Quaver/Quaver#631

The normalization and denormalization routines were converted from the plitki implementation, which was very well tested. All tests were converted from there too.

This does not fix= Quaver/Quaver#1189 which means that issue is elsewhere in the Quaver code.

SV factor

I went through a few different iterations with this one, and the one in the PR seems to work best. That isn't to say it works extremely well, but it gets the job done more or less.

For future experiments, I attach a zip-archive of Quaver databases with SV factor computed for 15k osu!mania maps for every commit from my experimental branch. Open them with SQLite Browser, go to the Browse Data tab, click on the SVFactor header to sort by it. Hide unnecessary columns by left-click-dragging on the headers, right clicking and choosing Hide selected columns.

sv-changes-databases.zip

YaLTeR added 5 commits March 10, 2020 14:35
Adds SV normalization and denormalization routines to Qua.

Additionally, a new .qua field is added, BPMDoesNotAffectScrollVelocity.
When this is set to true, SVs are assumed to be normalized in the .qua
itself. If this flag is set before serializing, the .qua will be saved
with normalized SVs.

The normalization and denormalization routines were converted from the
plitki [1] implementation, which was very well tested. All tests were
converted from there too.

[1]: https://github.com/YaLTeR/plitki/blob/41e9dd034848222d5047524bd1a5fe74e1f88dab/plitki-map-qua/src/lib.rs#L289
The initial function, supposed to compute an "SV-ness" of a map.
It wasn't useful the way it was implemented.
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants