Marenkay.com

Kogito is coming soon!

developer, father, gamer, and nerd.

An Open Source World of Warcraft database?!

During my adventures with the phpArmory class I have taken a look at WoW databases out there. I browsed through loads of sites to see if any of them would be Open Source or at least under a free license.

The database contestants

Ever since World of Warcraft became public there have been websites out there, which gathered game data by using a Lua addon and some sort of data uploader. In the beginning there was one database site and nowadays there are many.

  • Thottbot: Probably the father of all WoW database websites. Thottbot.com started somewhere during the World of Warcraft Closed Beta and has been a primary source of information for many players. Quests, Items, Maps, NPCs, Spells, and more await the curious player, and closely coupled with Thottbot comes Cosmos, a User Interface modifcation pack, to which players were drawn in the early days of WoW aka. the days when World of Warcraft was not available in any localization.
  • Allakhazam: Allakhazam entered the market of WoW databases a bit later. They already had experience with this thing, as they started with an Everquest database. Their WoW site has gone through various iterations, and AFAIK was the first database site to offer support for the various localizations in which WoW was made available. Another feature spearheaded by them was the monitoring of Auction House prices for items. Yay for that!
  • Wowguru: Another side project of an MMO database site, and one that initially had some success. WoWguru.com entered the scene in Summer 2005, and later spearheaded with features like honor tracking, and most prominently with monitoring the individual realm status during the Ahn’Qiraj War Effort.
  • Wowhead: Here comes an impressive contestant. Ever since their launch Wowhead impressed with an information-centred design that helped users in finding the information needed very quick. Wowhead comes with a well made Lua addon, and a sleek uploader. Once of their primal bonusses was that they had been very active with making their Lua addon work for the Public Test Realms, and soon this resulted in Wowhead leading the WoW databases. Features like a well-designed commenting system, their item and character preview, and others still remain on top of the list.
  • WoWDB: The latest entry in the list of contestants. Made by the MMO portal site Curse (which alos provides hosting for most WoW Lua addons), WoWDB entered the scene with some features that Wowhead could not offer: item comparison, wishlists, and a look more oriented on the WoW look. AFAIK their character preview was first, and Wowhead added that a bit after them.

What do all these databases share?

As it seems, the market for World of Warcraft databases is a hot one. Even four years after WoW made its’ initial release. And as we can see by the release of new and different databases, none of the contestants listed above yet has managed to reach a state where WoW players are satisfied.

If we compare the features of all available WoW databases we can see that it’s not all about features, but about design and usability, too. Some features did not really make it into the market, as players did not seem to accept them.

  • Auction House monitoring: Yes, it is there, and some people might use it, but apparently this is not interesting or good enough to be used anywhere else than on Allakhazam. Apparently using spreadsheets still is superior. Also, there is Auctioneer which works in-game and automates a lot of the process.
  • Crafting requirements: Wowguru introduced this quite some time ago, and I thought it was a great feature. When displaying a crafted item, you could see all the items required to create it, summing up the total vendor price for all needed materials. Nice, but oviously not needed. Gold seems to be an irrelevant factor, and thus only material lists survived.

This leaves us with a list of features that seem mandatory for a mature World of Warcraft content database.

  • Searching: Of course, searching is mandatory. Every site has it, and the only difference to be found is in the way search results are returned. Older sites just take an argument to look for and return an result page with any matching object, Wowhead and WoWDB sport a bit more elegance and make use of AJAX to return drop down lists with matching data instead of requiring you to wait for a result page.
  • Filtering: Even though the official forums are full of people demanding more content because the existing content would not be sufficient, a look at a database of your choice proves the opposite. There is lots of game content, and there is much to be seen. Even after four years, I am sure you will find content that you have not seen yet, even if you started your character in February 2005. Thus most database allow you to filter for various parameters, and most important: you can apply multiple filters to any kind of data. Sleak and useful.

And why would you want that Open Source’d?

It’s simple. Many people contribute data to these databases, and only with your or my contributions of data gathered while playing the game, those databases exist. It’s a community effort, just like the game itself is meant to be some sort of social community. But why are all of these databases closed, or commercial? Some even want you to buy premium subscriptions to access guides or more data.

Now what if there was an Open Source database for World of Warcraft? Where you could not only contribute data you gathered while playing, but also access that data or even download it to your computer and do something with it? Or where you could see what you have gathered while playing?

So I have decided to give myself a new pet project to work on, and it will become Open Source very soon, once I have ironed out the basic details. Work already begun, and a very basic implementation is there. The tools I have used are:

  • Visual C# 2008 Express Edition to build a .NET 2.0 client application which handles uploads,
  • Lua to write a WoW addon which gathers data while you play,
  • Zend Framework and Doctrine ORM to write the server-side backend which accepts uploads.

The process for now is very simple:

  • the .NET client will parse the WoW data cache (which you will find in your WoW installation directory under WDB/your-locale/*.wdb),
  • it can show you the contents of your WDB files, e.g. you can see which NPCs you have seen, or what books you have read,
  • it will parse the saved Lua data generated by the addon, and can show what data besides your WDB cache is there,
  • and it can convert both WDB and Lua data to XML,
  • and finally it can upload the data to my server (GZipped of course, to reduce bandwidth usage).

Parsing the data is something that will be done next. For now my server-side application only handles storing the uploaded data, and manages updates of the client. Not very much, but at least my data is stored. Parsing will be a bit more work since I have to make a modular parser that can deal e.g. with different data formats, as the data formats may and surely will change with every WoW client update.

What do you think? Would you use an Open Source World of Warcraft database, where you have full access to the data you contributed? Would you like to download contributed data in a parsed format, perhaps as XML files to reuse them on your guild website or your blog?

More on the project soon, after the finishing touches have been put on the data client. Screenshots coming soon.

Category: Application Development, Programming

Tagged: , , , , , ,

18 Responses

  1. Morbus Iff says:

    http://www.disobey.com/detergent/lists/wowquests_morbulin http://www.disobey.com/detergent/code/wowquests.pl

    That’s in Perl. Would be entirely possible to do something in PHP, of course (I’m well-versed in Drupal, etc.).

  2. Morbus Iff says:

    Incidentally, I’m a Mac user, so most of the stuff you’ve worked on so far (for an OS db, I mean) would be useless to me ;)

  3. Justin says:

    Just came across your site. Ironically enough I was working on my own Armory API but looks like I should toss this idea. I

    I love the idea of an open source Wow database that could be queried. To be honest I don’t have much C# experience save simple tutorials however I’ve been writing C++ so numerous years so I’d love to contribute to something like this.

  4. MikeyV says:

    I would love something like this. I collect as much item data as I can from the armory with my own scraper, but, as we both know, it’s lacking. I hate having to link to wowhead or the like for the remainder of the information.

    A native database that I could run from my own server would be ideal.

    Let me know what I can do to help. I’m OK with LUA, pretty strong with PHP, good with C and C++, but I have no frickin clue when it comes to C#.

  5. ladenedge says:

    I’m excited about the idea. As an addon developer who needs access to an item DB, I’ve long been frustrated by the closed nature of the existing sites. Without an API, I’m left to parse the HTML. This is annoying enough by itself, and now tack on the fact that the DB sites have no commitment to keeping their HTML static (of course). It means I’m regularly having to update my regular expressions to keep my data current.

    An open DB (ideally with its own API) would be a nice change from the never-ending hacks I’m currently enduring.

  6. jeremiah says:

    Go for it, dude. Too long have these other sites piggybacked off our data collection efforts, only to forbid us from accessing raw data in return.

  7. Bart W. says:

    Awesome idea! I was actually thinking of writing something like this myself as I need access to such data for a little theorycrafting project of mine.

    I also like your choices of using Zend Framework and Doctrine for this project. I have extensive experience with both (as well as the Symfony Framework) so let me know if there is anything that I can help you with. I’d love to get involved somehow.

  8. Court says:

    Instead of using .net c# as your client app (I’m a .net developer as well), you should look at using Adobe Flex/AIR framework. Adobe’s AIR framework allows the flex app to run as a desktop client in Windows, Linux and Apple.

  9. I’d be very interested in seeing where you head with this. As the author of LightHeaded, I’m very interested in making sure that users can access the data they want in a convenient way. None of the database sites currently offer any way for developers like myself to take the data for display in-game in some way. Right now I have a complex parsing script that allows me to mirror the wowhead database locally, but this isn’t very nice for me. I do my best to provide advertising for them from the addon and they’ve been really good through everything.

    Also, make sure you choose a language that allows you to easily develop the uploader that works on both mac and windows, so I can contribute!

  10. Derek says:

    I have been waiting for something like this. I would love to help and have been wanting to get knee deep in writing addons for WoW.

    My only two points of contention would be: 1) I wouldn’t stick with .Net it is too Microsoft Centric and you would have to have multiple code bases to support the various architectures that WoW runs on. A powerful scripting language would probably fit the bill or you could use straight ANSI C, I would personally run with Python (might even be able to compile it for Windows so you wouldn’t have to require Python be installed on Windows) since it is already installed on Mac OSX and most Linux distros.

    2) For Server side you may want to look at Google’s App Engine, you wouldn’t have to worry about keeping uptime and additional costs of the server and dedicated comms. This type of application is what App Engine was written for.

    My 2cents. Shoot me an e-mail I would love to get started!

  11. ColbyCheese says:

    This is a really good idea. I’ve often thought about how cool that would be. I’m always wanting to search for WoW data with criteria that the major websites don’t allow. Don’t let the “A-hole parade” that the WoW Insider comments section is deter you. It’s a really good idea and it has merit.

  12. Delanix says:

    Don’t forget, that .NET 2.0 application is easily portable to Mono – which means it will run on Mac, Linux, Sun and Windows. C# is an excellent choice.

  13. Guido Moonen says:

    Nice idea!

    I would like to contribute with data / code / etc.

    I’m a C++/PHP developer used to multi OS development and network communication. Would very much like to help with the development and make an opensource DB

    And as always have fun!

  14. dRiN says:

    Good idea! I think everybody would benefit from an open database.

    Will be there to contribute on the dataside of things.

  15. Marco says:

    This is a very good idea. I’m working on an addon (and a database) to provide italian translation for quest and I need english text to translate.

    I try to ask at various site (wowhead, wowdb, and so on) but no one can give me date.

    So, it is very usefull to have an opensource database. If you need something that I can do, feel free to ask me.

  16. Okoloth says:

    I recommend Google App Engine as the backend, I am using it for my new Armory Musings website and have no complaints. Development is in Python, its DataStore/MemCache functionality is superb and the Django templating engine makes knocking up data-rich web pages very very easy.

  17. [...] seems like my post on an open source WoW database has received a bit more attention than I expected. Let me share a [...]

Welcome

Marenkay.com is the home of Daniel S. Reichenbach, an application developer, father, gamer, and IT nerd.

In his blog Daniel deals with common and uncommon issues of application development, development processes and application deployment. As certified nerd, a bit of gaming in the mix can't hurt.

Pages