1. osu! forums
  2. osu!
  3. Development
posted
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.

A detailed (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.
  1. Download the osu! sdk
  2. Put the AiModtpDifficultyCalculator source code into a new folder, which should be in the same directory as "osu!framework"
  3. Open the AiModtpDifficultyCalculator project with visual studio
  4. Alter Properties -> Build -> Output path to match "<your osu! folder>\Plugins\AiMod\". You have to create those folders if they do not exist already.
  5. Build the solution and then start osu!. You can automate this, by setting Properties -> Debug -> Start external program to your osu! executable.
  6. Go into the map editor of a beatmap of your choice and press Ctrl+Shift+a


How to remove:
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. :)
posted
yay
posted
binaries please?
posted
I've compiled the binaries myself, for those who are lazy - you can download them here (just extract to your root osu! directory.)
These binaries will be out of date the moment the code is updated or changed at all, so if you want regular updates to the formula then you really should download Visual Studio and figure out how to compile it yourself.

Disclaimer: It is STRONGLY recommended that you compile this code yourself - downloading .dll files from the internet is dangerous. That being said, not everyone is willing to download large development software in order to compile what amounts to a few kilobytes of code, and I've looked through it myself before compiling and it's safe to the best of my knowledge, so download and use at your own risk.
posted
At least .NET dlls are easy to check for malicious code. Looking forward to taking a look through this and the feasibility of using it to replace existing eyupStars.
posted
cheked few maps with this and actually it looks pretty accurate
good job
posted
Thank you very much for this <3
posted
Oh my god! ♥
posted

peppy wrote:

At least .NET dlls are easy to check for malicious code. Looking forward to taking a look through this and the feasibility of using it to replace existing eyupStars.
Quoting this because I never thought I would hear peppy say it. Great things are happening in the land of osu!
posted
If this actually gets implemented, my hype for ppv2 will be through the roof! :D
posted

YayMii wrote:

If this actually gets implemented, my hype for ppv2 will be through the roof! :D
same! +111111
posted
9001
posted
Peppy if you actually consider using that code (or portions of it) I will love the direction osu! is heading. (And maybe you. A little.)
posted

YayMii wrote:

If this actually gets implemented, my hype for ppv2 will be through the roof! :D
ppv2 is not based off any static calculations, and I don't foresee this changing. that's not my intention when making a ranking algorithm. having a better star system will be a good benchmark for comparison, though.

nb: Please do not discuss pp in this thread. This is a difficulty rating system, and has nothing to do with a ranking system (pp); they are completely non-mutual concepts.
posted
After compiling it, what am I looking for? I downloaded Millhiore's folder and added it in, but I saw no change in anything. Was there already an update?
posted
If you are using test build, simply put a plugins folder into your osu! installation, then edit a selected beatmap and open AImod.
posted
Except SDK plugins are broken on the test build for the moment, so try public (I'm not sure if the updates have gotten there yet)
posted
I remember this being broken with an update, does this work again or isit still rip?
Please sign in to reply.