osudroid / osu-droid

http://osudroid.moe
Apache License 2.0
545 stars 79 forks source link

Difficulty calculation breaks down at very high CS #88

Closed Rian8337 closed 3 years ago

Rian8337 commented 3 years ago

This formula will break down in CS≥85/7, which is approximately 12.14. The situation can be achieved using SC (small circle) mod in combination with HR in high CS maps such as this. When such cases happen, the hitobject radius will be negative.

The original osu! implementation caps the CS at 10 both in gameplay and difficulty calculation.

None1637 commented 3 years ago

In https://github.com/osudroid/osu-droid/blob/336ba7f0c98d03e8510cd7d0d7a2a468b097a483/src/ru/nsu/ccfit/zuev/osu/game/GameScene.java#L348 ` scale = (float) ((Config.getRES_HEIGHT() / 480.0f)

Rian8337 commented 3 years ago

Should just cap the difficulty calculation part at 10 for feature parity with osu! PC? Or use 85/7 instead?

None1637 commented 3 years ago

Should just cap the difficulty calculation part at 10 for feature parity with osu! PC? Or use 85/7 instead?

use 85/7 or 12? But I have a idea is Map CS10-17.62(in game play) to CS10-12.14(in difficulty calculation), and cap the difficulty calculation part to block negative CS

Rian8337 commented 3 years ago

use 85/7 or 12? But I have a idea is Map CS10-17.62(in game play) to CS10-12.14(in difficulty calculation), and cap the difficulty calculation part to block negative CS

Actually, we can't use 85/7 since: https://github.com/osudroid/osu-droid/blob/336ba7f0c98d03e8510cd7d0d7a2a468b097a483/src/test/tpdifficulty/tp/tpHitObject.java#L52 This will result in division by zero.

I'm neutral about the mapping part.

None1637 commented 3 years ago

use 85/7 or 12? But I have a idea is Map CS10-17.62(in game play) to CS10-12.14(in difficulty calculation), and cap the difficulty calculation part to block negative CS

Actually, we can't use 85/7 since:

https://github.com/osudroid/osu-droid/blob/336ba7f0c98d03e8510cd7d0d7a2a468b097a483/src/test/tpdifficulty/tp/tpHitObject.java#L52

This will result in division by zero.

I'm neutral about the mapping part.

I use 12.14f in my next pr, not 85/7

Rian8337 commented 3 years ago

Maybe need to cap gameplay CS at certain threshold too since its increase beyond 17.62 will actually make the circle size bigger instead of smaller. https://github.com/osudroid/osu-droid/blob/336ba7f0c98d03e8510cd7d0d7a2a468b097a483/src/ru/nsu/ccfit/zuev/osu/game/HitCircle.java#L81-L82

None1637 commented 3 years ago

Maybe need to cap gameplay CS at certain threshold too since its increase beyond 17.62 will actually make the circle size bigger instead of smaller.

https://github.com/osudroid/osu-droid/blob/336ba7f0c98d03e8510cd7d0d7a2a468b097a483/src/ru/nsu/ccfit/zuev/osu/game/HitCircle.java#L81-L82

Fixed in #89