forum

osu!Skills

posted
Total Posts
1,732
show more
srb2thepast
I'm trying to make an offline version of osu!skills that would locally update your selected skill every time you submit a map in your top 100 plays, similarly to the ingame rank gain system you get from gaining pp, but when I tried to map the calculations for Tenacity on desmos I just get an equation that just creates a flat equation when you add more length to it

the way created the equation was:


and the equation in in code is:


double intervalScaled = 1.0 / pow(longestStream.interval, pow(longestStream.interval, GetVar("Tenacity", "IntervalPow")) * GetVar("Tenacity", "IntervalMult")) * GetVar("Tenacity", "IntervalMult2");

double lengthScaled = pow(GetVar("Tenacity", "LengthDivisor") / longestStream.length, GetVar("Tenacity", "LengthDivisor") / longestStream.length * GetVar("Tenacity", "LengthMult"));

double tenacity = intervalScaled * lengthScaled;

beatmap.skills.tenacity = tenacity;

beatmap.skills.tenacity = GetVar("Tenacity", "TotalMult") * pow(beatmap.skills.tenacity, GetVar("Tenacity", "TotalPow"));

return beatmap.skills.tenacity;

(from https://github.com/Kert/osuSkills/blob/master/tenacity.cpp)
abraker

Zemqu wrote:

This is sadly not the case. It seems to be bugged. Even manually adding the score does not make it show up in my list of plays.
I'll let kert know


srb2thepast wrote:

...
Can you share the desmos link?

also you can put code in [code][/code ] tags
srb2thepast

abraker wrote:

Zemqu wrote:

This is sadly not the case. It seems to be bugged. Even manually adding the score does not make it show up in my list of plays.
I'll let kert know


srb2thepast wrote:

...
Can you share the desmos link?

also you can put code in [code][/code ] tags


https://www.desmos.com/calculator/kfjvm1ujkr is the link to the graph, I sorted each section out so that it's not 30 lines seemingly scattered everywhere, and thanks for letting me know about the [code] [/code ] tags since i'll probably be using those a lott
abraker
double intervalScaled = 1.0 / pow(longestStream.interval, pow(longestStream.interval, GetVar("Tenacity", "IntervalPow")) * GetVar("Tenacity", "IntervalMult")) * GetVar("Tenacity", "IntervalMult2");
double lengthScaled = pow(GetVar("Tenacity", "LengthDivisor") / longestStream.length, GetVar("Tenacity", "LengthDivisor") / longestStream.length * GetVar("Tenacity", "LengthMult"));
double tenacity = intervalScaled * lengthScaled;
beatmap.skills.tenacity = tenacity;
beatmap.skills.tenacity = GetVar("Tenacity", "TotalMult") * pow(beatmap.skills.tenacity, GetVar("Tenacity", "TotalPow"));
return beatmap.skills.tenacity;

So first I took the code and simplified it to something that is can be better understood:

_IScaled = X_IntervalMult2 / (M_longestStreamI ^ (M_longestStreamI ^ X_IntervalPow) * X_IntervalMult);
_LScaled = (X_LengthDivisor / M_longestStreamL) ^ (X_LengthDivisor / M_longestStreamL * X_LengthMult);
S_tenacity = X_TotalMult * (_IScaled * _LScaled) ^ X_totalPow;

Notice the prefixes. They help with knowing where the values are coming from. "_" prefix are local variables. "M_" prefix come from the map. "X_" prefix are free variables. "S_" prefix are final skill values.

The desmos link you provided is kinda of a mess, so I redid it: https://www.desmos.com/calculator/kbgnn5wlhr
Finally, it's hard to know what values are reasonable for the free variables. There is already an existing offline calculator kert made that shows default values for these free variables:



I do find it weird that skill values decreases as you add more length to it. I am not sure what's up with that. I don't feel like spending a better part of my day launching the skill calc in VS Studio to figure that one out right now.
praeludium
Heyo, I noticed there were a lot of restricted players in the rankings; they go as following

  1. u/Alusim
  2. u/-Kiyoko
  3. u/im bad
  4. u/Theodore
  5. u/czapek
  6. u/akia
  7. u/im alright
  8. u/Atteno
  9. u/osu gameur
  10. u/Mokebe
  11. u/hustin
  12. u/[Nixo]
  13. u/Tylerr
  14. u/seneaL
  15. u/ant0ni
  16. u/mbruhyo
  17. u/rektygon trash
  18. u/Satalia
While I don't think that restricted players should be removed completely from the site for archiving purposes, I believe that removing them from the rankings is necessary because how it is right now, cheating players impact the rank of legit players.
srb2thepast

abraker wrote:

double intervalScaled = 1.0 / pow(longestStream.interval, pow(longestStream.interval, GetVar("Tenacity", "IntervalPow")) * GetVar("Tenacity", "IntervalMult")) * GetVar("Tenacity", "IntervalMult2");
double lengthScaled = pow(GetVar("Tenacity", "LengthDivisor") / longestStream.length, GetVar("Tenacity", "LengthDivisor") / longestStream.length * GetVar("Tenacity", "LengthMult"));
double tenacity = intervalScaled * lengthScaled;
beatmap.skills.tenacity = tenacity;
beatmap.skills.tenacity = GetVar("Tenacity", "TotalMult") * pow(beatmap.skills.tenacity, GetVar("Tenacity", "TotalPow"));
return beatmap.skills.tenacity;

So first I took the code and simplified it to something that is can be better understood:

_IScaled = X_IntervalMult2 / (M_longestStreamI ^ (M_longestStreamI ^ X_IntervalPow) * X_IntervalMult);
_LScaled = (X_LengthDivisor / M_longestStreamL) ^ (X_LengthDivisor / M_longestStreamL * X_LengthMult);
S_tenacity = X_TotalMult * (_IScaled * _LScaled) ^ X_totalPow;

Notice the prefixes. They help with knowing where the values are coming from. "_" prefix are local variables. "M_" prefix come from the map. "X_" prefix are free variables. "S_" prefix are final skill values.

The desmos link you provided is kinda of a mess, so I redid it: https://www.desmos.com/calculator/kbgnn5wlhr
Finally, it's hard to know what values are reasonable for the free variables. There is already an existing offline calculator kert made that shows default values for these free variables:



I do find it weird that skill values decreases as you add more length to it. I am not sure what's up with that. I don't feel like spending a better part of my day launching the skill calc in VS Studio to figure that one out right now.
Thanks for the help, and if you're still interested, I tried changing the M_ values and it looks like it also decreases tenacity when length and interval increase at the same time as well, while if you set them both to a low number like 3 you get a tenacity value of 3315 when in reality its just clicking 3 circles in 3 seconds...






I did the something similar (but with increased length and interval) for a map that only has streams with the skill calculator, but the results were different and a bit more accurate there.
(1440 notes of only streams on 180 bpm for ~120 seconds.)

GUI result:


Graph result:


The equation in the code for interval was
1.0 / pow(longestStream.interval, pow(longestStream.interval, GetVar("Tenacity", "IntervalPow")) * GetVar("Tenacity", "IntervalMult")) * GetVar("Tenacity", "IntervalMult2");
but i saw you replaced the "1.0" with "X_IntervalMult2", (which looks a lot better than 1.0), and since all of these versions of the code are making completely different results do you think this means that the code in the open source version for tenacity is incorrect? It looks like the website and offline calculator scales the values for tenacity correctly.

I think I found some of the problem, I_Scaled had the length of the stream instead of the interval in its equation, so now the skill value increases when you add more length.

When you increase the interval, the graph looks like this:



I was thinking that it would trade off into stamina, except I realized in this case something like a burst that has 8 circles in 1 interval gives you a tenacity value of 4961.
abraker

srb2thepast wrote:

The equation in the code for interval was
1.0 / pow(longestStream.interval, pow(longestStream.interval, GetVar("Tenacity", "IntervalPow")) * GetVar("Tenacity", "IntervalMult")) * GetVar("Tenacity", "IntervalMult2");
but i saw you replaced the "1.0" with "X_IntervalMult2", (which looks a lot better than 1.0), and since all of these versions of the code are making completely different results do you think this means that the code in the open source version for tenacity is incorrect? It looks like the website and offline calculator scales the values for tenacity correctly.
The versions are different representations of the same thing
look
1.0 / pow(longestStream.interval, pow(longestStream.interval, GetVar("Tenacity", "IntervalPow")) * GetVar("Tenacity", "IntervalMult")) * GetVar("Tenacity", "IntervalMult2");
1.0 / pow(M_longestStreamI, pow(M_longestStreamI, X_IntervalPow) * X_IntervalMult) * X_IntervalMult2;
1.0 / (M_longestStreamI ^ (pow(M_longestStreamI, X_IntervalPow) * X_IntervalMult)) * X_IntervalMult2;
1.0 / (M_longestStreamI ^ ((M_longestStreamI ^ X_IntervalPow) * X_IntervalMult)) * X_IntervalMult2;
X_IntervalMult2 / (M_longestStreamI ^ ((M_longestStreamI ^ X_IntervalPow) * X_IntervalMult));

.

srb2thepast wrote:

I think I found some of the problem, I_Scaled had the length of the stream instead of the interval in its equation, so now the skill value increases when you add more length.
oh, oops. Good catch!


srb2thepast wrote:

I was thinking that it would trade off into stamina, except I realized in this case something like a burst that has 8 circles in 1 interval gives you a tenacity value of 4961.
That's so broke. Tenacity is supposed be the skill for being able to do streams for long period of time. That burst would be more like speed skill, if it existed.
zerkala

abraker wrote:

You should be able to add them manually. Note it will grab the play with highest scored only.
you mean highest in osu score right bc I was talking about where I have a DT/HDDT fc sitting on top of a HR fc and the HR is worth a lot more in precision but osuskills cant see it so I shouldnt be able to add them manually.

Do you think having manual submission by the individual score urls as well would make this possible and not be too much/impossible to implement
abraker

Towa Tokoyami wrote:

abraker wrote:

You should be able to add them manually. Note it will grab the play with highest scored only.
you mean highest in osu score right bc I was talking about where I have a DT/HDDT fc sitting on top of a HR fc and the HR is worth a lot more in precision but osuskills cant see it so I shouldnt be able to add them manually.

Do you think having manual submission by the individual score urls as well would make this possible and not be too much/impossible to implement
idk that's web side stuff, which is kert's domain. Up to him.

As for calculator stuffs, at this point implementing anything new is a matter of whether we feel like looking at code and trying to remember what it does. It's been maybe 4 years since I touched code and I got other projects I am prioritizing, but I am willing to assist if anyone with coding experience wants to fix skill calc.
kingautist
You should make the titles based on rank instead of skill points.
Purplegaze
Display error for the length of bars when the green "+" indicators are visible



The bars for tenacity and agility appear to be the wrong length when the + is visible. Tenacity should be longer because 449>447, and it displays correctly when the + things aren't visible but it's wrong when it is



kingautist wrote:

You should make the titles based on rank instead of skill points.
This wouldn't make sense for less common skills such as memory and precision.
DeletedUser_8978079
Idk this recommendation algo seems all out of wack, if I go into training, load my profile and put on the relax profile I still only get ~5 maps I can actually play, to the point where I've been recommended 1kpp maps tens of times. For reference, I only have 1 400pp, and 3 other scores over 350. In this random screengrab I took, only 3/21 maps are under 350pp, meaning they are unrealistic for me to play (considering I put on the relaxed preset). If I don't put on the relaxed preset, basically all maps are 500+pp lol

meekakitty
Would it be possible to make your own "top plays" based on how many points they contribute to your skills?
duxeyo
how about replacing recaptcha with hcaptcha? recaptcha is pretty racist for some internet providers.
Sugar_owo
Cool.. i guess.
zTwister
Still working on reading?
Topic Starter
Kert
@MyAngelAku Removed the scores of mentioned banned accounts. Thanks

@Purplegaze Noted

Towa Tokoyami wrote:

Do you think having manual submission by the individual score urls as well would make this possible and not be too much/impossible to implement
We can only store 1 score per map per player because otherwise it will take too much space and also more scores per same map is a potential to abuse the system in many ways
Yukanna
youre working on reading still? or is it userbars youre going at currently?
serxne
Thanks for all the hard work you guys have done on this website and program. Is there any chance that a feature can be added to the osuskillsGUI program? (Window resizing) I know the program has been around for a long time and it will likely not happen, but I felt like reaching out to see if it could be a thing!

Again, thanks for the hard work on the algorithms and back-end stuff. You guys have done an amazing job. Recently, I felt like osu was nothing more than a pp/rank game for progression, but your website has helped me build new goals to become a better/well-rounded player.
Izzeee

Kert wrote:

We can only store 1 score per map per player because otherwise it will take too much space and also more scores per same map is a potential to abuse the system in many ways
Maybe there would be a way to have whatever score id you submit overwrite the previous score you had on the same map
ppengy
it dosent work for me, it just shows the account where someone took my name http://osuskills.com/user/LittlePengu_old

edit: just bought supporter and changed my name so it works now
TrueShotYT

LittlePengu_old wrote:

it dosent work for me, it just shows the account where someone took my name http://osuskills.com/user/LittlePengu_old
I believe that the "_" symbol may be unreadable for this website. Strange.
Underscorebaka
When will the reading skill be added?
Kalanluu
Manual submission down or does it take longer than 1 day usually?
witchhunted

Kalanluu wrote:

Manual submission down or does it take longer than 1 day usually?
It never worked for me for some reason, so I wait for the next day instead.
zerkala

Chatter wrote:

Kert wrote:

We can only store 1 score per map per player because otherwise it will take too much space and also more scores per same map is a potential to abuse the system in many ways
Maybe there would be a way to have whatever score id you submit overwrite the previous score you had on the same map
sorry if this was already talked about somewhere else and denied but I do wanna bump this in case it was overlooked as a possibility as long as its not too much to try and implement
nyaarin
http://osuskills.com/user/Kurtisdede/skill/accuracy uh oh, scores from Lazer(which can be broken to extreme extent) are showing up on my profile...

http://osuskills.com/user/Kurtisdede/skill/agility oh god
Rimuruu

Kurtisdede wrote:

http://osuskills.com/user/Kurtisdede/skill/accuracy uh oh, scores from Lazer(which can be broken to extreme extent) are showing up on my profile...

http://osuskills.com/user/Kurtisdede/skill/agility oh god
http://osuskills.com/user/Rimuruu/skill/stamina Same dude... lazer scores literally ruined my profile even tho i didnt get pp from those
abraker
I have notified kert a few days back. Still waiting for a response :\
goink
i've manually submitted this beatmap to my profile several times, oddly to no avail. what can i do about this? neither of the either 2 fcs have it on their profiles either
whl
for some reason, everything works and updates fine, except for my memory scores
it's been going on like this for months, and the only score it submitted was a 89 acc play on harumachi, that ive since turned into an SS
osuskills.com/user/whl/skill/memory
am i doing something wrong while submitting maps?
Underscorebaka
Can we get a statistic calculator for each beatmap, it'd sorta function like the ezpp! browser extension but instead it'd calculate the skill gain
Thenewbert
After I last updated my profile, my title changed from ambitious to versatile. On the picture that tells you what the titles are supposed to indicate about your playstyle, ambitious, versatile, and ??? all have the same qualifacations on the picture. What I'm wondering is what is the difference between the three, and are any of these three titles better than the other two?
abraker

Thenewbert wrote:

After I last updated my profile, my title changed from ambitious to versatile. On the picture that tells you what the titles are supposed to indicate about your playstyle, ambitious, versatile, and ??? all have the same qualifacations on the picture. What I'm wondering is what is the difference between the three, and are any of these three titles better than the other two?
Change to versatile means the average of stamina, tenacity, agility, and accuracy are now above 400
Ambitious is when average of those skills if below 400

The ??? one is not implemented
Elanie
Can you remove this player u/dr jazza from the osu!skills rankings? They just got restricted recently.
nyaarin

abraker wrote:

I have notified kert a few days back. Still waiting for a response :\
Still no response, right? He might have burnt out on this project...
abraker

Kurtisdede wrote:

abraker wrote:

I have notified kert a few days back. Still waiting for a response :\
Still no response, right? He might have burnt out on this project...
He responded but did not give indication when he will fix stuff :(

As far as I know the broken plays coming from lazer is not a simple fix.
dinati
scores/osu/3743996623 this play was never submitted even tho i manually did it few times, same with scores/osu/3691345154 this one. Send help.
viagra
scores/osu/3687577501
scores/osu/3679647023 my flashlight plays aren't submitting even though i manually submitted the maps, hence not giving me any memory skill
witchhunted

marijuana wrote:

scores/osu/3687577501
scores/osu/3679647023 my flashlight plays aren't submitting even though i manually submitted the maps, hence not giving me any memory skill
pretty sure its because you have better scores with nomod on both maps.

dinati wrote:

scores/osu/3743996623 this play was never submitted even tho i manually did it few times, same with scores/osu/3691345154 this one. Send help.
when the map is way too short with fl, it wont count in memory.
show more
Please sign in to reply.

New reply