Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[Feature Request] More Sorting Options #18

Open
JohnyDL opened this issue May 19, 2020 · 7 comments
Open

[Feature Request] More Sorting Options #18

JohnyDL opened this issue May 19, 2020 · 7 comments
Assignees
Labels
feature request New feature or request

Comments

@JohnyDL
Copy link

JohnyDL commented May 19, 2020

So currently there are a handful of ways to sort, newest, times played, and such but I have some additional ways to sort that would be really handy

Peak difficulty - I don't know exactly how to do this, beat hop time? but being able to see what songs I could do that are about the same difficulty as those I've FC'd or SS'd would give me ways to improve

Average difficulty - the average time between beats? Like with the peak difficulty the average difficulty would allow me to find songs near my level

Player Score (absolute) - the player's best solo scores, sometimes I want to beat my worst scores into submission or score on the songs I've still not managed to and other times I want to feel pro and just work out to the songs I've got great scores in already

Player Score (%) - the player's best solo %s, like with absolute score sorting this helps find the songs you're best or worst at.

Global Score (%) - the average % score of best 100 plays on leader board. This would give a snapshot of what the best players find the most difficult levels. (or the songs you stand the best chance of getting onto that leaderboard)

Time since last play - kinda like number of times played this helps find songs you're familiar with or working on and/or songs you haven't played in a while

Minimum Notes missed - when chasing the FC achievement knowing what songs are only one or two notes from perfection.

All the Counter+ stats

I don't know how easy any of these will be but any one of them would be a great addition to the way I play. I'm sure I can come up with others ways to sort too given time. Combining these with the many filter options could be really powerful ^_^

@chrislee0419
Copy link
Owner

chrislee0419 commented May 25, 2020

Hey JohnyDL, thanks for the suggestions! I was already planning on reworking the song sorting to some degree, so I guess this came in at a pretty good time.

Regarding each suggested sort mode:

Peak difficulty/average difficulty

This one is going to be hard to do for peak difficulty, surprisingly. By difficulty, I would assume you mean something like note density? If that was the case, average difficulty/note density is easy to do, since I have easy access to total note count and beatmap length. Peak difficulty would require me to analyze each characteristic + difficulty of all songs, which just isn't feasible to do in a sufficiently short amount of time.

Player Score (absolute)/Player Score (%)

Best score of what difficulty? Characteristic? I'd imagine that you would want the score of the highest difficulty that you've beaten, regardless of characteristic, but I don't think there's any good way to communicate this information to the player.
Or what if a player finished an Expert+ map on no fail and decided that they would rather stick to Expert? Then this sort mode would no longer work in a way that provides them with some utility. Hence why I think this would be a pretty confusing sort mode to use.

Global Score (%)

This one just isn't possible right now. The existing ScoreSaber API just doesn't have a way to batch requests as far as I know. And there's no way I'm having users send thousands of API requests at the press of a button for the top 100 plays of each leaderboard (for each difficulty and characteristic) for an entire list of songs. Perhaps this would be doable with a scraper, but that's a lot of work to get into for one part of one feature.

Time since last play

Already recorded down as something I plan on doing. Someone else has requested this as well.

Minimum Notes missed

This isn't data that is stored by Beat Saber. Initially I thought I might be able to get the data from the SongPlayHistory mod, but it appears that they don't store that information either. This does seem to be doable, but I'll have to think about how to approach this with the systems I already have in place, so I'm unsure if I can say for certain that this will be a thing.

All the Counter+ stats

You're going to have to give me a bunch more info than that. As far as I know, Counters+ doesn't have/show any stats that persists between play sessions. Additionally, if those stats that you are intending to use for a sort aren't stored anywhere, I'm not going out of my way to check if a player has Counters+ installed and then record those stats myself.

Sorry if this came off as being dismissive of your ideas, but a bunch of them just aren't feasible with the current systems in place or may be a source of confusion for another player.

@chrislee0419 chrislee0419 added the feature request New feature or request label May 25, 2020
@chrislee0419 chrislee0419 self-assigned this May 25, 2020
@JohnyDL
Copy link
Author

JohnyDL commented Jun 3, 2020

Peak/average difficulty There's already a mod that analyses difficulty of the song and presents it as a graph Mod is Song Chart Visualiser, it may be that player has to play a song once before you can save the data from the graph to run searches on, I think that'd be a pretty good way of saying "give everything a go once without warning" kinda deal but I can see that being a killer for you. Peak difficulty is just the max number on that chart, and the 'average difficulty' would be the line that divides the area of that graph. Like Counters+ you might not be okay with needing to rely on other mods,

Player Score I think this would work best with the filters, if you're looking at hard songs then show the hard scores, another option is whatever the game would pick for you to play given your difficulty selection, if you chose Hard and a level has no hard mode then it'll show the score of whatever difficulty beatsaber would default to in that case... in a perfect world I'd like for the sort to just separate each song at each difficulty and treat them as different levels if this was an option so I could compare and selecting another difficulty of the same song bounces you up or down the list (this would also be great for comparing difficulties because well the hard expert and expert+ are all kinda subjective based on what the map makers think)

Global % This was my sort of psuedo difficulty, if the top 10 or 100 scores are 100%s then it's more likely to be an easier map than if the top 100 scores are 85-95%s and that's easier again than something that's got an average score for the top 100 in the 60s% or 70s% I know that when you look at a song and you've got the high score list up all the data seems to be there and I doubt it'd refresh every time you look at a song but I might be wrong about that. If it's already cached then like with the song chart visualiser you could do the maths if/when the data is available and when it's not give them a 0 as a place holder until the data does become available. That way you're not making 20,000+ calls when you want to do the sort for 200+ songs, your sort is just piggybacking on the calls the other mods are already doing. And users would necessarily need the scoresabre mod installed to have access to this search. Though I'm sure you're not going to be any happier with this than requiring Counters+

Minimum notes missed is so so close to being the maximum combo that I'm surprised no-one already stores this information (or do they store it as maximum notes hit and then maths needs doing to get the notes missed). I think missing only 1 note or only 3 notes tells you a lot more about how close to a Full Combo you are than comparing Maximum combo to the Note count, a relatively tame section of a song can artificially inflate the maximum combo, but if there's a section you're hanging on by fractions of the energy bar and missing 20 or 30 notes in that section while just staying alive then a Max combo of more than half the notes doesn't make you close to half way to getting the FC.

Counters+ in the song selection menu adds more stats about the song: song length, BPM, notes per second, note count, obstacle count, bombs count, there are three others that Counters+ adds to that list too but there's no tooltips for them one looks like a star, another a graph and the third is a speedometer. I think that all these are just stats about the song that the mod makes visible they're not anything to do with how well a player has achieved on that level. (I think)

I know I was asking an awful lot and I was expecting to be shot down on everything, that there were at least some that you didn't write off completely is great. I hope my feedback helps even if it's taken more than a week to get back to you.

@jcc10
Copy link

jcc10 commented Jun 4, 2020

I would just like to add that being able to sort by the stat of notes per second is the one feature I really need. It's the easiest way for me to see what songs are "Warmup/Cooldown", "At My Level", "Out Of My League". (I.E: right now I can do a max of ~4.0 NPS and any less then 3.0 feels really slow and boring.)

@chrislee0419
Copy link
Owner

Peak/average difficulty

I wouldn't need to use Song Chart Visualizer measuring difficulty, since that mod calculates difficulty purely using notes per second, which is something I can calculate on my own. But again, anything that requires me to perform calculations on each beatmap's characteristic and each characteristic's difficulty is going to be prohibitively slow. That's precisely the reason why using filters requires you to wait for it to load (and why it's so slow for first load/after downloading a lot of beatmaps).

Also, I realize in my previous comment that I said that average notes per second is easy to do. But it still has the same issue I have against the Player Score sort: which characteristic and difficulty? And how can that be effectively communicated to the player using the sort?

To @jcc10, regarding your comment about notes per second. The NPS filter already exists, so if you know exactly the range at which you want to play at, I think you are going to be much better served by the filter anyways.

Player Score

I actually kind of like the idea of having difficulty be a separate row in the song list and selecting another difficulty causes the game to move to a different row. However, this is something that I know is going to take a lot of effort to architect correctly that I don't think it is worth doing at this moment. Especially since I don't know how many people would actually use such a sort mode.

Global %

The ScoreSaber mod is a "black box". The code is obfuscated and it's closed source, so there's no way for me to piggyback it.

Counters+

Counters+ doesn't add anything in the song list UI. Are you maybe talking about SongBrowser? SongBrowser adds three icons to the song details: a chart signifying maximum PP that can be earned, a star signifying star difficulty (something calculated by ScoreSaber), and a speedometer signifying NJS. PP sorting is already something I'm planning to add. Star difficulty is a maybe (I honestly don't think star difficulty is all that useful despite making a filter for it, simply because the vast majority of songs aren't rated). NJS is a definite no because it just isn't useful.

By the way, keep in mind that if you are using SongBrowser, you won't have access to the sort modes provided by this mod since SongBrowser provides it's own sorting methods. This mod was never meant to replace SongBrowser anyways, but rather augment it by providing more options for searching and filtering (hence the name of the mod). The basic sort modes (and fast page up/down and random song) offered by this mod were originally only meant for players who used BeatSaverDownloader's UI (which has since been removed) instead of SongBrowser's.

@JohnyDL
Copy link
Author

JohnyDL commented Jun 7, 2020

I thought Song Chart Visualizer did more than notes per second, it seemed to me that it might work on the difficulty to hit notes too based on their distance apart and direction, I'm probably wrong I haven't looked into the code. It does something more than just average notes across the whole song which is what I assumed notes per second to mean, 1000 notes/4 minute song = 4.2NPS, even if there's a section with 30 seconds at less than 1NPS and another with 8NPS the NPS rating is for the whole song. I never look at the NPS as a way to judge if I should attempt a song, because of this limitation, a consistent 2 or 3 NPS can be quite a challenge and a good warm up, FCs and ranks all depend, at least for me, on how warmed up/exhausted I am, how much practice with the song I've had and if the notes flow or seem to require a lot of redirection, I have a lot of fun with the RWBY soundtrack and I can complete with S rank (81%) a 5.09 Expert+ (Red Like Roses pt 2), but Bohemian Rhapsody a 2.78 on Expert should be a lot easier I've FC'd and SS'd harder, but I've only got an A (72%) on it and a MC of 221/991, I think though I can't be certain my fewest notes missed is in the teens on RLR2 and late 20s on BR.

Yeah I know separating the difficulties out would be hard (and the navigation jumps would be largely unused by most people I'm guessing) but it would simplify the whole explaining which characteristic and difficulty each characteristic and difficulty is separated as it's own level so there's no need to explain this to the user, the one they can see is the one that is at this point in the order, if they want to specifically look at one difficulty type or play mode and so on that's what filters are for right ;) If it could be done it makes a lot of things easier, but doing it might not be worth the effort. I might have to put up with inadequate ordering on the whole.

That's a real shame about Score Saber :( oh well if you can't do it then that's fine.

I might be, for some reason I thought it was Counter+ What on earth are PP? I've never been able to work out what that stands for? Power Points? but even so I've never been able to work out the point of them in BeatSaber but it's good to know where I can see them, SongBrowser being at the very bottom of the list in Mod Assistant I must have overlooked it recently when looking at who to make suggestions to, though I clearly installed it at some point and I might be very confused about what sorting and filtering I'm using since I have both installed :/ I'm going to have to go away and hide in shame a bit I just assumed all the sorting and filtering I was getting was offered by you and most of the extra stats by counters+, I'm gonna thank you for your help and uninstall Song Browser to see what is yours and what is theirs so I don't keep confusing you (and me) unnecessarily.

@chrislee0419
Copy link
Owner

All of SongChartVisualizer's relevant calculations can be found here. It segments a song into 25 note sections and calculates the NPS of each segment using the span of time for those 25 notes.

If you wanted a more accurate, singular number of a level's difficulty, the only alternative I'm aware of is ScoreSaber's star difficulty. But as mentioned previously, it's of limited utility because of how few songs get rated. Plus, from what I've been hearing, it still isn't a great indicator of difficulty (at least at higher levels, it probably does fine at lower levels).

PP stands for performance points and is a number assigned by ScoreSaber to ranked songs (songs that contribute to your placement in their global player ranking) that indicates how difficult the song is (if I remember correctly, it's partially based off of their star difficulty calculation, but not entirely). It also represents the points you earn from a given level if you were to somehow 100% it (otherwise, you earn a portion of it depending on your score).

By the way, if you're using SongBrowser, there are only two things I do: change the "Search" button to point to this mod's search functionality and add the "Other Filters" button to allow filtering on song metadata based on a player's own criteria.

@JohnyDL
Copy link
Author

JohnyDL commented Jun 9, 2020

Oooh that makes sense of why the last section of a song is sometimes a spike too even though it might not be as difficult.., using the peak NPS based on shortest 25 notes would be a massive pain to compute, I can see that, it's fine for the one song you're currently playing but doing it for every song all at the same time would be bad. Spreading the time to calculate such things out and being able to store the results for use anytime would be best but the more I think about it the less feasible that seems too :(

Yeah there's no easy one number that works in all cases unfortunately with the exception of playing every one, assuming that you don't get better as you play and that you play equally well every time, and then comparing the %s which is why I suggested the %s based on the top players/scores they might be getting better over time but they'll largely be pushing against the upper limits of what they're capable of or what's possible in that particular song or both, they could play 100 hours of songs and the improvement they make on any given song might be fractional compared to my playing another 100 hours of varying songs, that doubling how long I've been in beat sabre and, I hope, having far more quantifiable and objective improvement on my abilities.

Thanks ^_^ I think I'll continue to pay it no notice XD at least for now... I'm not really chasing high scores and the leadership as much as wanting to improve against myself, I'm using VR for exercise and it's working but I want better ways to compete with myself and see that improvement, you know. Trying a song a few times and a week later being able to beat my scores easily is really satisfying, that might get drowned out if I'm competing too much on the leader boards and other people are overtaking me faster than I get better.

nod I've been playing without song browser and yeah I can live without it, you offer sorting by play count anyway which is generally how I sort things right now since there's nothing that works better for me yet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants