-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
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
Remove combo scaling from Aim and Speed from osu! performance calculation #16280
Changes from 10 commits
cff9dab
86ad42a
489aa43
bac4cfe
60e2a8e
5640918
e9589e5
d514567
8ce6e3c
4f257d6
fd1028f
d2b815b
75be4e8
1320790
391110c
443640a
f07bfcd
dcb9693
b3e90c3
400abc1
5989467
1ae8ff0
da31ca1
94a46ab
c18df86
580e43b
0d4fe96
2f335a7
23d0c03
7d34542
0db910d
9f5f6b5
b32d73e
e2a5d19
1d19bd2
9b60abe
c1efcc0
9ff277c
20c54ab
61afda1
c25e1bd
a7e1d35
f54a5a5
f30ac5d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -95,11 +95,8 @@ private double computeAimValue() | |
(totalHits > 2000 ? Math.Log10(totalHits / 2000.0) * 0.5 : 0.0); | ||
aimValue *= lengthBonus; | ||
|
||
// Penalize misses by assessing # of misses relative to the total # of objects. Default a 3% reduction for any # of misses. | ||
if (effectiveMissCount > 0) | ||
aimValue *= 0.97 * Math.Pow(1 - Math.Pow((double)effectiveMissCount / totalHits, 0.775), effectiveMissCount); | ||
|
||
aimValue *= getComboScalingFactor(); | ||
aimValue *= calculateMissPenalty(effectiveMissCount, Attributes.AimDifficultStrainCount); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You should calculate miss penalty only once and save it into a variable in my opinion. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. the penalties for aim and speed are different because |
||
|
||
double approachRateFactor = 0.0; | ||
if (Attributes.ApproachRate > 10.33) | ||
|
@@ -142,11 +139,8 @@ private double computeSpeedValue() | |
(totalHits > 2000 ? Math.Log10(totalHits / 2000.0) * 0.5 : 0.0); | ||
speedValue *= lengthBonus; | ||
|
||
// Penalize misses by assessing # of misses relative to the total # of objects. Default a 3% reduction for any # of misses. | ||
if (effectiveMissCount > 0) | ||
speedValue *= 0.97 * Math.Pow(1 - Math.Pow((double)effectiveMissCount / totalHits, 0.775), Math.Pow(effectiveMissCount, .875)); | ||
|
||
speedValue *= getComboScalingFactor(); | ||
speedValue *= calculateMissPenalty(effectiveMissCount, Attributes.SpeedDifficultStrainCount); | ||
|
||
double approachRateFactor = 0.0; | ||
if (Attributes.ApproachRate > 10.33) | ||
|
@@ -263,6 +257,12 @@ private int calculateEffectiveMissCount() | |
} | ||
|
||
private double getComboScalingFactor() => Attributes.MaxCombo <= 0 ? 1.0 : Math.Min(Math.Pow(scoreMaxCombo, 0.8) / Math.Pow(Attributes.MaxCombo, 0.8), 1.0); | ||
|
||
private double calculateMissPenalty(double missCount, double strainCount) | ||
{ | ||
return 0.95 / ((missCount / (3 * Math.Sqrt(strainCount))) + 1); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This probably need some comments There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. not really sure what I could comment here, and I don't think it'd end up being very helpful anyway? have you got anything specific in mind There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Something about why exactly you need difficult strains here would be good I think. Basically just explain the idea so that people that have no idea what's going on could understand the motivation for this penalty |
||
} | ||
|
||
private int totalHits => countGreat + countOk + countMeh + countMiss; | ||
private int totalSuccessfulHits => countGreat + countOk + countMeh; | ||
} | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -57,5 +57,12 @@ public override double DifficultyValue() | |
|
||
return difficulty * DifficultyMultiplier; | ||
} | ||
|
||
public int RelevantDifficultStrains() | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Xmldoc? |
||
{ | ||
List<double> strains = GetCurrentStrainPeaks().OrderByDescending(d => d).ToList(); | ||
|
||
return strains.Count(s => s > strains[0] * 0.66); | ||
} | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Make
RelevantDifficultStrains
have clock rate as param instead? So that it'll be((OsuStrainSkill)skills[0]).RelevantDifficultStrains(clockRate);
andpublic int RelevantDifficultStrains(double clockRate)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yup, good idea.