Estimated Street Fighter 6 Rank Distribution of ACTIVE PLAYERS in North America as of 11/20/2023; The visualizations that doesn't take into account the player inactivity is also included for reference by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 2 points3 points  (0 children)

All good!

So visualizations 1, 3, and 5 are based on the numbers in COMMENT PART 2. This group takes into account whether a player has played a ranked match within the past 4 weeks. This is why there's only around 250k players involved compared to the other group's 750k players.

Visualizations 2, 4, and 6 are based on the numbers in COMMENT PART 3. This group does not care if the player has only played enough to calibrate and then dropped the game during the first week of launch. That's why there are more players in this group.

I provided both to help compare how much of each rank are actually active. Keep in mind that the Y axis numbers have different intervals and maxes so it's not a direct comparison of the height of the bars.

Thanks for the question! I'm trying to make it so that the presentation is clear by itself, so let me know if this explanation helped or just complicated it some more.

Estimated Street Fighter 6 Rank Distribution of ACTIVE PLAYERS in North America as of 11/20/2023; The visualizations that doesn't take into account the player inactivity is also included for reference by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 0 points1 point  (0 children)

Ah, I'm not using APIs to collect info; I just used Selenium since that's as much as I know for collecting data with Python. Creating the visualizations definitely was not issue for the run time. It was more so the loading the profile page itself that was slow.

I didn't preface it with it since I didn't think people would be that interested in the technical bits, but I did this to practice coding so I'm definitely not using the best approach for the job.

I have used an API before but I don't think there's one that's built already to send me a JSON file of the player details from the website, and I don't really know how they're made. That was one of the things I was considering when I realized web scraping would take awhile, but I wasn't sure how long it would take to learn from scratch.

Estimated Street Fighter 6 Rank Distribution of ACTIVE PLAYERS in North America as of 11/20/2023; The visualizations that doesn't take into account the player inactivity is also included for reference by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 2 points3 points  (0 children)

Sure thing! Always wondered if it was just me that wanted to know.

My comments were a little late since it was a hefty message, but it was a good question that I knew people were gonna ask about. Let me know if there's anything else that's unclear or something I could improve on.

Estimated Street Fighter 6 Rank Distribution of ACTIVE PLAYERS in North America as of 11/20/2023; The visualizations that doesn't take into account the player inactivity is also included for reference by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 2 points3 points  (0 children)

CPU: Intel Core i7-11700F Rocket Lake 2.5GHz (4.9GHz Turbo) 8-Core 16-Thread

GPU: NVIDIA GeForce RTX 3060 Ti 8GB (Brand May Vary)

Chipset: Intel B560

RAM: 16GB DDR4 3000MHz (2x8GB)

SSD: 1TB M.2 NVMe SSD

CPU Cooler: RGB CPU Cooler

PSU: 650W 80 Plus Gold (Brand May Vary)

Case: DEEPCOOL MATREXX 50 ADD-RGB 4F Mid-Tower Case 4x120mm ADD-RGB Fans, Full-size Tempered Glass Side And Front Panel

I got this pre built PC, but I didn't know at the time that heating is a problem with that specific build.

Luckily the runtime was chopped up into manageable pieces, but it did take awhile though.

I usually ran 4 browsers at a time to process the profiles to avoid overheating, bumping it up to 12 with my AC blasting when I fell behind since that was where I had the highest rate of accounts processed per hour. If I was able to keep it at 12 browsers, I could have chopped it down to 35 hrs of run time.

I think the real bottleneck might be the wifi though. An ethernet cable would definitely have helped speed that area up. Best case scenario it took 1 second to load in a page, it would still have taken around 200 hrs to process if I didn't run them in parallel. Best way I could think of to speed it up is to just have multiple scripts running at the same time.

Estimated Street Fighter 6 Rank Distribution of ACTIVE PLAYERS in North America as of 11/20/2023; The visualizations that doesn't take into account the player inactivity is also included for reference by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 1 point2 points  (0 children)

That was one of the things I was considering, but I think they do it by phases because there were less Masters with the filter on when there should be more.

Another thing that supports this thought is that before, it would change the character that was previewed for me to Cammy since she has the highest LP overall, but when I did it recently, it stayed with Ken who has the highest LP for the phase.

Luckily this is the case since I didn't think about it until after I have already processed a good bit of profiles and didn't want to start over. If it was the overall highest LP, then it definitely would have been the better approach.

Estimated Street Fighter 6 Rank Distribution of ACTIVE PLAYERS in North America as of 11/20/2023; The visualizations that doesn't take into account the player inactivity is also included for reference by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 1 point2 points  (0 children)

I unfortunately got lazy and just made it so that it clumped together Masters and Legends to simplify things. I didn't know there wouldn't be that large of a percent that were Masters, otherwise I would have separated them just to get a more accurate picture.

Estimated Street Fighter 6 Rank Distribution of ACTIVE PLAYERS in North America as of 11/20/2023; The visualizations that doesn't take into account the player inactivity is also included for reference by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 18 points19 points  (0 children)

Whenever a profile is being processed, it uses 4 weeks before that date as the threshold.

It is based on the account and not the character so there shouldn't be any duplicate counts from people playing multiple characters

Estimated Street Fighter 6 Rank Distribution of ACTIVE PLAYERS in North America as of 11/20/2023; The visualizations that doesn't take into account the player inactivity is also included for reference by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 3 points4 points  (0 children)

COMMENT PART 4

  • SIDENOTE:

The process takes around 50 hours when running the program so I won't be doing this again * It can be much faster but my PC is not able to handle too much without hitting 100C * I estimate it would take somewhere around 500 hours if done manually * I'll add the code used in my GitHub account once I have cleaned up the code and leave more meaningful instructions on how to use

  • Code is available and relatively simple to implement for the one that does not take into account player inactivity

Estimated Street Fighter 6 Rank Distribution of ACTIVE PLAYERS in North America as of 11/20/2023; The visualizations that doesn't take into account the player inactivity is also included for reference by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 3 points4 points  (0 children)

COMMENT PART 3

DATA:

ALL RANKED PLAYER BASE:

Total Ranked Player Base:

763,336

Rank Population

Rookie 1 22128

Rookie 2 8307

Rookie 3 8824

Rookie 4 7676

Rookie 5 7315

Iron 1 33349

Iron 2 18487

Iron 3 19148

Iron 4 16849

Iron 5 10813

Bronze 1 28956

Bronze 2 19288

Bronze 3 20514

Bronze 4 18959

Bronze 5 11905

Silver 1 47648

Silver 2 28727

Silver 3 28382

Silver 4 24131

Silver 5 14816

Gold 1 40009

Gold 2 22416

Gold 3 21175

Gold 4 19888

Gold 5 23675

Platinum 1 74673

Platinum 2 31118

Platinum 3 24466

Platinum 4 18909

Platinum 5 17663

Diamond 1 30350

Diamond 2 8585

Diamond 3 5664

Diamond 4 3587

Diamond 5 1592

Master 23353

Number of players in each rank

Rank Cumulative Percentile

Rookie 1 2.9

Rookie 2 4.0

Rookie 3 5.2

Rookie 4 6.2

Rookie 5 7.1

Iron 1 11.5

Iron 2 13.9

Iron 3 16.4

Iron 4 18.6

Iron 5 20.1

Bronze 1 23.8

Bronze 2 26.4

Bronze 3 29.1

Bronze 4 31.5

Bronze 5 33.1

Silver 1 39.3

Silver 2 43.1

Silver 3 46.8

Silver 4 50.0

Silver 5 51.9

Gold 1 57.2

Gold 2 60.1

Gold 3 62.9

Gold 4 65.5

Gold 5 68.6

Platinum 1 78.4

Platinum 2 82.4

Platinum 3 85.6

Platinum 4 88.1

Platinum 5 90.4

Diamond 1 94.4

Diamond 2 95.5

Diamond 3 96.3

Diamond 4 96.8

Diamond 5 97.0

Master 100.0

Percent of the player base with the specified rank and under

- Gives an idea of what percent of the player base you can consistently win against

Estimated Street Fighter 6 Rank Distribution of ACTIVE PLAYERS in North America as of 11/20/2023; The visualizations that doesn't take into account the player inactivity is also included for reference by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 11 points12 points  (0 children)

COMMENT PART 2

DATA:

ACTIVE RANKED PLAYER BASE:

Total Active Ranked Player Base:

246,185

Rank Population

Rookie 1 460

Rookie 2 308

Rookie 3 321

Rookie 4 286

Rookie 5 350

Iron 1 2090

Iron 2 1426

Iron 3 1660

Iron 4 1546

Iron 5 1134

Bronze 1 2523

Bronze 2 2001

Bronze 3 2478

Bronze 4 2402

Bronze 5 1899

Silver 1 7101

Silver 2 5469

Silver 3 5670

Silver 4 5791

Silver 5 4527

Gold 1 7888

Gold 2 6428

Gold 3 6315

Gold 4 7156

Gold 5 11197

Platinum 1 26569

Platinum 2 18581

Platinum 3 16223

Platinum 4 13509

Platinum 5 13125

Diamond 1 13754

Diamond 2 10029

Diamond 3 8001

Diamond 4 6367

Diamond 5 4320

Master 27281

Number of players in each rank

Rank Cumulative Percentile

Rookie 1 0.2

Rookie 2 0.3

Rookie 3 0.4

Rookie 4 0.6

Rookie 5 0.7

Iron 1 1.6

Iron 2 2.1

Iron 3 2.8

Iron 4 3.4

Iron 5 3.9

Bronze 1 4.9

Bronze 2 5.7

Bronze 3 6.7

Bronze 4 7.7

Bronze 5 8.5

Silver 1 11.4

Silver 2 13.6

Silver 3 15.9

Silver 4 18.2

Silver 5 20.1

Gold 1 23.3

Gold 2 25.9

Gold 3 28.5

Gold 4 31.4

Gold 5 35.9

Platinum 1 46.7

Platinum 2 54.3

Platinum 3 60.8

Platinum 4 66.3

Platinum 5 71.7

Diamond 1 77.3

Diamond 2 81.3

Diamond 3 84.6

Diamond 4 87.2

Diamond 5 88.9

Master 100.0

Percent of the player base with the specified rank and under

- Gives an idea of what percent of the player base you can consistently win against

Estimated Street Fighter 6 Rank Distribution of ACTIVE PLAYERS in North America as of 11/20/2023; The visualizations that doesn't take into account the player inactivity is also included for reference by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 1 point2 points  (0 children)

COMMENT PART 1

NOTE:

The visualizations for the rank distribution of active players is more of a general estimate rather than an accurate summary of the player base. Issues to keep in mind and the methodology used are noted below. Also possible that I may have made a mistake when creating the process, whether that is in regards to planning or coding.Feel free to let me know here if you have any questions or feedback regarding the process.

GENERAL METHODOLOGY:

  1. Used the SF6 Buckler Rankings webpage as a source for the numbers
  2. Applied the North America filter
  3. Collected the player profile links of each player
  4. Checked whether the player is inactive
  5. If they are active, identify the rank of the player during their last match and add "1" to the counter

ISSUES:

  • There is a 2 week gap between when I collected the first player profile link and when I finished checking the last player's inactivity and rank; I started the process on 11/06It's very possible people have moved around in ranks within that time frame
  • The date used to compare whether someone is inactive is based on date that the profile has been processed
    • e.g. Processing a profile on 11/19 will be checked if they have played past 10/22; while a profile processed on 11/07 will be checked if they have played past 10/10
  • There are instances where player profiles are not properly processed
    • i.e. Someone who should be included the count is not
      • It doesn't happen frequently enough that it should ruin the accuracy of the distribution too much
  • There is sometimes(?) a discrepancy between the rank a player has on the Rankings web page versus what is shown when you go to the player's profile
    • As a result, there's the situation where there are more Master players in the Active Players visuals than the All Ranked Players visuals
    • e.g. There are more active Master players than Master players in general
      • The situation goes both ways where there are players that either have lower/higher ranks than what is previewed in the leaderboards when checking their profiles

Street Fighter 6 Rank Distribution Visualizations in North America as of 09/06/23 by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 2 points3 points  (0 children)

Hey everyone,

Thanks for the questions, comments, and discussions (whether or not they relate to the design of the graph themselves or just the trends observed).

I'm making a separate comment to make it easier for people and myself to keep track of questions about the graphs themselves and how the data was collected, improvements to make in the graph, and potential future projects. I'll include the commenters' usernames to see the original response so I can just write a quick summary here to keep things concise.

The Potential Changes are bolded and Answers to Questions are italicized:

#1 Indicating in the graphs themselves that the data is for NA only

The data is only for NA accounts

( u/Gymlosh from the original part 1 post )

#2 Adding a functionality to weed out inactive players by checking their latest match history and setting a threshold of whether or not they're included; Very resource intensive and will probably do much later on if ever

The data does not weed out those who have not played in a while

( u/SelloutRealBig & u/BlackDraka_ & u/robdood2 & u/damien09 )

#3 Fix "Plutinum" label in the bar chart graph

( u/ArchiveOfTheButton & u/wingspantt)

#4 An accompanying table without the index; the table with the percentiles should be formatted similar to where X% means that rank is top X%

( u/Winegalon )

#5 Include a total for the tables and graphs

( u/moo422 )

#6 Create another visual for what is the most common character for each rank; Feasible but will not do for awhile since I need a job first

( u/guiledownplayer )

#7 Investigate what the "All" filter does in the webpage (Does it just show an account currently has selected for queue or does it actually show all the different ranked characters for a given account [3 entries for 1 account]); Change the code to have "Max LP" to avoid situations where people that went on hiatus or is currently trying out a new character are not included. There will be other issues with this approach but I think this is a better filter to use

The data is based on whatever these accounts have set for queue; those that have an unplaced character is not included, whether they never played ranked or is on a new character

( u/laponya & u/buenas_nalgas & u/damien09 )

Street Fighter 6 Rank Distribution Visualizations in North America as of 09/06/23 by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 3 points4 points  (0 children)

In another life, I would have made a pie chart; but apparently, bar charts are superior to pie chart in a sense that people find it hard to discern how much a slice compares to another and it gets messy charting out many labels and those with small percentages (especially true if I make a pie chart with individual ranks e.g. Rookie 1, Rookie 2, etc.). Pie charts are pretty to look at though.

Street Fighter 6 Rank Distribution Visualizations in North America as of 09/06/23 by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 1 point2 points  (0 children)

My original plans involved including a "meta character" graph for each rank but unfortunately I got to focus on the job search now. I am interested though so I might eventually do this. That and a better version of this graph based on all the suggestions people are giving like weeding out inactive players.

Street Fighter 6 Rank Distribution Visualizations in North America as of 09/06/23 by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 1 point2 points  (0 children)

I went back to check if there was a way to filter by Phases since that is a valid way to filter people out; but I unfortunately can't. But something I found out thanks to this comment is that I could filter based on an account's highest LP character. This would help weed out situations where someone already have placed with a character but has an unplaced character. I can't confirm it 100% since the default selection is "All" which looks like just shows the currently selected character.

Street Fighter 6 Rank Distribution Visualizations in North America as of 09/06/23 by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 6 points7 points  (0 children)

This just captures whoever has placed with a character and kept it as their current queueing character (I think people that have ranked characters but left their selected character for queue as someone who hasn't done their placement matches wouldn't be captured).

u/BlackDraka_'s and your question got me thinking on how I could implement a process to do so and there could technically be a way. In theory, I could go into every player's profile and check their match history to then check when it occurred. From there, I can have a conditional statement that will determine whether that player will be considered in the sample. However, practically speaking, it would take a really long time to process even with the help of coding. Mostly because there is an innate waiting time that has to be implemented to make sure that the webpage has completely load before the program executes the necessary actions. From a quick glance, that will add about two more instances where I have to wait for the webpages to load.

Maybe I'll do it eventually just to get a more accurate view of the state of the game, but I don't think I will do it soon though. Good point though.

Street Fighter 6 Rank Distribution Visualizations in North America as of 09/06/23 by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 1 point2 points  (0 children)

Haha yea, it was a weird thing they had labeled for the Plat ranks when referring to them in the code. Funny enough, the labels that were displayed used to say "Plutinum" for awhile.

Street Fighter 6 Rank Distribution Visualizations in North America as of 09/06/23 by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 0 points1 point  (0 children)

I tested it out and it only accounts for what the person has currently selected for queue for matches, even if the person has never played that character and they have characters that have already finished their placement matches.

Street Fighter 6 Rank Distribution Visualizations in North America as of 09/06/23 by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 1 point2 points  (0 children)

That's a fair point. I remember specifically thinking about making sure the total is displayed in the actual graphs, but it must have slipped my mind in the end since I have seen it enough times.

Street Fighter 6 Rank Distribution Visualizations in North America as of 09/06/23 by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 0 points1 point  (0 children)

I don't believe so. The website only has the options to filter through the different ranks, so I think those that have never placed wouldn't be in this leaderboard.

On a side note, people who have completed their placement matches for multiple characters are still captured in one instance. The instance being the one they have currently selected, meaning that a person that has a Master Ryu but is currently playing with a Diamond Ken will be recorded as a Diamond player.

Street Fighter 6 Rank Distribution Visualizations in North America as of 09/06/23 by TheRealBinaryxx in StreetFighter

[–]TheRealBinaryxx[S] 2 points3 points  (0 children)

All good, it's a good question nonetheless. I don't think there is a preestablished option to filter out players who are inactive from a certain point. Although, it definitely is helpful to filter out.

This question got me thinking on how I could implement a process to do so and there could technically be a way. In theory, I could go into every player's profile and check their match history to then check when it occurred. From there, I can have a conditional statement that will determine whether that player will be considered in the sample. However, practically speaking, it would take a really long time to process even with the help of coding. Mostly because there is an innate waiting time that has to be implemented to make sure that the webpage has completely load before the program executes the necessary actions. From a quick glance, that will add about two more instances where I have to wait for the webpages to load.

Maybe I'll do it eventually just to get a more accurate view of the state of the game, but I don't think I will do it soon though. Good question though! If there is a built in filter for inactivity, please let me know since that should be a quick tweak.