Hello everyone,
I have ported osu!tp's difficulty calculator to C# using the osu! sdk. Since I am not very versatile with C#, please forgive me if you find some weird code.
The code has been filled with explanations to almost any step, so please read through it before asking questions.
If you feel, that something has not been answered or if you have a suggestion how to do something better, then I'd be happy if you'd let me know.
Adetailed (not from a programmer's point of view) brief explaination of how it works can be found on the osu!tp info page.
Source code:
https://github.com/Tom94/AiModtpDifficultyCalculator
Everything is released into the public domain, meaning you can do with it whatever you want.
How to use:
Since I have not uploaded any compiled binaries, you will have to compile the code yourself.
Simply delete "<your osu! folder>\Plugins\AiMod\AiModtpDifficultyCalculator.dll".
Final remarks:
I do not claim this algorithm to be "correct". My goal with it is to satisfy as many people as possible, but there will always be tradeoffs. Some parts of the algorithm are just approximations of reality (for example scaling beatmaps to achieve uniform CircleSize) and others are purely based on opinion (scaling factors, should OverallDifficulty be included?, etc.). Because of all this I ask you to provide your ideas if you think you solved a particular problem better than the algorithm does. But please keep it simple. The best solutions usually are short and elegant ones, that do not introduce a great amount of variables.
Feedback is appreciated.
I have ported osu!tp's difficulty calculator to C# using the osu! sdk. Since I am not very versatile with C#, please forgive me if you find some weird code.
The code has been filled with explanations to almost any step, so please read through it before asking questions.
If you feel, that something has not been answered or if you have a suggestion how to do something better, then I'd be happy if you'd let me know.
A
Source code:
https://github.com/Tom94/AiModtpDifficultyCalculator
Everything is released into the public domain, meaning you can do with it whatever you want.
How to use:
Since I have not uploaded any compiled binaries, you will have to compile the code yourself.
- Download the osu! sdk
- Put the AiModtpDifficultyCalculator source code into a new folder, which should be in the same directory as "osu!framework"
- Open the AiModtpDifficultyCalculator project with visual studio
- Alter Properties -> Build -> Output path to match "<your osu! folder>\Plugins\AiMod\". You have to create those folders if they do not exist already.
- Build the solution and then start osu!. You can automate this, by setting Properties -> Debug -> Start external program to your osu! executable.
- Go into the map editor of a beatmap of your choice and press Ctrl+Shift+a
Simply delete "<your osu! folder>\Plugins\AiMod\AiModtpDifficultyCalculator.dll".
Final remarks:
I do not claim this algorithm to be "correct". My goal with it is to satisfy as many people as possible, but there will always be tradeoffs. Some parts of the algorithm are just approximations of reality (for example scaling beatmaps to achieve uniform CircleSize) and others are purely based on opinion (scaling factors, should OverallDifficulty be included?, etc.). Because of all this I ask you to provide your ideas if you think you solved a particular problem better than the algorithm does. But please keep it simple. The best solutions usually are short and elegant ones, that do not introduce a great amount of variables.
Feedback is appreciated.