Today we crunch on the numbers and datamine on which game mechanics are ACTUALLY the most popular!
If you couldn’t tell, recently, I’ve been on a kick of getting into the nitty gritty of game mechanics on Board Game Geek. Last week, we dove into some of the most common board game mechanics. However, after discussing it in the comments BoLS user
It IS a great idea! But how to do it? Last time around, I simply did it manually. I went to each of the BGG Mechanic pages and checked the number of pages of linked items and called it a day. But today is not yesterday! Or something like that.
Trust the Process
In my spare time I’m something of an amateur programmer. I don’t count myself an expert by any means, but I’m savvy enough. I decided I was gonna have a computer do the work for me. With only a small amount of research into modules I didn’t know how to use, after only a little while I had a functioning table scraper and data miner!
Table scraping is more or less what it sounds like.
eh, maybe not.
The basic idea is you have a program read a table from a web site for you and toss all that information into a form usable by the program itself.
Wanna take a guess at which table took my interest?
I need to start rating games more often.
I had the program (which was written in Python, for those who care) pull up the url for the list of games, sorted descending by Game Rank. The program sifted through the table and row by row, grabbed the title of the game.
Then, I used another module I had found which let me dig into the Board Game Geek API. An API is basically just a fancy way of saying, “I’mma read yo data”. And that’s what I did.
Using the BGG API, I was able to take the title of the game and dig through the data to find which mechanics that game had. This is the data mining part of the process.
It’s like Dwarf Fortress, just pretend that instead of rocks and minerals, it’s ASCII symbols and binary. Tough to imagine, I know.
After I pulled that data out of the ground like an Urist possessed, I simply had a chart with every mechanic listed and a counter for each one. Each mechanic that was found added 1 to that counter for that mechanic. Simple!
After only spending 3 times as long debugging after writing all the code out, it was completed! I had my data and I was ready to analyze!
Data is Love. Data is Life.
As fun and cool as the BGG API digger is, it is pretty slow. So, I only ran it through the top 100 games at first. And here is what I got!
- Hand Management – 46 Games
- Variable Player Powers – 45 Games
- Card Drafting – 33 Games
- Dice Rolling – 31 Games
- Set Collection – 29 Games
Full dataset at the send. Don’t worry.
But this data was WAY different than what we had concluded last week, which admittedly is in line with what BoLS user
Colin’s right. I’m wrong, so I aimed to fix it!
Last week we showed that Dice Rolling was the most common mechanic by a wide margin, but this data shows Hand Management and Variable Player Powers are the top dogs right now.
But…. what if we dig through the top 400 games? Does that stay consistent?
- Hand Management – 165 Games
- Dice Rolling – 127 Games
- Variable Player Powers – 127 Games
- Card Drafting – 112 Games
- Set Collection – 95 Games
Congratulations, Hand Management! You’re the best game mechanic!
It seems nothing more than weird coincidence that Dice Rolling and Variable Player Powers both have 127 Games. Or my code is messed up somewhere. That seems more likely.
To that point, in fact, my code wasn’t perfect. For reasons I never figured out (because I never explored the ‘why’ at all) by data miner would occasionally be unable to figure out a game. I don’t know why but may work on it more after this is all done.
The best part of coding is writing your own error messages.
If I had thought ahead I would have made a counter of the number of games that were skipped, but it wasn’t a huge percentage or anything.
Anyway, this was a very fun little project and I feel like I learned a lot about which mechanics are the most POPULAR today versus which are simply the most common.
Thanks for reading!