Image credit: Marco Krenn

February 24, 2020

WoWS Analysis - Winter Break Project

Java, Python, MongoDB, World of Warships


The primary purpose of this project is to study the current player base of the video game World of Warships.

I used to be a huge fan of this game, started playing since open beta released. I started semi-AFKing since the early 2018, because bots and hackers started to appear. And this problem is still unsolved, didn't see any hackers, but there are more bots. I went back to the game for a few months every year during school breaks, or when there is a fun event in the game. Every time I went back, this game disappointed me more.

The changes of this game and the executions of War Gaming (Developer of World of Warships) in the recent 2 years are killing this game slowly but surely. Player base is shrinking in this game. Poor balances, poor events, and poor new contents are accelerating this process.

The Puerto Rico 2020 New Year event of WoWS and the recent gameplay experience give me the motivation to do this project. The event is the peak of anti-normal-player, and favoring whale players. And in many of my recent high tier matches, many premium ship players are skill-less, some of them are just bots.

Project Purposes#

Through this project, I want to know the following#

  • Win Rate Changes
    From old players to new players, see the changes of player win rate. Win Rate is the easiest way to know a player's skill level.
  • Amount of whales
    Players that own more premium ships than normal ships.
  • Skill of whales
    Are all whales bad skill players?
  • Puerto Rico whales
    Players that purchase the cruiser Puerto Rico for 230 US dollars.
  • Maybe More?

Another purpose is practicing programming.

I learn python for the first time, and I want to use it for this project. It is also the first time for me to manage a large amount of data. This is my winter break project. Hopefully I can learn something from from it.

Simple Project Logs#

  1. I was thinking to use NodeJS to scrape data from the website. I did some research and found out Python is maybe better for scraping.
  2. I wrote a python script for scraping the leader board, I got all the players that are on the leader board from all server before December 31, 2019. In the mean while, I wrote an other script to scrape data from a specific player's page.
  3. After I got the player list, I start using the list to scrape all the NA players that I got. The process was about 2-3 week. Forgot to count the specific time.
  4. Near the end of finishing scraping NA players' data. Server disconnections happened a little more frequently than before, even I switch to another VPN server. I think the web admin found out that I am scraping data off their site, giving pressure to their web server. So, I chose to stop after getting all the players' data from the NA server. My purpose wasn't try to attack the server, just for study purpose.
  5. I was look for a way to visualize these data.
    • I tried to do a JavaFX GUI program, did not work very well. Tried to show over 100k data in JavaFx line chart. It took a long time to load. Maybe my code are just not well optimized.
    • I tried to do it with NodeJS + express. Dynamically reading these data from MongoDB and drawing them on a webpage is also slow. Same as using JavaFX,took a long time to load.
    • I ended up with exporting the data I want to a csv file, and use dychart.js to make a chart. It is a great JS library for large amount of data, and it has a regression example, and that's perfect because that's just what I want to do with these data initially.

Project Results#

Important Notice: Data of this project are all scraped from WoWS Stats & Numbers, followed the robots.txt of the site.
I can't assure the data all the player data are up to date during the time when I scraped them. There might be server errors that sent me an old copy.

The following is the robots.txt version when I scraped the site.

User-agent: msnbot
Crawl-delay: 1

user-agent: AhrefsBot
disallow: /

User-agent: BLEXBot
Disallow: /

# Block
Disallow: /

User-agent: MJ12bot
Disallow: /

User-agent: SemrushBot
Disallow: /

User-agent: Yandex
Disallow: /

User-agent: XoviBot
Disallow: /

URL of Some Source Code#

I have the python script for scraping each player's page, but I don't want to share it. I don't want people to use it to pressure that website.
For the JavaFX program, I finished the player search function. It was not ideal to visualize data in the way that I wanted, so I discontinued the development of it.
Then I made that ugly report website, for me and other people if they want to see the actual graph instead of screenshots.


All the graphs below, you can find them in the simple report site that I post the link above.

Win Rate Changes#

Win Rate Graph

Y-axis: win rate; X-axis: player order by id number

From the regression line on the graph above, we can see that over these few years since beta release, average win rate of players has been drop almost 2%. In this game, win rate of a player is the representation of one's skill level. The graph basically means that skills level of players has been dropped. Although some may argue that skill of old players is certainly better than new players because of the experience. But as a old player of this game myself, I don't see much skilled plays nowadays. Most of the time, base on my observation and experience of this game in recent years, you can see a winning match or not from the early game. Players suicide in top tier matches for no reason. One team started the game with 2~4 players sunk before 6 minute mark, another team gains great advantages because they have the full team alive. I don't really know about other servers, this is just daily of the NA server. Me and my friend usually check the profile of these players that sunk for no reason at the beginning of the game after the match, and these players usually have low win rate. Some of them are skill-less whales base on their profile, some of them are just bots because the bot-like play.

Planes Shoot Down Changes#

Shoot Down Graph

Y-axis: Average Plane shoot down; X-axis: player order by id number

This is the only graph that has a rising regression line from all the overall stats data of players, thanks to the new air craft carrier system. All other graphs of overall stats data have declining regressing line. The stats data are representing the player skill level.

Normal Ship Owned to Premium Ship Owned Ratio#

Premium Ratio

Premium Ratio

Y-axis: Number of players of a specific ratio; X-axis: Normal Ship Owned to Premium Ship Owned Ratio Value
1st Image: ratio value from 1-2, 2nd Image: ratio value from 1-30

This a the graph of whales, players that owned more premium ships than normal ships.

Win Rate Bar Chart & Pie Chart of all players in NA server#

Win Rate Chart

The bar chart show a normal standard deviation graph. Average players are the in the range of 49%-50%. Look back to the win rate graph above, you can see the win rate of new player is going below average soon.

Win Rate Bar Chart & Pie Chart of whale players in NA server#

Whales Chart

Orange color and red color are simply mean bad skill players. You can see from the pie chart, 50% of the whale players are just bad players.

Win Rate Bar Chart & Pie Chart of Puerto Rico Whale players in NA server#

PR Whales Chart

Player data that make the charts are players that get Puerto Rico before Dec 30.
Base on the Puerto Rico Grind spreadsheet by nhgrif from reddit, even started the event with 3 golden boosters, the earliest date to get PR is Dec 30. That basically means these people bought PR full price.
Reddit Post Link | Google Sheet Link
Download from here in case the google sheet is delete in the future: Spreadsheet File

And still, almost 50% of these player who purchased Puerto Rico for 230 USD are below average.

Active Players in 2019 Calculated from scraped data#

Month [1-12]: Players that played at least [0/1/10/100/300] games in that month
Total: Players that played at least [0/1/10/100/300] games in one month of the year
Average: Monthly average active players. Add up all players of each month and divide by 12.
[0/1/10/100/300] games of one month:

  • 0: At least get online
  • 1: At least try a game
  • 10: Play this game casually
  • 100: Play this game kind of seriously
  • 300: Hardcore players of this game.

Played at least 0 game#

Month Player
1 28456
2 29713
3 31753
4 29779
5 32269
6 31476
7 30187
8 33009
9 34793
10 36996
11 32275
12 36223
Total 103363
Average 32244

Played at least 1 game#

Month Player
1 18860
2 20939
3 22098
4 20377
5 22259
6 21631
7 20813
8 21846
9 21621
10 22331
11 21075
12 23366
Total 72937
Average 21435

Played at least 10 games#

Month Player
1 16681
2 17695
3 19699
4 17695
5 19824
6 18548
7 18301
8 19039
9 18745
10 19381
11 18236
12 20255
Total 64689
Average 18675

Played at least 100 games#

Month Player
1 7225
2 6212
3 9198
4 7249
5 8872
6 6752
7 7763
8 7736
9 7529
10 8271
11 7340
12 8748
Total 30959
Average 7741

Played at least 300 games#

Month Player
1 1220
2 814
3 1768
4 983
5 1513
6 922
7 1271
8 1179
9 1242
10 1359
11 1046
12 1658
Total 7176
Average 1248

Last Few Words#

I don't against War Gaming selling high tier premium ships to low skill players, but this comes with a precondition. That is, this happened since the very beginning of this game, not after 4 years since beta release. This is one of the promises of the Dev, that they won't sell high tier premium ships. They knew that selling high tier ships to low skill players will ruin the experience in high tier games, but they did it anyways. What makes this games very different to other PVP games, it is the matchmaking system. Usually in an online PVP game, players are separated into different tiers, so they can play with players that are at the same skill level as them. In World of Warships, matchmaking is based on what ships you have, not the skill. Therefore, old player will find the experience of this game in high tier matches is very unpleasant recently. And for the same reason, new players don't have the urge to learn the game, because they played this game casually, they can get int high tier matches easily. The learning curve of the game is broken basically.

I would say this game is well made on some aspects. The most commendable one is, that this game is very easy to learn, but hard to master, but poor balance and executions of the Dev puts this game on a downhill. You can see from the tables above, the last table shows the players that play this game very often. The number is around 7k, and the monthly average is around 1248. If you think about it, it is impossible to make a matchmaking system base on skill now. Let's make the assumption that the players on the last table are all skilled players, even though that can't be true. Each month has around 30 days, than means they play more than 10 games a day (300/30). Not all of them are in the same time zone, and not all of them queue for a match at the same time. In my experience, I got into a 7v7 games when players are mostly in sleep during early morning, the matchmaking system just put us into a 7v7, even though normal games are 12v12. So let's say it is possible to get just 14 players to make a match, but still, not all of these players play in high tier matches. So you can see, because of insufficient concurrent players, this kind of matchmaking system is very hard to implement at the current state of this game, the waiting time for a high skill match is going to be mad long. It was possible for them to implement few years ago, a time when I could see over 60k concurrent players daily, and now it is below 20k. I think that's why they make the Clan War game mode for players who wants a real match between skilled players, but you still need normal PVP matches if you want to complete events or daily mission.

About 2 or 3 years ago, the idea of smurfing still existed in this game. That is, the idea of experience players create a new account to get into matches with new and inexperienced player for easy wins. In this game, you don't need a new account, just play a low tier ships will get you into those matches, and ruin the experience of new players. I don't see them much now because balance patches that killed those smurfing ships and new players can easily buy their way to high tier matches, and ruin the experience of old players. Also, missions now are mostly requiring a high tier ship, there is no point to go to play in low tiers.

I can sit here all day and talk about many things that this company did wrong on this games, but I know the history of this company. They don't listen to players that often, they do the things their own way. So, I don't really want to give any suggestions or feedbacks. I am not doing this project to diss the Dev. I honestly think the art and the music of this game is outstanding, gorgeous warships 3d models and exciting in-game background music. I just want to see some data behind the game myself, and the data do answer the question that I ask at the beginning of this project. Skill level of players is declining, alongside with active players. Whales do exist, and most of them are low skill players. They buy their way to high tier matches, and ruins high tier matches, like the way smurfing ruined low tier matches in the old days.

There are a lot of problems in this game. If they are not try to fix them as quick as possible, I don't think this game will last long. Warships is not as popular as tanks. World of Tanks, another product of the same company, still got a decent amount of concurrent player after 10 years. The WoWS team should learn how WoT operates, to increase player stickiness to the game, instead of doing things that trigger the community, causing loyal players to leave the game. Lastly, good luck to World of Warships!