Sunday, December 23, 2012

Important Notice

*Update 12/26*

After being in touch with Microsoft, emails to people with Microsoft accounts should no longer be blocked, meaning password reset emails should come through fine now.  I have checked the site against other "spam" databases, and it appears that the site is now in good standing with all the major email providers (after moving nameservers and properly setting up mail on the server).  If you have any issues getting emails from the website, please contact me.  Thanks!


The nameserver move should already be complete.  Everything went smoothly and a lot faster than I anticipated.  The main reason for this nameserver move is to fix issues with mail rejection from a couple bigger email providers.  The mail rejection issue is not yet fixed, but I'm currently working on it.  This process may take a couple weeks.  If you attempt to reset your password and never receive an email with instructions on how to reset it, chances are your email provider is blocking email from the website (Microsoft email being the biggest one).  If you run into this issue, please email me directly at and I will manually provide a reset link for you.

Thanks, and I hope to have this resolved soon.

I will be migrating the nameservers for the website.  This should be a seamless transition.  While I do not anticipate any problems, I just want to make you are aware of this migration just in case something goes wrong and the website becomes inaccessible for a short period of time.

You can expect the migration to be fully complete and propagated in approximately 3 days.

Thank you,

Monday, December 17, 2012

Torparse Application Update

Hey everyone, so I got in another good weekend of coding on the desktop application.  I don't really have much to show this time, because a lot of work was put into optimizing the server code.  I ran into some unforeseen problems once I started connecting more than two clients at a time... so ya, that wasn't good!  But, I have fixed the bugs, optimized the code, and re-worked a lot of the code.  I'm sure it's not perfect yet, but it has come a long way since I started on it this weekend.  The real test of the server code is still yet to come, but it is now handling several connections at once extremely well.

I did get in some work on the desktop application itself.  The layout of the main portion of the program is coming along nicely.  I have nearly finished the following features: Friends List, Private Messaging, and a Notification system.  These features will all play in very nicely to the group feature.

Some quick notes about the Friends and PM feature.  In order to be "friends" with someone, you add that person and then they must confirm it.  After it has been confirmed, if one person deletes the other from their friends list, they will no longer be friends. PM's are limited to friends only.

Check out the screenshots below to see what these features look like. Once again, please remember that this is not a final product and a lot will and can change.

This screenshot will give you a general idea of how the main portion of the application is looking.  You can see the Friends List on the left hand side, and the "Notifications" tab is currently selected.  This tab is where incoming friend requests, and more importantly, incoming group requests will show up.  It is built with a lot of flexibility allowing for other general notifications.

This is a screenshot of the PM feature in action.

So, next I will start work on the foundation of the grouping feature.  I plan on trying to make it as close as possible to an MMO-type group.  By this, I mean that these are my ideas/goals:

  • There will be a group leader
  • The group leader will "invite" people to the group
  • There will be group "assistants." People in the group can be promoted to "assistant" by the group leader and then they can invite people.
  • The group leader can remove people from the group
  • There will be a group chatroom
  • The group leader and group assistants will be able to issue a ready check
  • The group leader and group assistants will be able to set a break timer.
  • Everyone will be able to see who is in the group
  • The group leader and group assistants will have access to start group parsing.
  • The group leader and group assistants will have access to stop group parsing.

These are my ideas so far.  I think it will turn out nicely.  After I get all this in place, I will start work on the actual group parsing meters.  I want to do the basics on these, like damage, heals, etc, but I also want to include a Recount-style (WoW) window.

That's all I got for you this time!  If you are interested in helping me test the group feature, please email me at Thanks!

Wednesday, December 12, 2012

Why Aren't Absorbs Tracked in Stats?

I'm writing this blog today to hopefully help clear up this issue.  This is by far the number one request and concern that I get via e-mail.  I'm sure there are others of you wondering the same thing, but just don't bother e-mailing about it, so I'm going to take a moment to address this issue.  Hopefully after you read this, you will be a little more knowledgeable on the inner-workings of a combat log (if you haven't looked inside one yourself already) and why absorbs are not tracked.

Note: In this post, when I speak of "absorbs," I am referring to spells such as Static Barrier and Force Armor.  This can also be extended to include other absorption spells for Smuggler, Imperial Agent, Tank Tree Talents, Shields (from gear), etc.  Any spell, item, or piece of gear that causes damage to be absorbed.

TL;DR: Absorbs are not tracked on the website because based on the current combat logging system, they are not possible to accurately track.  It may be possible to some extent, but it would be a lot of guess work and the numbers would be extremely inaccurate and unreliable.

The Full Post:

Unfortunately, the absorption stat is not tracked any better than just showing a number on the website because of the way this spell is tracked via the combat logging system.  This is the scenario that occurs:

  1. SorcBob casts "Static Barrier" on TankJoe.
  2. SorcBob's combat log shows that he cast "Static Barrier" on TankJoe.
  3. TankJoe's combat log shows that "Static Barrier" was cast on him by SorcBob.
  4. TankJoe gets hit and takes damage.
  5. TankJoe's combat log shows that he absorbed damage.
  6. TankJoe's combat log shows that he lost the spell "Static Barrier" from SorcBob (if the entire bubble was used).
  7. SorcBob's combat log shows that he removed the spell "Static Barrier" from TankJoe.
So, based on this scenario, you can see that once SorcBob cast his "Static Barrier" spell onto TankJoe, nothing shows up in SorcBob's combat log again until the spell "Static Barrier" is used up or expires from TankJoe.

Now, I'm going to show you what this actually looks like in the combat log.  Below each line of information, I will describe what it means to the best of my ability.

This is what a snippet of SorcBob's combat log looks like from the scenario above:

[16:37:15.940] [@SorcBob] [@SorcBob] [Static Barrier {808201175957504}] [Event {836045448945472}: AbilityActivate {836045448945479}] ()

This line is telling us that SorcBob activated the ability "Static Barrier".  It shows it as it activating on himself, but that's just the way the combat log shows ability activation (for some reason).

[16:37:15.940] [@SorcBob] [@SorcBob] [] [Spend {836045448945473}: Force {836045448938502}] (35)

This line tells us how many resources were used.  It may or may not be in reference to the previous spell cast, but it's a reasonable assumption to make (and usually correct).  In this case, he spent 35 force.

[16:37:15.940] [@SorcBob] [@TankJoe] [Static Barrier {808201175957504}] [ApplyEffect {836045448945477}: Static Barrier {808201175957504}] ()

This line tells us that SorcBob is "applying an effect" of Static Barrier onto TankJoe.  The spell was cast on him, makes sense.

[16:37:15.943] [@SorcBob] [@TankJoe] [Static Barrier {808201175957504}] [ApplyEffect {836045448945477}: Deionized {808201175957777}] ()

This line shows the resulting debuff from Static Barrier being cast onto TankJoe as well.

[16:37:16.366] [@TankJoe] [@SorcBob] [Static Barrier {808201175957504}] [RemoveEffect {836045448945478}: Static Barrier {808201175957504}] ()

This line shows the spell "Static Barrier" being removed.  Take note that the names are also in reverse.

This is what a snippet of TankJoe's combat log looks like from the scenario above:

[22:37:15.059] [@SorcBob] [@TankJoe] [Static Barrier {808201175957504}] [ApplyEffect {836045448945477}: Static Barrier {808201175957504}] ()

This line tells us that SorcBob is "applying an effect" of Static Barrier onto TankJoe.

[22:37:15.061] [@SorcBob] [@TankJoe] [Static Barrier {808201175957504}] [ApplyEffect {836045448945477}: Deionized {808201175957777}] ()

This line shows the resulting debuff from Static Barrier being applied to TankJoe by SorcBob.

[22:37:16.947] [@SorcBob] [@TankJoe] [Static Barrier {808201175957504}] [RemoveEffect {836045448945478}: Static Barrier {808201175957504}] ()

This line shows the spell Static Barrier as being removed from TankJoe by SorcBob.

[22:37:16.947] [Imperial Assassin Droid {2854138912178176}:564009248328] [@TankJoe] [Armed {2853992883290112}] [ApplyEffect {836045448945477}: Damage {836045448945501}] (5141 kinetic {836045448940873} (4338 absorbed {836045448945511})) <5141>

This line shows TankJoe getting hit by Imperial Assassin Droid for 5141 damage, of which 4338 was absorbed.

So, if you've never looked inside your combat log text file before, this can all be a tad overwhelming.  In a nutshell (hopefully enough to explain this post), you are given a few pieces of information per line of the combat log.  You are given the time (but not the server time, the local time of your own computer; side note: this is why I ask for the timezone of your computer and not the server), the "who" did it, to "whom" it was done, what action was done, the effect of that action, any resulting numbers caused by the action, and threat caused by the action.

(Another side note: The long string of digits are language references to the preceding text.  It is a unique ID that links to language files, and then pulls the correct word(s) based on which language your client is running.)

So, as you can see from the above information.  There is nothing that shows in SorcBob's combat log about how much damage was absorbed by TankJoe.  In TankJoe's combat log, it shows how much damage was absorbed, but it doesn't say what the source of the damage absorption was.  In this case, it's pretty obvious, but if TankJoe has any methods of absorbing damage on his own, there is no way to differentiate how the damage was absorbed.

(//end color coding)

So, with that said, this stat theoretically could be listed on the website.  In a solo setting (meaning only SorcBob uploaded his combat log, and no group parse was created), a lot of assumptions would have to be made.  These are some of the assumptions we could make, and also some questions we would have to ask:

  • "Static Barrier" lasts for 30 seconds, so based on the fact that it shows it being removed sooner than 30 seconds, we can assume that the entirety of the absorption effect of that spell was used.
  • If there is a combat log entry showing "Static Barrier" being removed exactly 30 seconds later, then we can assume that not all of the absorption effect of the spell was used.  But, what if SorcBob cast it on a DPS, and he just got hit by an add once, so some absorption was used, but not all of it?
  • What if I cast the spell on someone again at the 20 second mark after the debuff wears off? It shows the effect being removed before it is applied again if the spell still exists on the target, but did it absorb anything?
  • What level is the player? I can get a general ballpark based on the spells used, and sometimes exact if the right spells are logged.  We can also assume that most people that upload combat logs are level 50.
  • What does the player's gear look like? How much healing power does the player have? How much damage should the player's Static Barrier absorb based on gear?

So, as you can see, that's a lot of what if's and assumptions that need to be made.  So, at best, the stat could be tracked with the following assumptions made:

  • The player is level 50.
  • If the "Remove Effect" spell shows up at exactly the 30 second mark, that means no damage was absorbed.
  • The player is not wearing any healing power gear (or maybe an average player gear level is assumed).
  • If the "Remove Effect" shows up before the 30 second mark, that means the entirety of the damage absorption was used.

Making these assumptions, we could ballpark the stat, but it would be extremely inaccurate.

In a group setting, some of these questions could be answered for us.  With the proper coding, player spells could be tracked back and forth from player to player.  Assumptions may not have to be made about a lot of things.  In the case above, we can assume SorcBob's "Static Barrier" spell absorbs 4338 damage before it is removed, which makes all the other questions a moot point.  It would still be an inaccurate stat, because if TankJoe had another absorption spell on him (like a tank talent), and both were up at the same time he was hit, how would we determine which spell gets how much of the absorption amount.  But wait, what if TankJoe's shield works and he absorbs some damage that way?

So, I think you get the point.  It would require a lot of coding and in most cases a lot of guess work.  At some point in the future, I hope to be able to at least provide a ballpark estimation on this figure, but it is not something you will see tracked on the site any time soon.  I think most have seen me say this before, but I'm a one man team.  This is not my real life job, it is simply a hobby that I enjoy doing.  So, if I want to get anything accomplished on the site, I must prioritize everything and limit my scope to as few projects as I can at any given time.  This project would be an extreme undertaking because of other systems that would need to be coded first to derive this stat, and would ultimately end up as a stat that is extremely inaccurate.

I hope this helps clear up the issue and helps you understand why the stat is not tracked.  Please feel free to email me (or post below) if you have any concerns, questions or comments.  And please, if you know something I don't, I'm always open to criticism.

Or, maybe, ask BioWare to improve their combat logging system.  That would fix a lot of problems. :)

Monday, December 10, 2012

Torparse Application Update

Hey everyone.  It was a good week/weekend... made a lot of great progress on the application.  I've got a lot more work to do, but I wanted to show you how everything is coming along, so I've taken a few screenshots.

Before reading any further, please remember that none of these screenshots are the final product.  Everything is still very much a work in progress and a lot will probably change.  Enjoy!

Ok, so first up, the best screenie I've got for you is the parser actually working in-game, with a custom skin I designed to make it blend with the game :)  (P.S. Don't judge me for my keybindings, I use a Nostromo lol).

This is the new login screen:

This is a screenshot of the program initializing (if you checked "Remember Me" it skips the login screen):

This is a screenshot of the main portion of the program.  Please note, the visual components of this frame are not yet programmed, but it will give you an idea of the skin of the program and also the Options menu in the upper right:

The next screenshots are all from the in-game overlay settings page.  You get to this part by clicking the wrench icon in the upper right.  These will be the settings available for every overlay component (they are also resizeable).  I hope to add scaling in, but I'm trying to overcome a bug with that right now, so I have taken it out for the time being:

So, there you have it.  A bunch of screenshots to look at.  I'll keep you guys updated.  All the best. -James

Sunday, December 2, 2012

Desktop Application Update

Hey everyone, it's been a couple weeks since I talked about starting work on a desktop application for SWTOR.  Just wanted to give you a bit of an update of where I'm at in the process and how things are going.

I've almost got all of the foundation for the server coding done.  It is going very well.  The server is multi-threaded (meaning each connected client is processed separately of other clients... faster!) and extremely lightweight.  I think it will stand up well under heavy load... but I guess we'll find out eventually =X

The desktop application part is coming along nicely as well.  I'm currently working on the foundation of the application.  I want to make sure there is good base code in place off of which I can build.  Currently, the desktop app can login to the server, validate user information, encrypt data transfer and communicate with other connected clients (for group parsing and maybe PMs/friends list).

Here's a screenshot of the login screen.  Please remember this is very early development and a lot is likely to change, I just want to keep everyone updated with how it's going.

So, next up on the list is to start work on the actual parser portion of the application.  I'm also going to work on creating some nice skins for the overlay components that blend well with SWTOR so the windows don't seem too out of place.  First up will be solo/companion parsing.

Thanks for reading, I'll try to post updates on the progress every couple weeks.  And thank you for the emails with suggestions/comments for the application.  Please feel free to contact me anytime.