Updated date:

What Would Happen If You Ss'd Every Ranked Map? - Technical Details

Author:

How did this project start?

This project started on one night, while playing osu!, when I got to the question: what if I SS'd every map?

I immediatelly got in contact with MakiDonalds and [MyAngelKotori], to who I asked for advice and mentorship regarding some things I didn't know, like how for example, the pp value is a sum between three different factors on a map: aim, speed and accuracy.

Ground rules

We've established some ground rules, so that we could get the most accurate values possible:

  • Only ranked maps counted to our calculations (no loved or qualified maps)
  • Only using the map's last difficulty, since lower difficulties wouldn't count to our overall pp
  • Four categories for each map: SS, SS +DT, SS +DTHD, SS +DTHDHR.


Getting all ranked maps

I was planning on using osu!'s API for our research, since it was our only official way to know every ranked map. Heck, I even drafted an e-mail to peppy to warn him about my API usage was going to be kind of high.

But then, I started looking around on Google and GitHub, when I found CheeseGull, which is what the folks over at ripple.moe use to get their beatmaps. And, sure enough, their API was public and not doodoo.

We then started the coding process to get every single map, store its last difficulty on a local MySQL database, alongside some other miscellaneous values, like the title, who made the beatmap, stars, and length.


Function that imported all maps into RAM, then exported it to our MySQL database.

Function that imported all maps into RAM, then exported it to our MySQL database.

After the importing and exporting was done, we were with almost 17 thousand beatmaps, and that's a lot of data to be stored.

We started making some statistical calculations to all beatmaps, and here's what we got:

Statistical values: time in seconds, time formatted, star average and map count.

Statistical values: time in seconds, time formatted, star average and map count.

Calculating pp

This was, by far, the hardest part of making this project. Since we weren't going to rely on external websites, we had to look out for software that calculated pp for us. That's where ojsama came in handy.

We had to make four different calculations, one for each category, but it was all pretty much the same for every category:

  • Get the map's ID
  • Grab map's raw file from osu! directly
  • Feed the map to ojsama's map parser
  • Feed the parsed map to ojsama's ppv2 calculator
  • Store all values

We ended up rewriting the software almost every time (there was one time where the program we made was retrieving the same map 4 times, making almost 68 thousand requests, taking hours to calculate pp), and we managed to fit it into 84 lines, instead of almost 250.

pp calculation and database storage

pp calculation and database storage

After that, all we had to do is sum all of our maps' pp values. But, we couldn't rely on doing just that, because osu! has a weightage system, which is how much pp that play is worth based on its position on the profile's top plays.

pp calculations: total pp and profile pp

pp calculations: total pp and profile pp

Weightage formula

Weightage formula

Aftermath

After all the calculations and statistical data we needed, we started writing the script and making the video. That's where MakiDonalds and [MyAngelKotori] enter.

They made sure that I didn't do any mistake on the script, and that all the information would be clutter-free, informative and easy to understand.

I recorded the voice over, edited the video with Premiere (first time!), and posted the video to YouTube, and in two days, we got this project up and running in the Internet.

Final thoughts

This project was fun to make, having multiple osu! players jump in to make something that looked cool and innovative, and having the support of them while making said project.

Overall, we think that this video was made pretty well, and we hope to collaborate more in the future!

This content is accurate and true to the best of the author’s knowledge and is not meant to substitute for formal and individualized advice from a qualified professional.

© 2021 David

Related Articles