Hello,
playing osu!catch i've noticed two unwnated/questionnable behaviours concerning the catching of banana.
First, as most of you know, the auto mode (bot) catches all bananas, which is not actually possible.
Secondly and mostly, scoreV2 isn't limited to one million, even with no mod, because the bananas actually count as bonus points.
While this could be the intended final behaviour, it occured to me that it could also be a temporary solution if the optimal way to catch the bananas in reality is unknown.
The purpose of this post is to point out that's it's actually extremely easy to compute that optimal catching. It would be roughly linear in memory and time, in the number of bananas. What's more, it wouldn't take more than ten lines of code with dynamic programming.
Technical explanation : Say you have B your set of bananas with their "coordinates" (I don't know how it's actually implemented). Given to bananas b and b', it's trivial to know if it's possible to catch both, considering their distance in space and in time, and the dashing speed. Then for any b in B, you can say fb is the maximum number of bananas it's possible to catch before catching b. Then you can compute recursively fb by noticing that fb equals max fb'+1 for all b' catchable before b , and fb equals 0 if no banana is catchable before b. Then, the maximum amount of banana it' possible to catch is the maximum of fb on B plus one.
Warning 1 : I don't know if it's obvious, but you have to store all fb in an array , and check if you have already computed fb before calling the recursive formula. Otherwise, the complexity becomes exponential.
Warning 2 : This method doesn't account for the notes before and after the spinner. Maybe some banana are impossible to ctach after catching the last note before for instance.
Please ask for more details on how to get which bananas it is optimal to catch, code exemple etc..., or if i've not been clear enough. I apologize for not using readble notations, it was blocked by the sql injections protection. Thank you for your attention.
playing osu!catch i've noticed two unwnated/questionnable behaviours concerning the catching of banana.
First, as most of you know, the auto mode (bot) catches all bananas, which is not actually possible.
Secondly and mostly, scoreV2 isn't limited to one million, even with no mod, because the bananas actually count as bonus points.
While this could be the intended final behaviour, it occured to me that it could also be a temporary solution if the optimal way to catch the bananas in reality is unknown.
The purpose of this post is to point out that's it's actually extremely easy to compute that optimal catching. It would be roughly linear in memory and time, in the number of bananas. What's more, it wouldn't take more than ten lines of code with dynamic programming.
Technical explanation : Say you have B your set of bananas with their "coordinates" (I don't know how it's actually implemented). Given to bananas b and b', it's trivial to know if it's possible to catch both, considering their distance in space and in time, and the dashing speed. Then for any b in B, you can say fb is the maximum number of bananas it's possible to catch before catching b. Then you can compute recursively fb by noticing that fb equals max fb'+1 for all b' catchable before b , and fb equals 0 if no banana is catchable before b. Then, the maximum amount of banana it' possible to catch is the maximum of fb on B plus one.
Warning 1 : I don't know if it's obvious, but you have to store all fb in an array , and check if you have already computed fb before calling the recursive formula. Otherwise, the complexity becomes exponential.
Warning 2 : This method doesn't account for the notes before and after the spinner. Maybe some banana are impossible to ctach after catching the last note before for instance.
Please ask for more details on how to get which bananas it is optimal to catch, code exemple etc..., or if i've not been clear enough. I apologize for not using readble notations, it was blocked by the sql injections protection. Thank you for your attention.