 |
|
07-04-2007, 09:21 AM
|
|
|
PARSEFAL Developer
Character: Skurry
Guild: Immortal
Server: Innovation
Posts: 28
|
Re: New Encounter Parser
Quote:
Originally Posted by BrightMorn
Might want to add in being able to bypass the update... since if the website is down it stalls out and doesn't load.
|
Thanks for the heads up. I have to talk to my crappy hoster about that. :/
To disable the auto update, edit "parsefal.bat" and add the parameter " -noupdate" to the end of the first line. It should skip looking for updates then.
|
|
|
07-09-2007, 02:22 PM
|
|
|
I AFK better than you.
Character: Agaxim
Guild: Ascendant
Server: Unrest
Posts: 623
|
Re: New Encounter Parser
Nice Clean Interface -
Some Feedback - On an Unrest parse, it said in the Zone Summary that X person did 650.9 DPS. However, when you click on that person, their DPS is 248.4. Was it including rest time between fights? That person definitely did closer to the 650 number based on the parses.
- Warlock's Magi Shielding Ward gets messed up in the parse. Shows up in the character list as "YOUR Magi" with "Shielding" in the Heals section.
- Unknown combatants in the English version, still show "Unbekannt" on the left.
- Resists don't seem to show up in the parse. I went into Unrest at level 67 (so the entire zone was orange) - and it showed every ability as landing 100%. I know I got resisted a whole bunch of times, especially on the level 74 mobs. Melee misses seem to show up properly.
- Some skills show up normally - like War Pyre - and they show up again below in parentheses like (War Pyre) - are those the resists? Its kind of confusing. I see Scourge of Shadows with parentheses though, and that lands on any mob (that spell can't be resisted), so I wasn't thinking that was it.
- When I click on the zone parse, I should be able to click any person or mob on the right and see its zonewide parse rather than having to scroll down the entire list of mobs including the players
But thats just laziness on my parse.
Anyways, good job!
agressiv
|
|
|
07-09-2007, 03:26 PM
|
|
|
PARSEFAL Developer
Character: Skurry
Guild: Immortal
Server: Innovation
Posts: 28
|
Re: New Encounter Parser
Hi agresiv,
thank you for your excellent feedback.
1. Yes, the DPS number on the zone summary detail does include rest time, the one in the summary does not. It would be kind of difficult to change that for internal technical reasons. :/
2. Fixed that one, stupid mistake on my part.
3. Oops. Will be fixed in a future version.
4. Fixed that one too (also own autoattack didn't show up at all? *cough cough*)
5. Parentheses mark actions that do not match that persons alignment (e.g. when you hit someone in your group while being charmed, or a summoner sacrificing his pet). Sometimes, early charms mess up friend-or-foe detection.  Actions in parentheses are not added to your DPS. If this particular spell is always in parentheses, can you post an example line from the log?
6. I thought about something like this, too. Maybe a double click "drill down"?
|
|
|
07-09-2007, 03:40 PM
|
|
|
I AFK better than you.
Character: Agaxim
Guild: Ascendant
Server: Unrest
Posts: 623
|
Re: New Encounter Parser
Seeing more "Unknowns" now, but still a few [Unbekannt]'s scattered
Quote:
Originally Posted by Skurry
4. Fixed that one too (also own autoattack didn't show up at all? *cough cough*)
|
Auto-attack shows misses properly - but resists are showing up as well since the update, so I can't tell if they were broken before
Quote:
Originally Posted by Skurry
5. Parentheses mark actions that do not match that persons alignment (e.g. when you hit someone in your group while being charmed, or a summoner sacrificing his pet). Sometimes, early charms mess up friend-or-foe detection.  Actions in parentheses are not added to your DPS. If this particular spell is always in parentheses, can you post an example line from the log?
|
Well, only one mob charms in Unrest (The Priest of Fear) but there were a LOT of skills with parentheses. The tank wasn't charmed very long, not long enough to show all of those.
I'm pretty sure those are from the trip into the basement where you fight the level 74 heroic versions of 3 or so random people from the group. They aren't "charmed" but they are actually just mobs you have to fight that happen to look like and have the same names as people in the group.
I didn't see any of those in Mistmoore Catacombs, so I'm sure its those 3 mobs causing the parentheses.
agressiv
|
|
|
07-09-2007, 05:18 PM
|
|
|
ACT Developer
Character: Aditu
Guild: Cataclysm
Server: Permafrost
Posts: 448
|
Re: New Encounter Parser
Quote:
Originally Posted by Skurry
1. Yes, the DPS number on the zone summary detail does include rest time, the one in the summary does not. It would be kind of difficult to change that for internal technical reasons. :/
|
Tell me about it. If this is what I think it is... it was one of the more headache inducing things in ACT to fix. Even now, every time I look at the code, I get lost. And I coded it.  Not to mention it actually takes a lot of CPU time to calculate correctly.
|
|
|
07-09-2007, 05:41 PM
|
|
|
Fucking SICK of spell resists
Character: Aleraku, Alaedraa
Server: Blackburrow
Posts: 8,833
|
Re: New Encounter Parser
Quote:
Originally Posted by EQAditu
I'm not really sure what the split is, but a good portion of my CPU time in parsing is not regex matching, but sorting the data into memory. That's literally the only difference between the 8min and 4min ACT benchmarks. The number of regexes used is the same. Though I will be able to get rid of an entire regex with GU36 removing Infective Bites from the game. I'm uncertain what impact that will have.
|
1) How many regex's do you use?
2) Do you check against the most-often-used raid battle patterns first?
3) What .NET class are you using to index the combatants and abilities?
__________________
Blackburrow.Aleraku - 80/140 Wizard
Blackburrow.Alaedraa - 80/140 Illusionist
Blackburrow.Calandra - 75/97 Paladin
Blackburrow.Cavatina - 80/137 Troubador
Blackburrow.Selanna - 80/140 Warden
Don't vote for Obama.
|
|
|
07-09-2007, 06:14 PM
|
|
|
PARSEFAL Developer
Character: Skurry
Guild: Immortal
Server: Innovation
Posts: 28
|
Re: New Encounter Parser
Quote:
Originally Posted by agressiv
I'm pretty sure those are from the trip into the basement where you fight the level 74 heroic versions of 3 or so random people from the group. They aren't "charmed" but they are actually just mobs you have to fight that happen to look like and have the same names as people in the group.
|
Ah, the evil alter egos in the basement... I think they are pretty much unparsable if they aren't distinguished from players in the log.  The same goes for the "defiled souls" in Freethinker's Hideout, which show up in the log exactly like a player's combat art. Unless you hard-code them as exceptions (which is something programmers hate to do...). I like ACTs plugin concept for that. 
|
|
|
07-10-2007, 04:35 AM
|
|
|
ACT Developer
Character: Aditu
Guild: Cataclysm
Server: Permafrost
Posts: 448
|
Re: New Encounter Parser
Quote:
Originally Posted by Illuminator
1) How many regex's do you use?
2) Do you check against the most-often-used raid battle patterns first?
3) What .NET class are you using to index the combatants and abilities?
|
- Each of the three localizations oddly enough uses a uniform 10 regexes, plus one for time detection of random log lines, plus two optional(non-default) ones. For the most part, you can call it 11 total used on each line.
- In the beginning, it was that way. Though as the English logs changed minutely, I would tack things on at the end. About 40% of a log file is uninteresting for ACT anyhow, thus runs through all 11 regexes. About 75% of the rest is picked up by pattern #2, so it's not really that inefficient. There is a matching issue that makes it unable for pattern #2 to be ahead of pattern #1.
- I'm not really sure what you mean by index... but the data classes used by ACT are all custom. Each class holds a few strings, occasionally some cached data as int(Int32)/float(Single). Then a List<> array of the child data objects. The nesting order being ZoneData-> EncounterData-> CombatantData-> DamageTypeData-> AttackType-> MasterSwing. The MasterSwing object is the only object that doesn't derive its data from child objects. It holds all of the information it knows about personally. Parent objects simply total up the child objects to create their own temporary data to report.
|
|
|
07-10-2007, 12:05 PM
|
|
|
Fucking SICK of spell resists
Character: Aleraku, Alaedraa
Server: Blackburrow
Posts: 8,833
|
Re: New Encounter Parser
Quote:
Originally Posted by EQAditu
- I'm not really sure what you mean by index... but the data classes used by ACT are all custom. Each class holds a few strings, occasionally some cached data as int(Int32)/float(Single). Then a List<> array of the child data objects. The nesting order being ZoneData-> EncounterData-> CombatantData-> DamageTypeData-> AttackType-> MasterSwing. The MasterSwing object is the only object that doesn't derive its data from child objects. It holds all of the information it knows about personally. Parent objects simply total up the child objects to create their own temporary data to report.
|
The List<> is what I was getting at. You said most of the ACT processing time was spent sorting the parsed data and I was wondering if you were doing linear array searches to look up the destination; have you considered using SortedDictionary<> instead of List<>?
__________________
Blackburrow.Aleraku - 80/140 Wizard
Blackburrow.Alaedraa - 80/140 Illusionist
Blackburrow.Calandra - 75/97 Paladin
Blackburrow.Cavatina - 80/137 Troubador
Blackburrow.Selanna - 80/140 Warden
Don't vote for Obama.
|
|
|
07-10-2007, 06:08 PM
|
|
|
ACT Developer
Character: Aditu
Guild: Cataclysm
Server: Permafrost
Posts: 448
|
Re: New Encounter Parser
Quote:
Originally Posted by Illuminator
The List<> is what I was getting at. You said most of the ACT processing time was spent sorting the parsed data and I was wondering if you were doing linear array searches to look up the destination; have you considered using SortedDictionary<> instead of List<>?
|
Hmm, I think I used a bad term to throw you off. Or maybe I'm missing your point all together. When I said sorting the data... I meant putting the data into the correct data objects... not into a correct place in a List<>. I rarely search through large arrays for anything interesting.
Say you have an EncounterData object, it holds a List ... which only has like ~30 elements. One child CombatantData object only has a List with 10 elements. Then you have maybe 0-50 AttackType objects per... Inside each AttackType object are the only arrays with a large number of elements... up to thousands.
But even in that large pool of elements, I never actually search for anything specific that sorting will help... if I add to it, I just add to the end. If the UI needs to display the data, then it .Sort()'s the array and shows the element range that is visible. If I need to calculate total damage or something, I need to look at 100% of the elements anyhow.
Were you by chance thinking that I had extremely large arrays that held all the data objects of that type? I tried that once to reduce memory usage and it took tremendous amounts of CPU time to calculate the simplest thing.
Anyhow, I don't mind admitting that I am a so-called programmer with holes in my knowledge. I read one primer book (v1.0), took no classes, and just jumped into programming ACT, more or less. Everything I know about .NET is in ACT. So admitting that, I don't actually know what a SortedDictionary<> is exactly. But as I said, I never search through large arrays for anything... I only iterate one element at a time to make totals.
|
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
|
|