Why?
Let's first get the 'why' out of the way. I have a long-term project that's collecting statistics about me and others in osu! For proper calculations, I needed a database of around 1.7-1.8 million beatmaps (not beatmap sets, but individual beatmaps), including, in most cases, the .osu files.
I also was not satisfied with what Tillerino hands out to me. (That's the 'why.')
My brain then combined these two, and out came the bot idea.
So, after a bit of tinkering, I've made a bot.
How to use the bot?
Since i had a few ppl ask me, this is NOT a farm bot, thats tillerinos job ^^.
Find the Bot (Dynam1cBOT) in osu
Upon receiving its initial command ("!r"), the bot will prompt you to log in with your osu! account. This authentication process follows the OAuth2 protocol for the v2 API. This step is necessary as the bot requires access to your top plays, and I prefer not to utilize the v1 API. Upon successful login, you'll be presented with a (I apologize for the term) visually appealing, white interface, which I invested a significant amount of time perfecting.
After that, the bot initiates the calculation process. Please be patient, as this process is not currently multithreaded, meaning it handles one user at a time. Don't worry; the bot will notify you when the calculation is complete.
After the calculation, you can utilize the following commands:
- "!r" will provide a nomod request (I personally prefer this as an nm player, eliminating the need to specify "nomod" or "NM").
- "!r <mod>" The available mods for use are HD, HR, and DT, in various combinations.
It's important to note that the calculation process is set to run automatically every week. You won't observe any visible changes, but the new data is seamlessly integrated with your existing data.
The bot (or my stats project) also actively monitors new maps each day, allowing it to recommend fresh maps within your skill range.
How does it work?
After signing in (OAuth2), the bot will calculate a fingerprint of your top 100. These will save the general map statistics like AR, OD, CS, BPM, play length...
Next, the bot will look at the osu! files of your maps and examine what patterns you play, timings, spacing, and so on. It will also generate a fingerprint out of those.
In the third step, the bot will look at the default osu! PP and difficulty attributes. It will also create a fingerprint.
(All of the values will look at the 40th percentiles for now. I still need to figure out better values with your feedback.)
Now the bot goes to the database, which also has these values but precalculated. It will search for maps similar to your fingerprints and give them back as requests. In fact, the bot will create three pools.
Pool one has a 7% chance to be picked; this is an "Easy" pool. In there are maps that you should be EASY able to FC.
Pool two is the regular pool and has an 83% chance to be picked. In there are maps which are similar to your playstyle; you may even be able to FC those. Sometimes...
Pool three is an improvement pool. Since the bot kind of sees your playstyle, I try to calculate what you are not able to play. Guess what. At 7% chance, you can get these too! I want you (and myself) to improve.
(i really made it so i dont get stuck in one thing only)
All of the above was nearly perfect for me, but it might not be for you. I already know that DT picks are a bit off and do not represent DT players very well. I've never received real feedback for HD and HR.
Speaking of feedback
Give me feedback on requests (either via DM or here in the forum). Tell me why you don't like it. For example, if a map with mod xy has too high AR, I'd like to know. It's possible that my bot might be assigning too much weight to certain factors, or there may be inaccuracies in the map parameters stored in my database. The more feedback I receive, the better we can fine-tune this system together.
Where to go?
As for the future, I have ambitious plans. If this project gains a user base, I intend to implement the following features:
- '/np me' to retrieve PP values. While this may not be a critical feature for the osu! community, it's a convenience I'd like to offer.
- '!r <username>' to access recommendations from other players.
- Filter options such as '--AR >9 <10' or '--BPM =200.'
- A web-based user interface (UI) for creating custom commands and alias commands. For example, you could create a custom command like 'custom command !speed=!r --BPM >240 <300 --AR=9.8.'
- The ability to manipulate fingerprints within the web UI, with a list of live updating sample requests.
- CtB, mania, taiko support (in that order)
Updates
- I've got a bot account. So the bot moved