Lately, in my spare time, I have been playing Diablo 3. As my characters become more powerful, I spend more and more time scrounging the auction house looking for gear, and wondering how I stack up against other players, characters, and builds. While the game itself is well thought out, the auction house, player rewards, and community aspects seem to be tacked on at the last minute without as much forethought, and unfortunately there is no API, so there is little opportunity for the community to improve things.
The first step to solving any of these problems, is to gather as much information as possible, so I built a tool that can parse the public information for a Diablo 3 account. If you play, check the tool out at http://www.mattsnider.com/diablo/. Simply, add your account profile link to the database and your information will be added. Right now you can see how you compare against other players and their characters, as well as all your items. I am working on an interface to make all items in the database searchable, but there is too much data for it to be useful right now.
Once a URL is entered, the system scrapes the career page to gather the basic information about a player and all their heroes. These players are added to a queue. Asynchronously, the queue is emptied and the rest of the data is gathered, including all hero stats, items, and item data. The process is asynchronous, so the processes handling server request on my website do not spend all their time blocked on IO requests, fetching data from battle.net.
This is definitely a beta tool, so let me know your battle.net id, if you run into any issues. That said I have run many players through already and worked out most of the obvious kinks. All players and characters are updated nightly, so the information remains fresh. Here is what is on my roadmap:
- item filter/search for entire database
- scraping items and info from followers
- storing changes through time
- graphing growth through time
- improving display throughout the app