You are here

Phaedra's List

"Phaedra's List" is the mage DPS/gear application I am developing, named after my mage on Stormrage, Phaedra. The idea is to help determine the best gear using a given spec and the gear already available.

Development has been suspended since Rawr accomplishes the same goal.

Great minds...

So while I was not working on Phaedra's List (work has been pretty busy for the last few weeks and I've gotten no work done), the fact that Rawr, a druid modeling project now has a module for mages too was brought up on the EJ mage theorycrafting thread. And it turns out that it does most of what I'd wanted to achieve with Phaedra's List. So I guess I'm putting the project on hiatus, especially since I still don't have time at the moment.

This is not to say I won't come back and work on it... I think that there's a definite niche for the tool but I don't have the time to work on it right now. And a proper implementation of the gear parser (quartermaster) would definitely allow for a backend for something like Lootzor... and it could be kept up to date too! (This being an outstanding issue with Lootzor...)

REXML bug strikes again

It turns out that the tooltips had not been completely parsed correctly.

When originally doing the testing on rishu, I ran into an issue that the Test::Unit::XML gem wasn't working correctly. It would accept two radically different XML paragraphs with doctype headers and say that they were equal.

After some amount of digging, I found this bug on the REXML tracker. I made the (one-line) change provided and suddenly Test::Unit::XML started working again.

The ruby install on winry provided with a newer version of REXML than what was on rishu. However, it still did not incorporate the fix in the bug report. Unfortunately, I used winry to validate the item tooltip XML since it was faster.

After adding the fix to REXL, the validation script is dying because there are still unimplemented tags. Yay for more work.

Parsing the info XML

Having completed the tooltip XML parsing, it's time to work on the info XML parsing. So far I have learned two things:
1. There's a lot of extraneous crap in the info XML parsing that likely isn't going to do anyone much good.
2. 65,535 characters is not enough to hold the info XML for some items (e.g. Rune Thread).

The second one took me a short time to figure out. Suddenly REXML was crashing and I couldn't quite figure out why. It turns out that the issue is that I originally stored the XML in a TEXT column, which is limited to 65,535 characters. Changing the column to a MEDIUMTEXT in MySQL increases the capacity to something like 16 million characters, which should be more than sufficient.

I'm letting the parse checker run now. If it completes, that'll give me everything I need to work on the next step: Extracting the item schema.

Status update #1

I've finally implemented the item tooltip XML parser to the point that I can parse and then reproduce the tooltip XML for all 22,557 items I have in my database.

The next thing to do is to do the same for the info XML blocks provided by the Armory.

Once I can do that, I should be able to determine exactly how to render an item. I'd like to say "And, then, from there, it'll be cake." but it won't be. I'm sure of it.

In short, I wonder if I've created a larger-than-necessary project. Fortunately, I've enjoyed playing with Ruby thus far. Playing with the Aptana Studio has been a little frustrating due to periodic slowness on my G4 iBook and a handful of implementation problems (like it choking on the creation of =begin ... =end comment blocks). It (and the poor performance of TBC) is really making me tempted to buy a new laptop which, while admittedly nice, would be an expensive toy I don't need.

Working away

I've been doing work on the XML parsers. The tooltip parser is shaping up nicely.

I'm trying my hardest to not turn this into a programming blog. Really...

Every journey starts with a single step

Now that the import process has finally finished for the XML, it's time to think about how to proceed.

I am admittedly beginning to wonder if the mage DPS/gear "spreadsheet" is a separate project from the gear database. I may come back and decide to split it off.

The first items of business would seem to be:

  1. Investigate the tooltip XML documents further.
  2. Create the schema for storing items in the database.
  3. Implement code to transform the item info and tooltip XML into actual items.
  4. Verify success by ensuring that the XML generated by the item objects matches the tooltip XML. (Since the item info XML is only going to be used to extract the item level, I'm not worried about making sure the XML matches.)

Funny how easy this seems when written down.

Finally, a preliminary name

I finally settled on a preliminary name for the new "spreadsheet." I'll call it "Phaedra's List" until I come up with a better one. (And, you have to admit, at least it's a more sensical name than "pain.")

The next big decision to make is: Which language do I want to write this in? I figure the end application will be Ajax so JavaScript is going to be a given. On the server interface, though, do I want to use Java servlets, PHP, or Ruby? Ruby is supposed to make building applications with Ajax easy and I have some books in the mail. I figure I'll decide when my big box from Amazon arrives.

On farming the Armory

After reviewing the results returned from the modified Warcraft Armory module, I discovered that the XML returned for the item tooltips (item-tooltip.xml) does not include the item level. This annoyed me slightly since this is information I want to have available in the gear database.

After some investigation, I found that an item's item level (ilevel) is in the XML for the item information page (item-info.xml). So I modified the module again to download item-info.xml for items that are found in addition to item-tooltip.xml. This will make the ilevel available for when I start building the database.

Naming the new "spreadsheet"

One problem with working on any project is deciding its name. I'm running into that issue. And, for me, a name is pretty important.

I've thought about naming it "jadis", at least as a working title, but it doesn't really mean anything for the end purpose. And the girl in the Rumplestiltskin tale doesn't have a name...

Creating a new "spreadsheet"

Back in October, I wrote about redoing my "spreadsheet" for weighing gear choices. However, despite writing, I never did any further work on it.

I'm thinking, though, it's time to rectify that.

Subscribe to RSS - Phaedra's List