I’ve just finished a new video game related project. EVE Online is a massive multiplayer online (MMO) game where people build space ships and fight each other with them. The fighting part of the game can be exciting and the fact that you can trade game time for currency in the game leads to some impressive headlines about the value of destroyed ships, but a large part of building ships is fairly mundane. I’m talking about mining. Everything in the game is created by players, which means that for every ship destroyed, someone, somewhere, has to mine the materials and build a new one. In addition to other things, I do a fair bit of mining. It’s possible to get enough money in the game to trade for subscription time and keep your character subscribed indefinitely. Unlike other online games, using multiple characters is allowed in EVE. This scales great with mining, so I’ve built up quite the mining fleet over time.
Last October, the developers of the game added a new feature that allows players to track how much they have mined. This is a great feature, but the tracking does not allow you to combine data for multiple characters so it doesn’t allow people like me to get a true grasp of our production. Luckily, EVE has an API.
The API allows you to query just about every piece of information about a character, including what they have mined. I was also able to find a project that uses a Flask server to handle the authentication. So I forked the project, added the ability to authenticate multiple characters, pulled the proper data. Once I had all the data in a MySQL database, I played around with some aggregations and eventually added some Highcharts graphs to the application. You can see my code on GitHub here.
And here are the resulting charts showing what I’ve been up to over the last few months. The first character on this list is piloting a capital ship, so it makes sense that it would mine more. Some of the other characters have ships specialized for other kinds of ores and you can see that reflected in what the mined.