The most exciting features that I have planned for this project are what will set it apart from other parsers and make it suitable for much more frequent use than simply test fights.
I feel that the Replay feature will be the most useful in my analyzer because it will allow for thorough analysis to be conducted after a fight and not during a fight if desired. I like the idea of this feature because when I have tried out other parsers to examine my DPS, I had to watch the application while I was fighting. Not only is this inconvenient, as the application is in a separate window, but it is also distracting and can detract from the player's performance. It is hard to make the judgement calls you normally make when you're looking at a number in another window trying to make it go up more. Such a distraction would be unacceptable for raiding and other intense activities.
Replay means that the application will be able to sit quietly in the background, processing away, and then you can save its results (which are simply a timestamped version of the original log) to a file, go to sleep after your night of raiding, and then load the file up the next morning and watch your DPS in action as if it were happening live. Essentially, each line of the file will be read and then there will be a pause before the output and analysis of the next line according to that next line's timestamp. For example:
[05/17/09 | 20:09:15] You wound the Deep-toad with Battle-shout for 136 points of Light damage.
[05/17/09 | 20:09:16] The Deep-toad wounds you with a weak melee attack for 80 points of Common.
[05/17/09 | 20:09:17] You wound the Deep-toad with Devastating Blow for 368 points of Beleriand damage.
[05/17/09 | 20:09:18] The Deep-toad wounds you with a minor melee attack for 85 points of Common.
[05/17/09 | 20:09:19] You wound the Deep-toad for 284 points of Beleriand damage.
Note the timestamps. In this particular example, each line is one second apart according to the timestamps. This means that if the file were being replayed, it would wait 1 second between each of these lines before displaying and analyzing them - meaning that the app would be doing the calculations just as it would be if you were actually in the fight.
This means that instead of being forced to plod along in test fights under carefully controlled circumstances, you can gather and analyze real field data without causing your performance as a player to suffer.
I am pretty sure that the timestamps in the final product will need to be much more precise than they are right now - it is possible to strike and be struck much more than only once per second.
In-Game User Commands!
When you're in an intense battle and want to change something with the parser, there's no time to alt-tab to the parser window to make that change. This is a problem if you have something like user-specified combat states - the ability to tell the program explicitly when you've entered or exited combat - enabled.
Such a problem is easily solvable by giving the user a button to press or a quick command to type within the game window, but LOTRO is not moddable like WoW is - you can't put a custom window into LOTRO. So how do we give the user a button or command?
The answer lies in chat filters. In LOTRO, you can make any channel visible in any chat tab - for example, you could have the OOC channel visible in the combat tab. Or tells. Or custom chat channels. The magic happens when you have a 'dummy' custom channel visible only to yourself enabled in the combat tab - this will allow you to inject commands into your combat logs to be picked up by the parser.
But typing in a command doesn't help us get a button on our screen, does it? On the contrary - it is possible to bind text commands to 'quickslots' in LOTRO - a quickslot is a small space in which you would usually place skills or items so that you can activate them quickly. By dropping a text command in a quickslot, you've just created a button for the parser!
DPS Readout in Lerch's Streaming App!
A buddy of mine who goes by the in-game name of Lerch is working on a program that will enable its users to broadcast their game screen live on a website. The concept resembles xfire's Live Broadcast feature, but the application will be much more lightweight than xfire.
Lerch asked me if I could make my application capable of sending the DPS readout to his application so that the live stream could also show the player's current DPS. While neither of us are far enough in our respective applications to actually implement this yet, it is a feature that we both look forward to including.
In my next entry I will discuss the basics and some of the challenges therein of how my application works.