forum

osu!Skills

posted
Total Posts
1,570
show more
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.
MyAngelAku
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
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.
Towa Tokoyami

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.
CptSlow
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

hi im sink
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
[-Vixnmis-]
youre working on reading still? or is it userbars youre going at currently?
SereneSkies
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.
Chatter

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
LittlePengu_old
it dosent work for me, it just shows the account where someone took my name http://osuskills.com/user/LittlePengu_old
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?
Please sign in to reply.

New reply