ppy / osu-performance

Calculates user performance aggregates from scores
GNU Affero General Public License v3.0
241 stars 45 forks source link

Addition of pp to slider based on Slider Velocity #106

Closed kornkaobat closed 4 years ago

kornkaobat commented 4 years ago

I'm proposing a addition to slider pp from the base pp using weighted average summation of SV*bpm.

final_pp=base_pp+weightedavg_silder_pp weightedavg_silder_pp=((SV1*bpm1+SV2*bpm2+...+SVn*bpmn)/n*SV)*-log0.002(number of sliders)) ; where n represents the number of silder timing points present in the map if number of sliders < 1 set weightedavg_silder_pp=0

stanriders commented 4 years ago

Keep in mind that high SV doesn't mean sliders are difficult to complete

kornkaobat commented 4 years ago

@stanriders For example https://osu.ppy.sh/beatmapsets/659328#osu/1396342 (Diff:Expert) has a SV of 3.6 with a bpm of 142. If you cheese the slider, you lose accuracy pp and we could probably tweak the slider_pp based upon slider end completion too.

stanriders commented 4 years ago

There's no way to know if slider was completed or not

kornkaobat commented 4 years ago

@stanriders If I understand correctly, If you hit the slider head within the time frame, collect all slider ticks and hold z/x until the silder ball reaches the slider end, it is counted as fully completed. All other conditions render a miss/sliderbreak/slider end loss(100).

stanriders commented 4 years ago

Yes, and it's not being stored in the score. You can't distinguish if a 100 is from mistiming or sliderend drop.

Also, if you want to factor SV in the pp, dont forget about kicksliders - they can have extremely fast speed, but are as hard as just circles

kornkaobat commented 4 years ago

@stanriders Then we should calculate real slider distance by using Grid distance formula (D^2 = deltaX^2 + deltaY^2) and calculate the real velocity from V=S/T.

stanriders commented 4 years ago

But then again, you can cheese sliders and not get 100s, all you need to hit are slider ticks and slider end. Which brings us to the lazy slider path calculation that is already in the live pp

kornkaobat commented 4 years ago

@stanriders What about checking the player movements in .osr file and see if they follow the slider without cheesing? Is it possible mathematically speaking?

stanriders commented 4 years ago

PP system doesn't (and probably won't) have access to replays, mostly because we don't have every replay and it'll be impossible to recalculate most of the existing scores if you'd use replays for pp

kornkaobat commented 4 years ago

@stanriders Should we add continuous hidden ticks along the path of the slider to prevent cheesing and will that render some map unplayable?

stanriders commented 4 years ago

Sounds like a bad idea to me. Also slider tick rate is being controlled by the mappers already

MillhioreF commented 4 years ago

Also consider sliders that are meant to be "cheesed".

kornkaobat commented 4 years ago

I guess we'll have to stick with lazy slider pp calculation then.